This website requires JavaScript.

docker + Gitlab CI 的持续集成(二)

2018.09.11 09:33字数 4000阅读 409喜欢 1评论 0

关于docker的基本概念,请查看 docker + Gitlab CI 的持续集成(一)

一、安装docker

docker 安装教程很多, git地址 搜download有很多方式下载,这里就不赘述了,同样可以使用免安装的包
安装好以后检查版本

 docker version

打印类似以下信息,恭喜你,千里之行已经开始了第一步

  [root@VM_0_12_centos ~]# docker version
  Client:
   Version:      17.05.0-ce
   API version:  1.29
   Go version:   go1.7.5
   Git commit:   89658be
   Built:        Fri May  5 15:36:11 2017
   OS/Arch:      linux/amd64

二、启动第一个容器

1、查找需要的image(以nginx为例)

 docker search nginx

docker 市场上会有很多相关的image,没有特殊需求的话,使用官方的即可

[root@VM_0_12_centos ~]#  docker search nginx
NAME                                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                                                  Official build of Nginx.                        9563      [OK]       
jwilder/nginx-proxy                                    Automated Nginx reverse proxy for docker c...   1400                 [OK]
richarvey/nginx-php-fpm                                Container running Nginx + PHP-FPM capable ...   611                  [OK]
jrcs/letsencrypt-nginx-proxy-companion                 LetsEncrypt container to use with nginx as...   405                  [OK]
kong                                                   Open-source Microservice & API Management ...   224       [OK]       
webdevops/php-nginx                                    Nginx with PHP-FPM                              113                  [OK]
kitematic/hello-world-nginx                            A light-weight nginx container that demons...   108                  

2、下载iamge

docker pull nginx

nginx可以指定版本号,写法为

docker pull nginx:版本号

不指定的话默认为latest最新版本

3、查看下载好的image

docker images
[root@VM_0_12_centos ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
nginx                         latest              c82521676580        6 weeks ago         109MB

4、启动容器

docker run -d -p 80:80 --name nginx -v $PWD/dist/:/usr/share/nginx/html nginx
  • docker run 创建一个容器,里面运行一个镜像
  • -d 容器能运行在后台,即守护进程
  • -p 将容器对外的端口与宿主机的端口做映射 此处访问宿主机的80端口 其实就是访问容器的80端口
  • —name 容器的名字,不写会自动生成随机的名字
  • -v 可以理解为容器路径的映射,冒号前的宿主机的路径、冒号后的为容器内的路径,最终访问的是容器内/usr/share/nginx/html下的内容,启动容器时会自动从宿主机路径下同步到容器内
  • nginx 是 pull 好的image镜像

5、查看启动的容器列表

docker ps
[root@VM_0_12_centos ~]# docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                      NAMES
6d94ee9b43d3        nginx                         "nginx -g 'daemon ..."   2 weeks ago         Up 2 weeks          0.0.0.0:80->80/tcp         nginx
此时访问服务器 ip 已经可以访问了,只不过nginx的根目录下没有文件,会提示nginx已经 ready

以上讲了直接使用仓库提供的镜像,那么怎么制作自己的image呢?

三、制作镜像

我们启动一个node服务就需要制作,因为是基于node的image的
1、在需要制作image的项目根目录创建Dockerfile文件,这里我们以node+koa的service项目为例
Dockerfile写入内容如下

 FROM node:latest
 RUN mkdir -p /home/Service
 COPY . /home/Service
 WORKDIR /home/Service
 EXPOSE 8000
 RUN npm install
 CMD ["npm","start"]
  • FROM 即基础镜像
  • RUN 执行该命令
  • COPY 复制当前的内容到 文件夹
  • WOEKDIR docker的工作目录
  • EXPOSE 对外端口
  • CMD 执行脚本

2、在Dockerfile文件所在目录执行build命令

docker build -t testImage .

build 完成即可用命令查看image

docker images

启动一下看看

docker run -d -p 5000:8000 --name testimage testimage