docker
docker
- 一、docker安裝
- 二、docker 啟動和停止
- 三、docker 基本使用
- 四、docker應用
- 一、通過 tomcat 部署 war 包
- 五、docker 自定義鏡像
- 一、簡單定制 nginx 鏡像
- 二、通過 nginx 鏡像介紹各個指令的使用
一、docker安裝
1、在 CentOS 7安裝docker要求系統為64位、系統內核版本為 3.10 以上,可以使用以下命令查看
cat /etc/redhat-release #查看本版和系統的位數
uname -r


2、安裝docker
yum [-y] install docker # -y 如果使用yum install xxxx,會找到安裝包之后,詢問你Is this OK[y/d/N],需要你手動進行選擇,但是如果加上引數-y,就會自動選擇y,不需要你再手動選擇
安裝報錯

我導致出現這個錯誤的原因是我使用的是公司網路,應該是公司網路有什么限制所有報錯了,我切換到手機熱點就沒問題了,
# 擴展
# service network restart #重啟網網關
# cd /etc/sysconfig/network-scripts/ifcfg-ens33
3、重新執行第 2 步
4、添加 Docker 鏡像加速
國內從 DockerHub 拉取鏡像有時由于網路問題會出現下載太慢的情形,這是我們可以給 docker 配置鏡像加速器,例如:
- Docker官方提供的中國鏡像庫:https://registry.docker-cn.com
- 七牛云加速器:https://reg-mirror.qiniu.com
在 /etc/docker/daemon.json 中寫入如下內容,如果檔案不存在就新建該檔案
{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}
載入組態檔并重啟服務
# 載入配置
sudo systemctl daemon-reload
# 重啟 docker
sudo systemctl restart docker
查看 docker 資訊,檢查加速器是否生效
docker info
輸出
[root@bogon sysconfig]# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 1.13.1
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: journald
Cgroup Driver: systemd
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: docker-runc runc
Default Runtime: docker-runc
Init Binary: /usr/libexec/docker/docker-init-current
containerd version: (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1)
runc version: 66aedde759f33c190954815fb765eedc1d782dd9 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f)
init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
seccomp
WARNING: You're not using the default seccomp profile
Profile: /etc/docker/seccomp.json
Kernel Version: 3.10.0-1127.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 1
Total Memory: 972.3 MiB
Name: bogon
ID: NJC4:KRVS:JDHK:Q27Q:L5FL:Y7P5:MLCM:FISW:IVWH:5AWB:OTFE:3GJT
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://reg-mirror.qiniu.com/ # 出現這條說明配置的加速鏡像生效了
Live Restore Enabled: false
Registries: docker.io (secure)
二、docker 啟動和停止
-
查看版本
docker -v -
docker 啟動
systemctl start docker -
查看是否啟動成功
ps -ef | grep docker -
docker 停止
systemctl stop docker -
docker 重啟
systemctl restart docker -
查看 docker 資訊
docker info
三、docker 基本使用
-
查看本地的鏡像
docker images [OPTIONS] [REPOSITORY[:TAG]] # OPTIONS說明: # -a :列出本地所有的鏡像(含中間映像層,默認情況下,過濾掉中間映像層); # --digests :顯示鏡像的摘要資訊; # -f :顯示滿足條件的鏡像; # --format :指定回傳值的模板檔案; # --no-trunc :顯示完整的鏡像資訊; # -q :只顯示鏡像ID, docker image ls [OPTIONS] [REPOSITORY[:TAG]] -
在從倉庫拉取鏡像前,現在 docker 倉庫中搜索想要安裝的軟體包
docker search tomcat
-
通過上一步查出來的 name 拉取鏡像
docker pull [OPTIONS] NAME[:TAG|@DIGEST] # OPTIONS說明: # -a :拉取所有 tagged 鏡像 # --disable-content-trust :忽略鏡像的校驗,默認開啟docker pull docker.io/tomcat查看拉取的鏡像

-
洗掉本地鏡像
docker rmi docker.io/tomcat -
將本地鏡像匯出
docker save -o 匯出路徑 鏡像ID # -o :輸出到的檔案 docker save -o /home/tomcat.tar c0e850d7b9bb # 或者 docker save > /home/tomcat.tar c0e850d7b9bb
下文參考:https://www.cnblogs.com/zhuochong/p/10064350.html
docker save和docker export的區別
- 對于Docker Save方法,會保存該鏡像的所有歷史記錄
- 對于Docker Export 方法,不會保留歷史記錄,即沒有commit歷史
- docker save保存的是鏡像(image),docker export保存的是容器(container);
- docker load用來載入鏡像包,docker import用來載入容器包,但兩者都會恢復為鏡像;
- docker load不能對載入的鏡像重命名,而docker import可以為鏡像指定新名稱,
-
匯入使用 docker save 命令匯出的鏡像,
docker load -i /home/tomcat.tar # docker load < /home/tomcat.tar其中-i和<表示從檔案輸入,會成功匯入鏡像及相關元資料,包括tag資訊
-
修改鏡像名稱
# docker tag 鏡像ID 新的鏡像名稱 docker tag c0e850d7b9bb yourarepigs
-
運行容器
docker run 鏡像的標識|鏡像名稱[tag] docker run -d -p 宿主機埠:容器埠 --name 容器名稱 鏡像的標識|鏡像名稱[tag] # -d: 代表后臺運行容器 # -p: 宿主機埠:容器埠: 為了映射當前Linux的埠和容器的埠 # --name 容器名稱: 指定容器的名稱 # docker run 命令的 -i -t -d選項的作用:https://blog.csdn.net/claram/article/details/104228727docker run -d -p 8080:8080 --name myTomcat docker.io/tomcat tail -f /dev/null -
查看正在運行的容器
docker ps [OPTIONS] # OPTIONS說明: # -a: 代表查看全部的容器,包括沒有運行 # -q: 只查看容器的標識 # -f: 根據條件過濾顯示的內容 # --format: 指定回傳值的模板檔案 # -l: 顯示最近創建的容器 # -n: 列出最近創建的n個容器 # --no-trunc: 不截斷輸出 # -s: 顯示總的檔案大小 -
查看容器日志
# docker logs -f 容器ID # -f: 可以滾動查看日志的最后幾行 docker logs -f myTomcat -
進入容器內部執行命令
- 執行單條命令
通過 docker ps 獲取 CONTAINER ID
# docker exec -it `CONTAINER ID` ls docker exec -it f01e64b6a710 ls
- 進入容器終端并且保留容器終端的輸入形式
# docker exec -it 容器id bash docker exec -it f01 bash # CONTAINER ID 不用輸全,只要能唯一標識某個容器就可以 # 或者 # docker exec -it f01 /bin/bash
3. 使用 exit 或者按鍵 Ctrl + C 退出 container -
洗掉容器
-
洗掉容器需要先停止容器
# docker stop 容器ID docker stop f01e64b6a710 # 停止全部的容器 # docker stop $(docker ps -qa)
-
洗掉容器
# docker rm 容器ID docker rm f01e64b6a710 # 洗掉全部的容器 # docker rm $(docker ps -qa)
-
-
啟動容器
docker start f01e64b6a710
四、docker應用
一、通過 tomcat 部署 war 包
-
準備 tomcat 容器
# 進入容器內部bash docker exec -it f01 /bin/bash # 獲取 tomcat/webapps 路徑 # /usr/local/tomcat/webapps
-
通過命令將 war 包匯入 docker 下的 tomcat 中
-
上傳 war 存盤到 /home 路徑下,openapi-web-master.war

-
將 war 匯入 docker 下的 tomcat 中
# 通過命令將宿主機的內容復制到容器內部 # docker cp 檔案名稱 容器id:容器內部路徑 docker cp /home/openapi-web-master.war f01e64b6a710:/usr/local/tomcat/webapps
-
通過瀏覽器訪問專案
http://IP:PORT/openapi-web-master/ -
資料卷
將宿主機的一個目錄映射到容器的一個目錄中,可以在宿主機中操作目錄中的內容,那么容器內部映射的檔案,也會跟著一起改變,
-
創建資料卷
# docker volume create 資料卷名稱 # 創建資料卷之后默認會存放在一個目錄下 /var/lib/docker/volumes/資料卷名稱/_data docker volume create customVolume # 創建資料卷的默認路徑 # /var/lib/docker/volumes/customVolume/_data -
查看資料卷的詳細資訊
# docker volume inspect 資料卷名稱 docker volume inspect customVolume
-
查看全部資料卷
docker volume ls
-
洗掉資料卷
docker volume rm 資料卷名稱 -
應用資料卷
# 當你映射資料卷時,如果資料卷不存在,Docker會幫你自動創建 # docker run -v 資料卷名稱:容器內部路徑 鏡像id # 直接指定一個路徑作為資料卷的存放位置,這個路徑下是空的, # docker run -v 路徑:容器內部的路徑 鏡像id docker run -d -p 8080:8080 -v customVolume:/usr/local/tomcat tomcat
-
五、docker 自定義鏡像
參考鏈接:https://www.runoob.com/docker/docker-dockerfile.html
一、簡單定制 nginx 鏡像
-
創建一個Dockerfile檔案,并且指定自定義鏡像資訊,
cd /home touch Dockerfile vi Dockerfile在其中加入
FROM nginx RUN echo '這是一個本地構建的nginx鏡像' > /usr/share/nginx/html/index.htmlFROM 和 RUN 指令的作用
- FROM:定制的鏡像都是基于 FROM 的鏡像,這里的 nginx 就是定制需要的基礎鏡像,后續的操作都是基于 nginx,如果沒有指定
tag,latest將會被指定為要使用的基礎鏡像版本, - RUN:用于執行后面跟著的命令列命令,有以下倆種格式:
shell 格式:
RUN <命令列命令> # <命令列命令> 等同于,在終端操作的 shell 命令,exec 格式:
RUN ["可執行檔案", "引數1", "引數2"] # 例如: # RUN ["./test.php", "dev", "offline"] 等價于 RUN ./test.php dev offline注意:Dockerfile 的指令每執行一次都會在 docker 上新建一層,所以過多無意義的層,會造成鏡像膨脹過大,例如:
FROM centos RUN yum install wget RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" RUN tar -xvf redis.tar.gz 以上執行會創建 3 層鏡像,可簡化為以下格式: FROM centos RUN yum install wget \ && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \ && tar -xvf redis.tar.gz如上,以 && 符號連接命令,這樣執行后,只會創建 1 層鏡像,
- FROM:定制的鏡像都是基于 FROM 的鏡像,這里的 nginx 就是定制需要的基礎鏡像,后續的操作都是基于 nginx,如果沒有指定
-
構建鏡像
在 Dockerfile 檔案的存放目錄下,執行構建動作,
以下示例,通過目錄下的 Dockerfile 構建一個 nginx:v3(鏡像名稱:鏡像標簽),
注:最后的 . 代表本次執行的背景關系路徑,下一節會介紹,
docker build -t nginx:v3 .
-
背景關系路徑
上一節中,有提到指令最后一個 . 是背景關系路徑,那么什么是背景關系路徑呢?
docker build -t nginx:v3 .背景關系路徑,是指 docker 在構建鏡像,有時候想要使用到本機的檔案(比如復制),docker build 命令得知這個路徑后,會將路徑下的所有內容打包,
決議:由于 docker 的運行模式是 C/S,我們本機是 C,docker 引擎是 S,實際的構建程序是在 docker 引擎下完成的,所以這個時候無法用到我們本機的檔案,這就需要把我們本機的指定目錄下的檔案一起打包提供給 docker 引擎使用,
如果未說明最后一個引數,那么默認背景關系路徑就是 Dockerfile 所在的位置,
注意:背景關系路徑下不要放無用的檔案,因為會一起打包發送給 docker 引擎,如果檔案過多會造成程序緩慢,
二、通過 nginx 鏡像介紹各個指令的使用
-
FROM:指定新鏡像所基于的鏡像,第一條指令必須為FROM指令,每創建一個鏡像就需要一條FROM指令,
執行步驟:
- FORM 命令會判斷本地的 docker 倉庫中是否存在我們所指定的鏡像名稱和版本
- 如果找到我們所指定的鏡像名稱,則直接使用,
- 如果本地本有找到,會通過網路將鏡像先下載到本地的鏡像倉庫中
- 然后再從本地鏡像倉庫中進行讀取
# FROM (<image>:<tag>]|NAMEID) FROM docker.io/nginx:latest - FORM 命令會判斷本地的 docker 倉庫中是否存在我們所指定的鏡像名稱和版本
-
COPY:復制指令,從背景關系目錄中復制檔案或者目錄到容器里指定路徑
-
除了指定完整的檔案名外,COPY 命令還支持 Go 風格的通配符,比如:
COPY check* /testdir/ # 拷貝所有 check 開頭的檔案 COPY check?.log /testdir/ # ? 是單個字符的占位符,比如匹配檔案 check1.log -
修改檔案
# FROM (<image>:<tag>]|NAMEID) FROM docker.io/nginx:latest # 從背景關系中將 war 包復制到容器中去 COPY openapi-web-master.war /usr/share/nginx/html/
-
-
ADD: 指令和 COPY 的使用格式一致(同樣需求下,官方推薦使用 COPY),功能也類似,不同之處如下:
- ADD 的優點:在執行 <源檔案> 為 tar 壓縮檔案的話,壓縮格式為 gzip, bzip2 以及 xz 的情況下,會自動復制并解壓到 <目標路徑>,
- ADD 的缺點:在不解壓的前提下,無法復制 tar 壓縮檔案,會令鏡像構建快取失效,從而可能會令鏡像構建變得比較緩慢,具體是否使用,可以根據是否需要自動解壓來決定,
-
CMD:類似于 RUN 指令,用于運行程式,但二者運行的時間點不同:
-
CMD 在docker run 時運行,
-
RUN 是在 docker build
注意:不要再Dockerfiles中多次定義
CMD,不然,只會有最后一次定義的值會生效,
-
運行一個可執行檔案
CMD ["/usr/share/nginx/html/testShell.sh", "this is a echo test"]修改檔案
# FROM (<image>:<tag>]|NAMEID) FROM docker.io/nginx:latest # 從背景關系中將 war 包復制到容器中去 COPY openapi-web-master.war usr/share/nginx/html/ # 運行一個可執行檔案并提供引數 # 將檔案拷貝到容器中 COPY testShell.sh /usr/share/nginx/html/ CMD ["/usr/share/nginx/html/testShell.sh", "this is a echo test"]輸出:
[root@bogon Dockerfile2]# docker build -t mynginx:v1 . Sending build context to Docker daemon 18.09 MB Step 1/4 : FROM docker.io/nginx:latest ---> 62d49f9bab67 Step 2/4 : COPY openapi-web-master.war /usr/share/nginx/html/ ---> Using cache ---> c12a20753c50 Step 3/4 : COPY testShell.sh /usr/share/nginx/html/ ---> fe2c978c7791 Removing intermediate container 471920622c45 Step 4/4 : CMD bash -c /usr/share/nginx/html/testShell.sh this is a testShell file ---> Running in 867524fcec47 ---> 029ab1561a8a Removing intermediate container 867524fcec47 Successfully built 029ab1561a8a [root@bogon Dockerfile2]# docker run mynginx:v1 進入測驗腳本testShell 輸入內容為: this [root@bogon Dockerfile2]#
-
為ENTRYPOINT指定引數
修改檔案
# FROM (<image>:<tag>]|NAMEID) FROM docker.io/nginx:latest # 從背景關系中將 war 包復制到容器中去 COPY openapi-web-master.war /usr/share/nginx/html/ # 運行一個可執行檔案 # 將檔案拷貝到容器中 COPY testShell.sh /usr/share/nginx/html/ ENTRYPOINT ["/usr/share/nginx/html/testShell.sh"] CMD ["this is a 為ENTRYPOINT指定引數 file"]
錯誤的寫法:
# 為ENTRYPOINT指定引數 ENTRYPOINT ["bash","-c","/usr/share/nginx/html/testShell.sh"] CMD ["this is a 為ENTRYPOINT指定引數 file"]面這個方式將不會把 CMD 中的值作為 ENTRYPOINT 的引數,所以改為一下方式
# 為ENTRYPOINT指定引數 ENTRYPOINT ["/usr/share/nginx/html/testShell.sh"] CMD ["this is a 為ENTRYPOINT指定引數 file"] -
是以 /bin/bash -c 的方法執行的命令,
# FROM (<image>:<tag>]|NAMEID) FROM docker.io/nginx:latest # 從背景關系中將 war 包復制到容器中去 COPY openapi-web-master.war usr/share/nginx/html/ # 運行一個可執行檔案并提供引數 # 將檔案拷貝到容器中 COPY testShell.sh /usr/share/nginx/html/ CMD ["bash","-c","/usr/share/nginx/html/testShell.sh this is a testShell file"]
-
-
ENTRYPOINT
指令用于設定容器啟動時第一個運行的命令及其引數,
任何使用
docker run <image>命令傳入的引數都會附加在entrypoint指令之后,并且用此命令傳入的引數會覆寫在Dockerfile中使用CMD指令設定的值,比如docker run <image> bash命令會將bash命令附加在entrypoint指令設定的值的后面,但是, 如果運行 docker run 時使用了 --entrypoint 選項,將覆寫 CMD 指令指定的程式,
優點:在執行 docker run 的時候可以指定 ENTRYPOINT 運行所需的引數,
注意:如果 Dockerfile 中如果存在多個 ENTRYPOINT 指令,僅最后一個生效,
修改檔案
# FROM (<image>:<tag>]|NAMEID) FROM docker.io/nginx:latest # 從背景關系中將 war 包復制到容器中去 COPY openapi-web-master.war /usr/share/nginx/html/ # 運行一個可執行檔案 # 將檔案拷貝到容器中 COPY testShell.sh /usr/share/nginx/html/ ENTRYPOINT ["/usr/share/nginx/html/testShell.sh"] CMD ["this is a 為ENTRYPOINT指定引數 file"]-
不傳參
docker run mynginx:v1
-
傳參
docker run mynginx:v1 "我是豬"
-
-
ENV
設定環境變數,定義了環境變數,那么在后續的指令中,就可以使用這個環境變數,
格式:
ENV <key> <value> ENV <key1>=<value1> <key2>=<value2>...啟動容器后,在容器實體中,可以通過env命令查看環境變數
env注意:在Dockerfile檔案中自定義的 ENV 是不會在這里面顯示出來的,

[root@bogon Dockerfile2]# docker exec -it 3cb bash root@3cb2db6e3b8a:/# env HOSTNAME=3cb2db6e3b8a PWD=/ PKG_RELEASE=1~buster HOME=/root NJS_VERSION=0.5.3 TERM=xterm SHLVL=1 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NGINX_VERSION=1.19.10 _=/usr/bin/env root@3cb2db6e3b8a:/#修改檔案
# FROM (<image>:<tag>]|NAMEID) FROM docker.io/nginx:latest # 從背景關系中將 war 包復制到容器中去 COPY openapi-web-master.war /usr/share/nginx/html/ # 運行一個可執行檔案 # 將檔案拷貝到容器中 COPY testShell.sh /usr/share/nginx/html/ ENTRYPOINT ["/usr/share/nginx/html/testShell.sh"] CMD ["this is a 為ENTRYPOINT指定引數 file"] # 定義了環境變數 ENV name1=/bin/echo name2="一朵小紅花" # 不能寫成 CMD[$name1],這樣寫不正確 CMD $name1 $name2
通過 ENV 查看環境變數
[root@bogon Dockerfile2]# docker run mynginx:v1 一朵小紅花 [root@bogon Dockerfile2]# docker exec -it 3cb bash root@3cb2db6e3b8a:/# env HOSTNAME=3cb2db6e3b8a PWD=/ PKG_RELEASE=1~buster HOME=/root NJS_VERSION=0.5.3 TERM=xterm SHLVL=1 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NGINX_VERSION=1.19.10 _=/usr/bin/env root@3cb2db6e3b8a:/# root@3cb2db6e3b8a:/# env $PATH env: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin': No such file or directory root@3cb2db6e3b8a:/# env name1 env: 'name1': No such file or directory root@3cb2db6e3b8a:/# env name2 env: 'name2': No such file or directory root@3cb2db6e3b8a:/#
-
ARG (存在問題)
構建引數,與 ENV 作用一至,不過作用域不一樣,ARG 設定的環境變數僅對 Dockerfile 內有效,也就是說只有 docker build 的程序中有效,構建好的鏡像內不存在此環境變數,
構建命令 docker build 中可以用 --build-arg <引數名>=<值> 來覆寫,
格式:
ARG <引數名>[=<默認值>]為什我我用 ENV 定義的環境變數,進入容器后也看不見,也獲取不到呢????? -
VOLUME
定義匿名資料卷,在啟動容器時忘記掛載資料卷,會自動掛載到匿名卷,
作用:
- 避免重要的資料,因容器重啟而丟失,這是非常致命的,
- 避免容器不斷變大,
格式:
VOLUME ["<路徑1>", "<路徑2>"...] VOLUME <路徑>在啟動容器 docker run 的時候,我們可以通過 -v 引數修改掛載點,
Dockerfile 中 VOLUME 和 -v 的區別參考:https://blog.csdn.net/fangford/article/details/88873104
修改檔案
# FROM (<image>:<tag>]|NAMEID) FROM docker.io/nginx:latest # 從背景關系中將 war 包復制到容器中去 COPY openapi-web-master.war /usr/share/nginx/html/ # 運行一個可執行檔案 # 將檔案拷貝到容器中 COPY testShell.sh /usr/share/nginx/html/ ENTRYPOINT ["/usr/share/nginx/html/testShell.sh"] CMD ["this is a 為ENTRYPOINT指定引數 file"] # 定義了環境變數 ENV name1=/bin/echo name2="一朵小紅花" # 不能寫成 CMD[$name1],這樣寫不正確 CMD $name1 $name2 # 定義匿名資料卷 VOLUME /usr/share/nginx/html-
運行容器前

-
運行容器后

-
停止容器后

-
每次重啟都會生成新的

-
EXPOSE
僅僅只是宣告埠,
作用:
- 幫助鏡像使用者理解這個鏡像服務的守護埠,以方便配置映射,
- 在運行時使用隨機埠映射時,也就是 docker run -P 時,會自動隨機映射 EXPOSE 的埠,
格式:
EXPOSE <埠1> [<埠2>...]修改檔案
# FROM (<image>:<tag>]|NAMEID) FROM docker.io/nginx:latest # 從背景關系中將 war 包復制到容器中去 COPY openapi-web-master.war /usr/share/nginx/html/ # 運行一個可執行檔案 # 將檔案拷貝到容器中 COPY testShell.sh /usr/share/nginx/html/ ENTRYPOINT ["/usr/share/nginx/html/testShell.sh"] CMD ["this is a 為ENTRYPOINT指定引數 file"] # 定義了環境變數 ENV name1=/bin/echo name2="一朵小紅花" # 不能寫成 CMD[$name1],這樣寫不正確 # CMD $name1 $name2 # 定義匿名資料卷 VOLUME /usr/share/nginx/html EXPOSE 80 -
WORKDIR
Dockerfile中的WORKDIR指令用于指定容器的一個目錄, 容器啟動時執行的命令會在該目錄下執行,
格式:
WORKDIR <作業目錄路徑>修改檔案
# FROM (<image>:<tag>]|NAMEID) FROM docker.io/nginx:latest # 創建并指定作業目錄 RUN mkdir -p /usr/share/nginx/html/workDir \ && echo "hello world" > /usr/share/nginx/html/workDir/test.txt WORKDIR /usr/share/nginx/html/workDir RUN pwd RUN ls -halt CMD ["more" ,"test.txt"]
-
USER
參考:https://www.cntofu.com/book/139/image/dockerfile/user.md
-
HEALTHCHECK
用于指定某個程式或者指令來監控 docker 容器服務的運行狀態,
格式:
HEALTHCHECK [選項] CMD <命令>:設定檢查容器健康狀況的命令 HEALTHCHECK NONE:如果基礎鏡像有健康檢查指令,使用這行可以屏蔽掉其健康檢查指令 HEALTHCHECK [選項] CMD <命令> : 這邊 CMD 后面跟隨的命令使用,可以參考 CMD 的用法, -
ONBUILD
用于延遲構建命令的執行,簡單的說,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次構建鏡像的程序中不會執行(假設鏡像為 test-build),當有新的 Dockerfile 使用了之前構建的鏡像 FROM test-build ,這是執行新鏡像的 Dockerfile 構建時候,會執行 test-build 的 Dockerfile 里的 ONBUILD 指定的命令,
格式:
ONBUILD <其它指令>
-
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/282414.html
標籤:其他
