vmware14中安裝centos7並使用docker發佈spring-boot項目

 

 

 

 

1.vmare中centos7安裝(同一路由器無線網絡下)html

1.1選擇橋接模式java

1.2修改配置文件mysql

vi /etc/sysconfig/network-scripts/ifcfg-ens33(這裏不必定是ifcfg-ens33)git

按下i鍵,進入編輯模式,進行以下編輯github

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static  #設置爲靜態IP,不自動分配
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=6f97fb2f-29cd-4fb9-8d8d-c5e389736a1a
DEVICE=ens33
ONBOOT=yes  #設爲開機啓動
IPADDR=192.168.0.111  #配置固定IP NETMASK=255.255.255.0  #配置子網掩碼 GATEWAY=192.168.0.1  #該配置與宿主機網關一致 PREFIX0=24  #改配置須要添加 DNS1=8.8.8.8  #DNS配置,這裏採用了google的

1.3設置網絡管理相關:web

將NetworkManager 服務設置開機不啓動spring

chkconfig NetworkManager off

將NetwokManager服務關閉sql

service NetworkManager stop

從新啓動一下network服務docker

service network restart

1.4將該固定IP設置進DNS中apache

vi /etc/resolv.conf

nameserver 8.8.8.8
search localdomain
sudo service network restart

測試:

ping www.baidu.com

看是否可以聯通

1.5若是是win7的電腦, 須要

vmnet0,實際上就是一個虛擬的網橋

vmnet0,實際上就是一個虛擬的網橋,這個網橋有很若干個端口,一個端口用於鏈接你的Host,一個端口用於鏈接你的虛擬機,他們的位置是對等的,誰也不是誰的網關。因此在Bridged模式下,你可讓虛擬機成爲一臺和你的Host相同地位的機器。
vmnet1,這是一個Host-Only網絡模式

vmnet1,這是一個Host-Only網絡模式,這是用於創建一個與世隔絕的網絡環境所用到的,其中vmnet1也是一個虛擬的交換機,交換機的一個 端口鏈接到你的Host上,另一個端口鏈接到虛擬的DHCP服務器上(其實是vmware的一個組件),另外剩下的端口就是連虛擬機了。虛擬網卡 「VMWare Virtual Ethernet Adapter for VMnet1」做爲虛擬機的網關接口,爲虛擬機提供服務。在虛擬機啓動以後,若是你用ipconfig命令,你會很清楚的看到,你的默認網關就是指向 「VMWare Virtual Ethernet Adapter for VMnet1」網卡的地址的。(實際上它並不能提供路由,這是VMware設計使然,它是幹了除了提供路由以外的一些事情——其實是我也不知道它幹了什 麼事情),這裏沒有提供路由主要表如今沒有提供NAT服務,使得虛擬機不能夠訪問Host-Only模式所指定的網段以外的地址。
vmnet8,這是一個NAT方式,最簡單的組網方式了

vmnet8,這是一個NAT方式,最簡單的組網方式了,從主機的「VMWare Virtual Ethernet Adapter for VMnet8」虛擬網卡出來,鏈接到vmnet8虛擬交換機,虛擬交換機的另外的口鏈接到虛擬的NAT服務器(這也是一個Vmware組件),還有一個口 鏈接到虛擬DHCP服務器,其餘的口連虛擬機,虛擬機的網關便是「VMWare Virtual Ethernet Adapter for VMnet8」網卡所在的機器,廢話,這確定就是你的Host機器啦。一樣,用ipconfig也能夠看出來,你的虛擬機的默認網關也指向了你的 「VMWare Virtual Ethernet Adapter for VMnet8」虛擬網卡地址。相比之下,能夠看出來,NAT組網方式和Host-Only方式,區別就在因而否多了一個NAT服務。

 

host-only與wmnet1虛擬網卡進行通訊
NAT模式與VMnet8虛擬網卡進行通訊
橋接使用的是你機器的真實網卡進行上網

 

 

 

2.安裝docker  

yum install docker

 

查看docker版本

docker -v

 

啓動docker

systemctl start docker

 

查看docker鏡像

docker images

 

搜索鏡像

docker search mysql

 

下載鏡像

docker pull mysql(下載最新版)

docker pull mysql:5.5(下載5.5)

 

 

安裝並啓動mysql(mysql之正式版--設置了本地端口和docker端口的映射關係)

docker run --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql[:版本號] --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

 

安裝並啓動mysql(mysql之非正式版)

docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql[:版本號] --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

 

查看運行中的docker容器

docker ps

 

中止某容器

docker stop mysql01(能夠是container id,也能夠是names)

 

查看全部鏡像

docker ps -a

 

刪除當前鏡像(根據container id)

docker rm 228b46dcbb6a

 

強制刪除當前鏡像(根據container id)

docker rm -f 228b46dcbb6a

 進入容器bash並進入mysql命令行:

docker exec -it mysql bash
mysql -uroot -p
輸入密碼便可
3.centos7安裝各組件
3.1安裝iptables
  systemctl stop firewalld.service
  systemctl disable firewalld.service
  systemctl mask firewalld.service
  yum install iptables-services -y
  systemctl enable iptables
  systemctl start iptables
  systemctl status iptables
  systemctl restart iptables.service
  systemctl enable iptables.service
3.2安裝ifconfig
  yum provides ifconfig
  yum whatprovides ifconfig
3.3安裝bridge
yum install bridge-utils
3.4解決iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3308 -j DNAT --to-destination 172.17.0.3:3308 ! -i docker0: iptables: No chain/target/match by that name問題
pkill docker 
iptables -t nat -F 
ifconfig docker0 down 
brctl delbr docker0 
docker -d 
service docker restart

解決Navicat for MySQL 鏈接 Mysql 8.0.11 出現1251- Client does not support authentication protocol 錯誤(還在解決中....................)

 4.demo演示

4.1pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zy</groupId>
    <artifactId>spring-boot-rest-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-boot-rest-demo</name>
    <description>spring-boot-rest-demo</description>
    <!-- 繼承springboot提供的父工程; -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.14.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <!--指定遠程docker的位置;開啓遠程docker的2375  -->
        <dockerHost>http://192.168.0.199:2375</dockerHost>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- spring-boot-starter-xxx:場景啓動器
                        spring-boot-starter-web:使用SpringBoot的web開發場景;
                            導入了web開發須要的全部依賴;
                 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
        </dependency>

        <!--引入swagger -->
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- docker maven打包插件;能夠將應用作成docker鏡像 -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.12</version>
                <configuration>
                    <!-- 注意imageName必定要是符合正則[a-z0-9-_.]的,不然構建不會成功 -->
                    <!-- 詳見:https://github.com/spotify/docker-maven-plugin    Invalid repository name ... only [a-z0-9-_.] are allowed-->
                    <imageName>spring-boot-rest-demo</imageName>
                    <baseImage>java</baseImage>
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

4.2啓動類

package com.zy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@SpringBootApplication
@EnableSwagger2
// 引入對Swagger的支持,須要在pom文件中添加其依賴,測試方式    http://localhost:8090/swagger-ui.html
public class SpringBootRestDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootRestDemoApplication.class, args);
    }
}

4.3application.yml

server:
  port: 8090
spring:
  datasource:
    url: jdbc:mysql://192.168.0.199:3306/springboot_rest?useSSL=false
    username: root
    password: 123456

4.4controller層

package com.zy.controller;

import com.zy.mapper.UserMapper;
import com.zy.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @GetMapping(value = "/user/{id}")
    @ResponseBody
    public User getUser(@PathVariable("id") Integer id){
        return userMapper.getUserById(id);
    }
}

4.5mapper層

package com.zy.mapper;

import com.zy.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserMapper {

    @Select("select * from tb_user where id = #{id}")
    User getUserById(Integer id);
}

4.6model層

package com.zy.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private Integer id;

    private String lastName;

    private String email;

}

4.7部署到docker前:

4.7.1pom文件中配置docker maven plugin並在properties中聲明dockerHost
    <dockerHost>http://192.168.0.110:2375</dockerHost>
4.7.2安裝docker的Linux機器上,開啓docker遠程API操做端口2375:
vi /usr/lib/systemd/system/docker.service
將ExecStart這一行後面加上 -H tcp://0.0.0.0:2375 -H   unix:///var/run/docker.sock
4.7.3重啓docker服務

systemctl restart docker

 

4.7.4開放2375端口,並重啓iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2375 -j ACCEPT

重啓服務

  systemctl restart iptables.service
  systemctl enable iptables.service

4.7.5便可打包應用爲docker鏡像發佈在遠程服務器

mvn  clean package docker:build

4.7.5查看是否打包上去

docker images

4.7.6遠程服務器能夠根據鏡像快速啓動docker容器

相關文章
相關標籤/搜索