前端 docker + gitlab CI 的持續整合(二)

silenceCoder發表於2018-09-17

關於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

前端 docker + gitlab CI 的持續整合(二)

以上講了直接使用倉庫提供的映象,那麼怎麼製作自己的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 .
複製程式碼

前端 docker + gitlab CI 的持續整合(二)

build 完成即可用命令檢視image

docker images
複製程式碼

前端 docker + gitlab CI 的持續整合(二)

啟動一下看看

docker run -d -p 5000:8000 --name testimage testimage
複製程式碼

前端 docker + gitlab CI 的持續整合(二)

大家還可以關注我的部落格無聲的部落格

相關文章