> For the complete documentation index, see [llms.txt](https://docs.niewx.cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.niewx.cn/20200601tke-cao-zuo-bi-ji-01.md).

# TKE操作笔记01

本文主要介绍了如何入门腾讯云上的TKE(Tencent Kubernetes Engine)服务。

## TKE简介

腾讯云容器服务（Tencent Kubernetes Engine，TKE）是高度可扩展的高性能容器管理服务，您可以在托管的云服务器实例集群上轻松运行应用程序。使用该服务，您将无需安装、运维、扩展您的集群管理基础设施，只需进行简单的 API 调用，便可启动和停止 Docker 应用程序，查询集群的完整状态，以及使用各种云服务。您可以根据资源需求和可用性要求在集群中安排容器的置放，满足业务或应用程序的特定要求。\
腾讯云容器服务基于原生 Kubernetes 提供以容器为核心的解决方案，解决用户开发、测试及运维过程的环境问题、帮助用户降低成本，提高效率。腾讯云容器服务完全兼容原生 Kubernetes API，并扩展了腾讯云的云硬盘、负载均衡等 Kubernetes 插件，同时以腾讯云私有网络为基础，实现了高可靠、高性能的网络方案。

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F082aa17b3d4f684ece8ab63c92533744ae4b26c8.png?generation=1606373439257759\&alt=media)

## 创建镜像仓库并授权连接github和gitlab

**镜像仓库概述**

镜像仓库用于存放 Docker 镜像，Docker 镜像用于部署容器服务，每个镜像有特定的唯一标识（镜像的 Registry 地址+镜像名称+镜像 Tag）。

**镜像类型**

目前镜像支持 Docker Hub 官方镜像和用户私有镜像(自己生成的业务镜像和一些订制的镜像)。

**授权步骤**

将腾讯云docker镜像仓库和Github授权连接，分为以下四步：

1.开通镜像仓库

2.新建命名空间

3.新建镜像仓库

4.源代码授权

### 腾讯云上开通镜像仓库

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F1f9e3d0ed1b48f9398566d8988f3074007fcfa2a.png?generation=1606373439723521\&alt=media)

### 创建命名空间

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F502ce394f4ce9e10f442b3a92153424dded68c8c.png?generation=1606373440226329\&alt=media)

在容器服务中，点击镜像仓库会展开下拉框，点击我的镜像，首次使用镜像仓库的用户，需要先开通镜像仓库，输入用户名和密码。

* 用户名：默认是当前用户的账号，是您登录到腾讯云docker镜像仓库的身份。
* 密码：是您登录到腾讯云docker镜像仓库的凭证。

### 新建镜像仓库

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F7427201412e7a997608df9ba20605f675211c70e.png?generation=1606373439915409\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F25fb8839279cf71da92d6bf39fadf6484711840b.png?generation=1606373439443835\&alt=media)

点击我的镜像，点击我的镜像，点击新建，新建镜像仓库，输入名称，类型选择私有，命名空间选择之前新建的liangfeng，描述可自定义填写该仓库的用途。

* 类型：分为公有和私有，即公有镜像仓库和私有镜像仓库。如果你想将自己仓库下的镜像暴露在公网，且其他人都能够访问，则选择公有；如果只用于个人用户访问，则选择私有。

### 登录仓库上传下载镜像

现在我们举例将busybox的最新镜像上传到仓库并在另外的机器上下载镜像

```
登录仓库
[root@master]# docker login ccr.ccs.tencentyun.com/nwx_registry/busybox -u 100011007491 -p ********

WARNING! Using --password via the CLI is insecure. Use --password-stdin.

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

tag镜像
[root@master]# docker tag busybox:latest ccr.ccs.tencentyun.com/nwx_registry/busybox:latest

push镜像
[root@master]# docker push ccr.ccs.tencentyun.com/nwx_registry/busybox:latest

The push refers to repository [ccr.ccs.tencentyun.com/nwx_registry/busybox]

eac247cb7af5: Pushed

latest: digest: sha256:24fd20af232ca4ab5efbf1aeae7510252e2b60b15e9a78947467340607cd2ea2 size: 527

下载镜像
登录镜像仓库

[root@master]# docker login ccr.ccs.tencentyun.com/nwx_registry/busybox -u 100011007491 -p ********

WARNING! Using --password via the CLI is insecure. Use --password-stdin.

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

下载镜像

[root@master ~]# docker pull ccr.ccs.tencentyun.com/nwx_registry/busybox:latest

latest: Pulling from nwx_registry/busybox

Digest: sha256:24fd20af232ca4ab5efbf1aeae7510252e2b60b15e9a78947467340607cd2ea2

Status: Downloaded newer image for ccr.ccs.tencentyun.com/nwx_registry/busybox:latest
```

### 源代码授权

#### github上源代码授权

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F24496e37ec6348a9ee558b6c2168e960920e21f9.png?generation=1606373443058254\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F23de112cedc43e4008d096bb62ef2de4a18bc9a3.png?generation=1606373439366022\&alt=media)

github上源代码授权只需要确认授权，并输入github账户密码登录即可

#### gitlab上源代码授权

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Fcc36265e93792bb2395b6b5bfb4722c0a0be11c7.png?generation=1606373441894712\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F4d079eb6612e719f165a2124dc058040543e2268.png?generation=1606373439633438\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F24ab215549816c99b57927cf152d44ef081bad57.png?generation=1606373440494873\&alt=media)

在我的镜像，点击源代码授权，点击立即授权同步 Gitlab代码源。

* 服务地址：Gitlab HTTP或HTTPS地址
* 用户名：登录Gitlab 的用户名。
* 私有Token：连接Gitlab 的Personal Access Token。

至此源授代码完成。

**备注**：如何新建Gitlab Personal Access Token。

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Fa8252ea0f94dabe6bbf6650199643604ab7685b6.png?generation=1606373440235608\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Fd015d8d5c9e5728c07e61b1ee55146812b8bb416.png?generation=1606373439998583\&alt=media)

点击右上角个人资料，点击Setting，点击Access Tokens，输入Token Name和过期时间，勾选api和read\_user或其他权限，点击Create Personal Access Token。之后可以看到生成的Personal Access Token。

## 制作nginx和php基础镜像

### 容器云平台Docker镜像

1.Docker基础镜像：提供基础应用型的Docker软件服务（例如：nginx，php，jdk等），所以dockerhub镜像，公有镜像，自定义私有镜像都可以理解为基础镜像。

2.Docker业务镜像：将Gitlab上的源代码，或通过maven打出来的jar或tar包，添加至基础镜像中，通过构建打包成的Docker业务镜像。

### 通过commit的方式制作镜像

镜像制作步骤如下

1.安装docker软件（yum install docker或apt-get install docker）

2.下载docker centos镜像(docker pull)

3.创建并进入容器（docker run）

4.nginx docker基础镜像制作

5.将容器提交docker基础镜像（docker commit）

6.php docker基础镜像制作

### docker镜像制作

#### 安装docker

```
#  cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
# yum install docker -y                //安装docker软件
# systemctl start dockerd            //启动docker服务
# systemctl status docker        //查看docker状态，返回active (running)说明成功。
```

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F671b5553d61570af3c3066ca5b9a0bb43619076d.png?generation=1606373440835793\&alt=media)

#### 下载docker镜像

```
[root@VM_0_13_centos ~]# docker pull centos:7.5.1804

7.5.1804: Pulling from library/centos

5ad559c5ae16: Pull complete

Digest: sha256:7a45e4a1efbaafc1d9aa89925b6fdb33288a96d35ea0581412316e2f0ad3720a

Status: Downloaded newer image for centos:7.5.1804

docker.io/library/centos:7.5.1804

[root@VM_0_13_centos ~]# docker images| grep centos

centos                          7.5.1804            cf49811e3cdb        14 months ago       200MB

REPOSITORY是仓库名，TAG 是标签，IMAGE ID是镜像ID，CREATED是镜像创建到至今的时间，SIZE是镜像大小
```

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Fb950ebda2d8a85cbfa2fb008e4615b47f12d44f4.png?generation=1606373440085888\&alt=media)

#### 启动容器并进入容器

```
[root@VM_0_13_centos ~]# docker run -it centos:7.5.1804 /bin/bash
```

#### 制作nginx镜像

```
[root@34c805aa9433 /]# yum install epel-release -y
[root@34c805aa9433 /]# yum install nginx net-tools -y
[root@34c805aa9433 /]# vi  /etc/nginx/nginx.conf  //修改nginx配置文件，日志路径可跟进自身需求设置
```

1.将user nginx;修改成user root; (容器中nginx 要以root用户运行)

2.添加daemon off; （nginx和php等应用型软件安装在容器里面，必须要已守护进程的方式运行）

3.设置worker\_processes参数为auto

4.设置access\_log对应的路径为/data/logs/nginx/access.log

配置文件如下

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F0dc1cb870195744602494def583c3bfaa4b729f3.png?generation=1606373440416843\&alt=media)

\[root\@34c805aa9433 nginx]# cat /etc/nginx/conf.d/localhost.conf //日志路径可跟进自身需求设置

添加localhost.conf配置文件

1.设置为nginx 80端口启动

2.server\_name为wordpress.tencent.com localhost; （wordpress.tencent.com是wordpress的访问域名，根据业务需求设置）

3.error\_log对应路径为/data/logs/nginx/wordpress.tencent.com\_error.log

4.wordpress网站根目录是/data/www/wordpress（这个目录暂时不创建，之后会讲解制作Docker业务镜像将源码添加至/data/www/wordpress目录）

5.设置fastcgi\_pass unix:/dev/shm/php-fpm.sock; （以nginx和php-fpm 使用uninx socket通信）

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Ff8faaa44b41a75db15d28d732cac521464075ef0.png?generation=1606373442114629\&alt=media)

\[root\@34c805aa9433 nginx]# mkdir /data/logs/nginx -p //创建日志目录

#### 将容器提交为镜像

查看容器id,可以新开窗口或者执行ctrl+p+q（该命令退出容器但是不会关闭容器）

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F07f8efe55cde473e443012e04445314a766143dc.png?generation=1606373441638838\&alt=media)

CONTAINER ID是容器ID，IMAGE是使用的镜像，COMMAND是容器启动运行的命令，CREATED是容器创建到运行至今时间，STATUS是容器当前的状态，PORTS是容器运行的端口，NAMES是容器的名称。

```
[root@VM_0_13_centos ~]# docker commit 34c805aa9433 my-nginx:v1  

sha256:e2710bd032cb580b224a1cb794ac6bde04685adeaccdc6b064ce4a5b7c8a09a4

[root@VM_0_13_centos ~]# docker images | grep my-nginx
```

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Ff6d33e451adfc62f717eec07e7674af5d8bf060f.png?generation=1606373441666449\&alt=media)

### php镜像的制作

```
1.首先利用docker run启动一个centos容器 （参考步骤3.3.3）

[root@VM_0_13_centos ~]# docker run -it centos:7.5.1804 /bin/bash

2.在容器中进行php的安装和配置

[root@44a713255c35 /]# yum install epel-release -y

[root@44a713255c35 /]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

[root@44a713255c35 /]# yum install php70w php70w-fpm php70w-cli php70w-common php70w-devel php70w-gd php70w-pdo php70w-mysql php70w-mbstring php70w-bcmath php70w-xml php70w-pecl-redis php70w-process php70w-intl php70w-xmlrpc php70w-soap php70w-ldap php70w-opcache -y     //安装php-fpm及扩展

# vi /etc/php-fpm.conf

error_log = /data/logs/php/error.log       //替换路径

daemonize = no     //设置php-fpm已守护进行方式运行
```

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Fbc7c443a9d1a3552ee9804841496d6c02b64989c.png?generation=1606373443281894\&alt=media)

```
# vi /etc/php-fpm.d/www.conf                             //日志路径可跟进自身需求设置

user = root                          //将user = apache修改成user = root

group = root                       //将group = apache修改成group = root

listen = /dev/shm/php-fpm.sock                 //将listen = 127.0.0.1:9000 修改成 listen = /dev/shm/php-fpm.sock

listen.owner = root                                     //将listen.owner = user修改成listen.owner = root

listen.group = user                                     //将listen.group = user修改成listen.group = root

slowlog = /data/logs/php/www-slow.log                  //设置slow日志路径为/data/logs/php

php_admin_value[error_log] = /data/logs/php/www-error.log   //设置error日志路径为/data/logs/php
```

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F27afecf60c86e4db4c1b67c91dcdd2f0eb948290.png?generation=1606373443639444\&alt=media)

```
# mkdir /data/logs/php -p           //创建php日志目录

3.最后通过commit命令提交成本地镜像，请参考上面第3.3.5步（将容器提交成docker基础镜像）

[root@VM_0_13_centos ~]# docker commit 44a713255c35 my-php:v1

sha256:42b5502112cc5870c76e932e8a986363c2256ef5b92fa0f3ab60ff9865c24385

[root@VM_0_13_centos ~]# docker images | grep my-php

my-php                          v1                  42b5502112cc        17 seconds ago      507MB
```

## 上传制作的镜像到腾讯云仓库

### 创建镜像仓库

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F622b33df1d3cba20e6007d3d626494045d610dff.png?generation=1606373442105884\&alt=media)

### 查看指定上传镜像

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F17ba0421e66ee8577aeb5e2f79ed7f9f94793707.png?generation=1606373441732727\&alt=media)

### 上传镜像

```
[root@VM_0_13_centos ~]# sudo docker login --username=100011007491 ccr.ccs.tencentyun.com

Password:

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

[root@VM_0_13_centos ~]# docker tag my-nginx:v1 ccr.ccs.tencentyun.com/nwx_registry/my-nginx:v1

[root@VM_0_13_centos ~]# docker push ccr.ccs.tencentyun.com/nwx_registry/my-nginx:v1

The push refers to repository [ccr.ccs.tencentyun.com/nwx_registry/my-nginx]

48d696542a84: Pushed

4826cdadf1ef: Pushed

v1: digest: sha256:f7261062bf7fab57b1501d7fd9282b9d1501ad14ccbe9feb9236d00fa6288cf7 size: 741

[root@VM_0_13_centos ~]# docker tag my-php:v1 ccr.ccs.tencentyun.com/nwx_registry/my-php:v1

[root@VM_0_13_centos ~]# docker push ccr.ccs.tencentyun.com/nwx_registry/my-php:v1

The push refers to repository [ccr.ccs.tencentyun.com/nwx_registry/my-php]

674c5524920e: Pushed

4826cdadf1ef: Mounted from nwx_registry/my-nginx

v1: digest: sha256:216a1bea5b1436852ba67dfff57be38811a4a32478f799df39753de4e66e2faa size: 742
```

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F5b5d529115ed91016cb01977076115e172ef8cf6.png?generation=1606373441830698\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Fa69c8d885599629e268c0dba08bb38b8cf2eb872.png?generation=1606373441752010\&alt=media)

至此，我们已将nginx和php两个docker基础镜像push至腾讯云仓库。

Nginx基础镜像地址：ccr.ccs.tencentyun.com/nwx\_registry/my-nginx:v1

PHP基础镜像地址：ccr.ccs.tencentyun.com/nwx\_registry/my-php:v1

## 自动化构建生成springboot业务镜像

**腾讯容器云的构建功能（持续集成）**

1.将giltab源代码和Dockerfile文件拉取到本地

2.基于Dockefile文件，制作Docker业务镜像（Dockerfile会引用腾讯云镜像仓库中的Docker基础镜像，将源代码添加至基础镜像中，打包成Docker业务镜像）

3.构建又分自动和手动，自动构建：当用户往代码仓库发起push操作时，如果符合自动构建规则，那么就会在腾讯云容器平台上进行容器镜像的自动构建，并将构建出来的容器镜像自动推送到腾讯云容器镜像仓库中。手动构建：用户需要人为手动进行触发构建。

**构建（持续集成）步骤：**

1.Dockerfile文件上传至github

2.构建配置

3.构建日志内容说明

4.构建镜像验证

### Dockerfile上传到github上

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Ff47c8fbda1dd0bce51510dd69fbc075c7056aeb9.png?generation=1606373442268961\&alt=media)

Dockerfile的内容

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Fdb39f4d172421ad3e1b3c089a2384f682f3acd87.png?generation=1606373441852421\&alt=media)

第1行： FROM引用DockerHub上的maven基础镜像

第2行： 通过MAINTAINER 说明作者和作者邮箱地址；

第3行：将代码拷贝到镜像中用于后续打包

第4-5行：执行打包命令，并将jar拷贝到指定目录便于后续运行

第6行：EXPOSE声明服务端口。（容器内的服务端口，这里是springbboot的8080）

第7行：通过ENTRYPOINT设置业务镜像，开机运行springboot服务

说明：开头FROM和MAINTANER必须要指定；容器业务端口必须要用EXPOSE声明；开机自启动必须要用ENTYPOINT；由于Docker镜像是基于”层”，Dockerfile的内容越精简越好。

### 构建配置

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F08a06217a9d498c51bba06d267cbb0719c9a7e8f.png?generation=1606373443572291\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F75a0d0d500bcf5e6e4d2d5f23fb0f57b7377e602.png?generation=1606373443197772\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F13d22088a74d81a197bb921ffe4e65f9c6e47e97.png?generation=1606373441718571\&alt=media)

在我的镜像中，点击进入构建配置，填写好构建参数，然后点击完成。

1.代码源选择github，Repository选择test-springboot（github上的项目）

2.触发方式勾选分为：添加新的Tag时触发和提交代码到分支时触发（意思是我们在gitlab上添加tag或进行提交代码操作，容器云平台会自动拉取代码，进行打包构建）

3.镜像版本命名规范自定义填写，分支/标签，更新时间，commit号根据需求勾选。（若都勾选，例如：构建成业务镜像名称是springboot-master-201907261035-1d096112584d036167c1cd50a335c0a58ff43f6a，springboot

是命名规则，master

是gitlab上的分支号，201907261035是生成业务镜像的当前时间，1d096112584d036167c1cd50a335c0a58ff43f6a是每次在github提交后生成的commit号）

4.覆盖镜像版本：生成的镜像同时会包含该tag。（可以理解为镜像别名，多打个tag）

5.Dockerfile路径：Dockerfile在文件源代码中的路径。（根据步骤1中Dockerfile和代码在同级目录，所以直接写Dockerfile即可）

6.构建目录：构建时的工作目录。（我这里填写的".",意思是执行当前目录下的Dockerfile文件）

点击完成，会跳转到镜像构建页面

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Fa9592a325d26cf00d52493b6c7d2bc6fe562c15b.png?generation=1606373442820146\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F66474811a995d1b749e5abe9b320cd807bcd3978.png?generation=1606373448346036\&alt=media)

我先在github上提交代码，然后在镜像构建，执行浏览器F5刷新，出现了一条构建记录，点击查看日志，可以看到右侧的构建日志内容

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F8697f2cb23c0cd7727bfa46f43c096ae0a29c08a.png?generation=1606373441771921\&alt=media)

### 构建日志内容说明

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F562c60a5918eb7c84f7f24bf0dbd2781040779a5.png?generation=1606373442315912\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Ff5945aaeb90eab521ba8d715dd19016446f0ef4b.png?generation=1606373442502286\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F589d4dfc48696af275fa71faa2dfa93f51ec0b2a.png?generation=1606373449611012\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Fb2027e355c47b37ce142a850321155ef64a1d2ad.png?generation=1606373441788127\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F4aabbaf4ea66e8f60ad52bce4f44f8632fc242bd.png?generation=1606373443849519\&alt=media)

1.可以观察到，图中框选Step 1/6至Step 6/6 都是Dockerfile的文件内容，表示正在执行Dockerfile文件语句。

2.第1304行：表示docker build成功。

3.第1301行：构建成业务镜像的地址是，ccr.ccs.tencentyun.com/nwx\_registry/springboot:springboot-master-202006011634-d36b9ed0b51a80ed36477fb35d53012e1a05fd4c

4.第1304行：Build successfully，表示构建成功。

5.到镜像仓库下可以看到镜像已经上传成功

至此springboot业务镜像构建成功，同理，其他镜像构建也可以参照如上步骤

## 手动构建docker镜像

手动构建方式

1.指定源码分支构建

2.指定commit号构建

3.使用Dockerfile进行构建

### 指定源码分支构建

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F116ac767a76db4e58c0516f37172bbf3399160ef.png?generation=1606373443727613\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F8c92f04c0ff9453f8d60cbc9206cfeda6f61dce8.png?generation=1606373442825643\&alt=media)

在镜像构建中，点击立即构建，会弹出立即构建镜像界面，构建方式选择指定源码分支构建，镜像版本（可自定义填写，这里我填写v1），分支列表（当前需要构建代码源中的分支，这里我选的master），最后点击构建。在镜像构建中，会多出一条构建记录。

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F1fc7aa9289a82c32d953904e81aa34dcd041c47d.png?generation=1606373442261025\&alt=media)

### 指定commit id构建

获取commit id

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F46856649c1fad827ad297411559f3187b659c45c.png?generation=1606373443016902\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Fa490eaf4bc01d13d88fc3002cc66753d35312f50.png?generation=1606373440318451\&alt=media)

在镜像构建中，点击立即构建，会弹出立即构建镜像界面，构建方式选择指定commit号构建，填写镜像版本(我这里设置的是v2)和Git commit号，最后点击构建。

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F96b5d889508e891bf47784e81c3fac06bd2d4694.png?generation=1606373441738460\&alt=media)

### 指定Dockerfile构建

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Fa54a5088d393852e0c02b85c06b1f3155cb166d2.png?generation=1606373443742962\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2Ff9c7c5528960393202f61cd969354841f6411196.png?generation=1606373443513277\&alt=media)

在镜像构建中，点击立即构建，会弹出立即构建镜像界面，构建方式选择使用dockerfile进行构建，填写镜像版本和Dokcerfile文件内容，最后点击构建。 这里的构建来源是dockerfile构建，是获取不到github源码文件，所以没法进行java源码打包，Dockerfile构建是用于自定义dockerfile，可从第三方拉取镜像，自定义docker业务镜像，一般采用Dockerfile的方式构建都是构建一些基础镜像，不设计源代码或者其他本地文件的构建

修改下Dockerfile，让构建时候不涉及文件的拷贝

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F57229ffca341bdd7e27cf91d6422722be5d2f1c2.png?generation=1606373442653219\&alt=media)

![upload-image](https://1743139827-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMy-ccvHJYp-MpGyagk%2Fsync%2F87b5ee88737fcafb4fe3de120a4de5a181120d8f.png?generation=1606373443352479\&alt=media)
