首頁 > 軟體

docker基本命令及使用範例詳解

2022-03-30 19:01:14

docker基本命令

docker檔案系統

docker映象為分層設計,相比於全量的虛擬機器器映象,少了載入程式bootfs,共用系統核心rootfs。

設定層(容器層)

commit映象

docker commit -a="" -m="" docker_id image_name:tag

類似於給映象打個快照。

容器資料卷

解決問題 ->資料持久化 本質是目錄掛載

使用資料卷

方式一: 直接使用命令掛載 -v

docker run -it  -v 主機目錄:容器內目錄  image_id /bin/bash

具名和匿名掛載

# 匿名掛載
docker run -d -P --name nginx01 -v /etc/nginx(容器內路徑) nginx
# 具名掛載
docker run -d -P --name nginx02 -v xff-nginx:/etx/nginx(容器內路徑) nginx
root@hecs-39042:/var/lib/docker/volumes# ls
4ad594eee4e6115b2852f5fa952176c799e99bf1d0cadaee9c581085b8e38b6e  d309f4a3ce1aa585673548ed4fd43a3aa7a5ca4f86a5a52b236d02428b991379  xff-nginx
backingFsBlockDev                                                 metadata.db
root@hecs-39042:/var/lib/docker/volumes# docker volume ls
DRIVER    VOLUME NAME
local     4ad594eee4e6115b2852f5fa952176c799e99bf1d0cadaee9c581085b8e38b6e
local     d309f4a3ce1aa585673548ed4fd43a3aa7a5ca4f86a5a52b236d02428b991379  --匿名掛載
local     xff-nginx															--具名掛載
root@hecs-39042:/var/lib/docker/volumes#
# 如何確定是具名、匿名、指定路徑掛載
-v xff-nginx(卷名):容器內路徑
-v 容器內路徑
-v /path(宿主機路徑):/容器內路徑
拓展:
-v :/容器內路徑:ro or rw
# ro 只能通過宿主機操作, 容器內部是無法操作!

多個容器間資料共用

# --volumes-form 實現容器間的設定傳遞,資料卷容器的生命週期一直持續到沒有容器使用為止
# 一旦持久化(掛載)到本地,這個時候即使刪除映象;原生的資料也不會刪除
docker run -d -P -name nginx01 nginx
docker run -d -P -name nginx02 --volumes-form nginx01 nginx
docker run -d -P -name nginx03 --volumes-form nginx01 nginx

初識Dockerfile commit

Dockerfile 用來構建映象,命令引數指令碼。

構建步驟:

1.編寫一個dockerfile

2.docker build 構建成為一個映象

3.docker run 執行映象

4.docker push 釋出映象

# 基礎映象 掛載目錄 命令為大寫
FROM ubuntu
VOLUME ["volume01","volume02"]
CMD echo "----build image succeed----"
CMD /bin/bash

Dockerfile 構建過程

1.每個關鍵字都必須是大寫字母

2.執行順序從上到下

3.# 表示註釋

4.每一個指令都會建立提交一個新的映象,並提交

命令

FROM 	# 基礎映象
MAINTAINER 	# 映象誰釋出的, 姓名+郵箱
RUN		# 映象構建時候要執行的命令
ADD		# 步驟:tomcat映象,這個tomcat壓縮包,新增內容
WORKDIR # 映象的工作目錄
VOLUME 	# 掛載的主機目錄
EXPOSE 	# 指定對外的埠
CMD 	# 指定這個容器啟動的時候要執行的命令,只有最後一個會生效
ENTRPOINT # 指定這個容器啟動時候要執行的命令,可以追加命令
ONBUILD # 構建一個被繼承Dockerfile 這個時候就會執行
COPY 	# 類似於ADD,將檔案拷貝到映象中
ENV 	# 構建時設定環境變數

建立一個ubuntu

CMD 和 ENTRYPOINT的區別

root@hecs-39042:/home/docker# docker run ubuntu-cmd -l
docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.
root@hecs-39042:/home/docker#
root@hecs-39042:/home/docker# docker run ubuntu-entrypoint -l -i
total 56
drwxr-xr-x   1 root root 4096 Mar 27 07:13 .
drwxr-xr-x   1 root root 4096 Mar 27 07:13 ..
-rwxr-xr-x   1 root root    0 Mar 27 07:13 .dockerenv
CMD外部傳入的命令會覆蓋掉dockerfile裡面的
ENTRYPOINT可以通過外部命令追加引數
  • 編寫一個Dockerfile
  • 釋出映象
  • 啟動容器

釋出自己的映象

docker login

docker網路

veth-pair 
--link

自定義網路

docker run -d  -P --name tomcat06 --net bridge tomcat
docker0特點:不能通過域名存取;--link可以打通
# 建立自定義網路
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
# 啟動容器指定自定義網路
docker run -d -P --name tomcat-mynet-01 --net mynet tomcat 
# 跨網路操作容器
docker network connect mynet contain

到此這篇關於docker基本命令及使用範例的文章就介紹到這了,更多相關docker基本命令內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com