常用Docker命令

      網友投稿 763 2025-03-31

      docker命令分為管理命令、鏡像命令、容器命令、倉庫命令、網絡命令、數據卷命令、編排命令。

      1、啟動docker

      ~$ sudo service docker start

      1

      2、確認Docker運行狀態

      ~$ sudo docker run --rm hello-world

      1

      Hello from Docker! //出此句說話,即正常

      3、重啟Docker

      ~$ sudo service docker restart

      1

      4、搜索docker鏡像 ,如搜索ubuntu相關的鏡像

      ~$ sudo docker search ubuntu

      1

      5、從指定倉庫拉取docker鏡像到本地,格式:docker pull containerName:tag,不指定tag,默認last,拉取的鏡像放在/var/lib/docker/

      ~$ sudo docker pull nginx Using default tag: latest latest: Pulling from library/nginx 6ae821421a7d: Pulling fs layer da4474e5966c: Pulling fs layer eb2aec2b9c9f: Download complete /var/lib/docker$ sudo ls /var/lib/docker builder containers network plugins swarm trust buildkit image overlay2 runtimes tmp volumes

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      6、將docker鏡像推送到倉庫,不指定tag,默認是last

      ~$ sudo docker push name[:tag] ~$ sudo ls -l /var/lib/docker total 48 drwx------ 2 root root 4096 11月 14 15:02 builder drwx------ 4 root root 4096 11月 14 15:02 buildkit drwx------ 3 root root 4096 11月 15 16:09 containers //存放容器的信息 drwx------ 3 root root 4096 11月 14 15:02 image //存放鏡像的信息 drwxr-x--- 3 root root 4096 11月 14 15:02 network //存放網絡的信息 drwx------ 15 root root 4096 11月 15 16:58 overlay2 drwx------ 4 root root 4096 11月 14 15:02 plugins drwx------ 2 root root 4096 11月 14 15:22 runtimes drwx------ 2 root root 4096 11月 14 15:02 swarm //存放集群的信息 drwx------ 2 root root 4096 11月 15 15:04 tmp drwx------ 2 root root 4096 11月 14 15:02 trust drwx------ 2 root root 4096 11月 14 15:02 volumes //存放數據卷的信息

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      7、查看Docker本地鏡像

      ~$ sudo docker images

      1

      8、構建鏡像

      (1)通過Docker Hub自動構建

      (2)用build命令構建:

      首先,在當前目錄下創建Dockerfile文件

      然后執行下面的命令:

      ~$ sudo docker build -t myubuntu:me . //別忘了最后的那個點,表示當前目錄。 ~$ sudo docker images //查看

      1

      2

      3

      在當前目錄建立一個名為Dockerfile的文件,然后指定一個基礎鏡像:

      from ubuntu Run echo

      1

      2

      鏡像定制就是在一個基礎鏡像上不斷堆疊其他部分。

      9、導出Docker鏡像

      ~$ sudo docker save -o myu.tar myubuntu:me ~$ ls myu.tar

      1

      2

      3

      10、導入由save命令導出 的Docker鏡像

      ~$ sudo docker load -i myu.tar

      1

      11、docker rmi命令能確保沒有容器使用的情況下,刪除docker鏡像

      ~$ sudo docker rmi myubuntu:me

      1

      12、docker create命令創建容器,此時僅僅創建了容器但并未啟動,可用docker start命令啟動容器。docker create命令常用于在啟動容器之前進行必要的設置,如設置容器另名、指定數據卷、指定端口映射、設置ip等,后續會一一提到,在此先給出個簡單的例子:

      ~$ sudo docker create -it --name myU myubuntu:me bash

      1

      13、啟動docker容器,容器必須先用docker create命令創建出來

      ~$ sudo docker start -a -i myU //容器的別名或id

      1

      13、重啟docker容器

      ~$ sudo docker restart myU

      1

      14、查看本地docker容器信息

      ~$ sudo docker ps -a

      1

      15、查看docker容器狀態

      ~$ sudo docker stats myU

      1

      16、刪除docker容器,注意docker rmi是刪除鏡像

      ~$ sudo docker rm myub

      1

      17、停止Docker容器進程,正常停止可以保證數據不會丟失

      ~$ sudo docker stop myU

      1

      18、殺掉Docker容器進程,此舉屬于非正常停止容器,數據可能會丟失

      ~$ sudo docker kill myU

      1

      19、[不推薦]創建并啟動docker容器,有些機器上,此命令可能會沒有效。

      ~$ sudo docker run -it –name myUU myubuntu:me bash //容器名為myUU 鏡像為 myubuntu:me

      1

      20、進入容器的方式,大概有ssh登錄、nsenter或nsinit第三方工具、Docker工具等

      ~$ sudo docker attach myU 或 ~$ sudo docker exec -it myU bash //推薦

      1

      2

      3

      21、暫停docker容器

      ~$ sudo docker pause myU

      1

      22、恢復puase暫停的docker容器

      ~$ sudo docker unpause myU

      1

      23、docker容器與宿主機之間的文件復制(所謂宿主機,就是安裝了docker的主機)

      (1)從docker容器復制文件到宿主機:

      docker cp :

      ~$ sudo docker cp myU:/home/home.txt /home/wong/Dektop

      1

      (2)從宿主機復制文件到docker容器:

      docker cp :

      ~$docker cp /home/wong/Dektop/haha.txt :/home/wong/file_folder

      1

      24、查看容器的變化

      ~$ sudo docker diff myU

      1

      25、提交當前容器并打包為鏡像 。容器內的文件和宿主機是隔離開的,如果不使用docker commit提交容器作為鏡像數據保存下來的話,數據就會因為容器的刪除而丟失。這樣不利于遷移和重新構建等情況。

      ~$ sudo docker commit myU

      1

      25、導出本地Docker容器,tar包鏡像包

      ~$ sudo docker export -o myUbuntu.tar myU 或 ~$ sudo docker export myU > myUbuntu.tar

      1

      2

      3

      26、導入export導出的Docker鏡像

      ~$docker import https://example.com/container.tar //導入存放在網絡上的鏡像 ~$sudo docker import myUbuntu.tar //導入本地包

      1

      2

      27、查看Docker服務端的事件

      //容器相關的attach、commit、copy、create、destroy、detach、die、exec_create、exec_detach、exec_start、export、kill、oom、pause、rename、resize、restart、start、stop、top、unpause、update

      ~$ sudo docker events -f container=

      1

      //鏡像相關的delete、import、load、pull、push、save、tag、untag

      ~$ sudo docker events -f image=

      1

      //create、mount、unmount、destroy

      ~$ sudo docker events -f network=

      1

      //create、connect、disconnect、destroy

      ~$ sudo docker events -f daemon=

      1

      //delete、import、load、pull、push、save、tag、untag

      ~$ sudo docker events -f volume=

      1

      28、查看Docker鏡像歷史

      ~$ sudo docker history ubuntu

      1

      29、查看Docker信息

      ~$docker info

      1

      30、查看詳細信息

      ~$docker inspect CONTAINER|IMAGE|TASK

      1

      31、查看docker容器日志

      ~$ sudo docker logs myU

      1

      32、重命名docker鏡像

      ~$ sudo docker rename myU_old MyL_new

      1

      33、查看容器進程

      ~$ sudo docker top myU

      1

      34、設置鏡像標簽 :Docker中的鏡像、容器、網絡、數據卷等 組件在運行時,都會自動獲取一個ID,ID是唯一的,但ID不好記,可以打上標簽,那么通過標簽來找就方便多了。

      ~$sudo docker tag afb9ac76685c mylove:2018

      1

      35、查看docker版本

      ~$ sudo docker version

      1

      36、設置容器等待,一般用于容器的監控、異常捕捉方面

      ~$ sudo docker wait container

      1

      37、對容器做的設置進行更新,命令格式:

      docker update [OPTIONS] CONTAINER [CONTAINER…]

      –blkio-weight

      0

      阻塞IO(相對權重),介于10和1000之間,或0禁用(默認為0)

      –cpu-period

      0

      限制CPU CFS(完全公平的調度程序)周期

      –cpu-quota

      0

      限制CPU CFS(完全公平的調度程序)配額

      –cpu-rt-period

      0

      限制CPU實時周期(以微秒為單位)

      –cpu-rt-runtime

      0

      以微秒為單位限制CPU實時運行時間

      –cpu-shares, -c

      0

      CPU份額(相對權重)

      常用Docker命令

      –cpuset-cpus

      允許執行的CPU(0-3,0)

      –cpuset-mems

      允許執行的內存率(0-3,0.1)

      –kernel-memory

      內核內存限制

      –memory, -m

      內存限制

      –memory-reservation

      內存軟限制

      –memory-swap

      交換限制等于內存加交換:’-1‘以啟用無限制的交換

      –restart

      更新容器應用的策略

      ~$ sudo docker update -m 500m --memory-swap -1 myU

      1

      設置了之后 可以通過$sudo docker stats myU查看

      38、管理數據卷的docker volume命令

      Docker的卷有兩種:數據卷、數據卷容器

      數據卷:數據卷就是一個目錄,它是由Docker daemon掛載到容器中的,因此數據卷并不屬于聯合文件系統。Docker使用的是AUFS聯合文件系統。兩個容器使用同一個數據卷,就是數據卷共享。

      數據卷容器:專門用來存放數據的數據卷容器。它不需要運行任何應用,只是一個存放數據的容器,允許其他容器掛載就可以了。注意:不要運行數據卷容器,因為這純粹是一種浪費資源,只要數據卷容器存在,數據卷就不會消失,不管容器處于什么狀態。

      (1)掛載數據卷

      在使用docker run或docker create命令時,指定-v參數來添加數據卷,如:

      第一步,創建容器,并指定數據卷:

      ~$ sudo docker create -it --name mVVV -v /hostVol:/ContainerV myv:2018 bash

      1

      注:-v /hostVol:/ContainerV:rw 表示可讀可寫 -v /hostVol:/ContainerV:ro只讀

      第二步,啟動容器

      ~$ sudo docker start -a -i mVVV

      1

      第三步,測試:

      root@974478e5a35c:/# cd ContainerV root@974478e5a35c:/ContainerV# touch hahah.txt root@974478e5a35c:/ContainerV# echo "safdsafdsafasfdasfddsaf" > hahah.txt

      1

      2

      3

      第四步,測試結果顯示在宿主機目錄/hostVol下有名為hahah.txt的文件,內容為 safdsafdsafasfdasfddsaf。測試成功。

      第五步:用docker inspect查看數據卷的詳細信息

      ~$sudo docker inspect mVVV "Mounts": [ { "Type": "bind", "Source": "/hostVol", "Destination": "/ContainerV", "Mode": "", "RW": true, "Propagation": "rprivate" } ... ]

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      如果沒有指定在宿主機的目錄,則使用默認的目錄,如:

      ~$ sudo docker create -it --name mVVV -v /ContainerV myv:2018 bash ~$sudo docker inspect mVVV "Mounts": [ { "Type": "volume", "Name": "2d49f45311e30297186819f8507b9944f76337abe971351a4510f6e319a5a41e", "Source": "/var/lib/docker/volumes/2d49f45311e30297186819f8507b9944f76337abe971351a4510f6e319a5a41e/_data", "Destination": "/ContainerV", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ... ]

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      可以看到在宿主機的目錄是:/var/lib/docker/volumes/2d49f45311e30297186819f8507b9944f76337abe971351a4510f6e319a5a41e/_data,我想你也不想去記一個這么長的目錄吧,所以最好指定一個宿主機目錄。

      將宿主機上的目錄(對容器來說就是數據卷)掛載到容器上,不僅僅可以保存數據卷內容,還可以把程序代碼目錄掛載到容器上,在容器里面編譯,編譯成功直接在宿主機下就可以找到編譯好的項目,保證宿主機的清潔與穩定。

      (2)掛載數據卷容器

      雖然掛載本地目錄到容器解決了數據持久化的問題,但是遷移上還是很麻煩,比如多個容器之間共享數據需要遷移時,使用掛載宿主機的文件夾的方法遷移起來就會很麻煩。所以為了管理數據卷,可以啟動一個容器專門用來存放數據。

      第一步,創建數據卷容器

      ~$ sudo docker create -it -v /HostVol:/ContainerVol --name=My_Volume ubuntu bash

      1

      第二步,啟動其他容器,并掛載數據卷容器

      ~$ sudo docker create -it --volumes-from=My_Volume --name=db1 ubuntu bash

      1

      甚至還可以通過容器db1來掛載到后續啟動的容器中:

      ~$ sudo docker create -it --volumes-from=db1 --name=db2 ubuntu bash

      1

      第三步測試:掛載了數據卷容器的容器都有/ContainerVol這個目錄,把上面這些容器全部刪除掉,數據卷也不會消失,因為數據卷保存在了宿主機/HostVol目錄下。如果沒有數據卷容器映射到宿主機的某個指定目錄,則數據卷在宿主機上的/var/lib/docker/volumes/的某個目錄下,即使用默認目錄,可通過docker inspect 查看詳細信息。

      ~$ sudo docker start -a -i db2 root@0ae704541d7c:/# ls ContainerVol bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@0ae704541d7c:/# cd ContainerVol root@0ae704541d7c:/ContainerVol# touch haha.txt root@0ae704541d7c:/ContainerVol# echo "adfasdfsadf" > haha.txt

      1

      2

      3

      4

      5

      6

      第四步,測試結果顯示在宿主機目錄/HostVol 下有名為haha.txt的文件,內容為 adfasdfsadf。測試成功。

      顯示所有沒有掛載到容器上的數據卷:

      //刪除容器時沒有使用-v標志,這些數據卷就會成為dangling狀態。 ~$sudo docker volume ls f dangling=true //刪除這些dangling狀態的數據卷 ~$sudo docker volume rm

      1

      2

      3

      4

      5

      6

      7

      39、備份數據卷

      第一步:先創建一個臨時容器,再掛載數據卷/host_backup目錄到臨時容器/tmp_container_backup目錄,再掛載要備份的數據卷容器(要備份的目錄是/ContainerVol)。

      ~$ sudo docker create -it -v /host_backup:/tmp_container_backup --volumes-from=My_Volume --name tmpBackupContainer ubuntu bash

      1

      第二步:啟動臨時容器

      ~$ sudo docker start -a -i tmpBackupContainer

      1

      第三步:在臨時容器中執行備份,如壓縮數據卷容器中(/ContainerVol)的文件,然后放到/tmp_container_backup目錄下,這樣宿主機/host_backup目錄下存在了相同的文件,這樣就完成了備份。如:

      root@59269ee13d6a:/# ls ContainerVol bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp tmp_container_backup usr var root@59269ee13d6a:/# cd ContainerVol root@59269ee13d6a:/ContainerVol# ls haha.txt root@59269ee13d6a:/ContainerVol# tar -cvjpf haha.tar.bz2 haha.txt haha.txt root@59269ee13d6a:/ContainerVol# ls haha.tar.bz2 haha.txt root@59269ee13d6a:/ContainerVol# mv haha.tar.bz2 ../tmp_container_backup

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      宿主機/host_backup目錄下存在了haha.tar.bz2

      40、遷移、恢復數據卷

      第一步:創建一個數據卷容器,數據卷目錄名要與備份的一樣:

      ~$ sudo docker create -it -v /ContainerVol --name db_data2 ubuntu bash

      1

      第二步:創建一個臨時容器 tmpContainer

      ~$ sudo docker create -it --name tmpContainer --volumes-from db_data2 -v /host_backup:/tmp_container_backup ubuntu

      1

      第三步:啟動臨時容器,在容器中解壓文件,再將文件移動到新的數據卷容器的/ContainerVol 目錄下就完成了數據的遷移及恢復。

      ~$ sudo docker start -a -i tmpContainer root@b8c7d1e13f5f:/# ls ContainerVol bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp tmp_container_backup usr var root@b8c7d1e13f5f:/# cd tmp_container_backup root@b8c7d1e13f5f:/tmp_container_backup# tar -xvjf haha.tar.bz2 haha.txt root@b8c7d1e13f5f:/tmp_container_backup# mv haha.txt ../ContainerVol

      1

      2

      3

      4

      5

      6

      7

      第四步:測試,啟動新的數據卷容器,看文件是否恢復成功。

      ~$ sudo docker start -a -i db_data2 root@73fe55200f52:/# ls ContainerVol bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@73fe55200f52:/# cd ContainerVol root@73fe55200f52:/ContainerVol# ls haha.txt  //在新的數據卷容器有恢復的內容 root@73fe55200f52:/ContainerVol#

      1

      2

      3

      4

      5

      6

      7

      小結:Docker的volume本質上是一個目錄,它是一個掛載點,在容器創建時,這個掛載點會被掛載到一個宿主機的目錄,這個目錄可以是以volume ID為名的文件夾,也可以是啟動參數中指定的目錄。掛載之后容器與宿主機顯示的目錄會表現為同一個目錄,獨立于容器的rootfs 。

      Docker傳統的卷管理只能掛載本機目錄到容器中,數據的備份、同步、遷移都是個挑戰,可以通過第三方插件來解決,如Convoy和Flocker插件。

      41、管理網絡命令

      Docker目前對單節點的設備提供了映射容器端口到宿主機、容器互聯兩個網絡服務。

      端口映射:在Docker中容器默認是無法與外部通信的,需要在啟動命令中加入對應參數才允許容器與外界通信。

      當容器運行著一個Web服務時,需要把容器內的web服務應用程序端口映射到本地宿主機的端口,這樣用戶通過訪問宿主機指定端口時,相當于訪問容器內部的web服務端口,映射方式:

      (1)端口映射方式1:-p Local_Port:Container_Port ,這種方式可以讓訪客通過訪問宿主機的端口來訪問容器服務,一般情況下,都用這種方式。

      (2)端口映射方式2:-p Local_IP:Local_Port:Container_Port ,這種方式可以映射到指定地址的指定端口。例如映射到127.0.0.1這個地址:-p 127.0.0.1:8000:80,那么這個端口只能通過本機訪問,外部無法訪問這個容器服務,一般在測試環境下會用到。同樣地,如果指定了一個子網IP,那么只有在同一個子網內的用戶才可以訪問,局域網外的用戶無法訪問。

      (3)端口映射方式3:-p Local_IP::Container_Port ,這種方式有點像方式2,就是指定了哪些IP可以訪問,但是宿主機端口卻是隨機分配映射的。

      (4)端口映射方式4:指定傳輸協議,以上三種格式還可以使用tcp或者udp標記來指定端口,如:

      方式1:-p Local_Port:Container_Port /tcp

      方式2:-p Local_IP:Local_Port:Container_Port /udp

      方式3:-p Local_IP::Container_Port /tcp

      42、容器互聯

      端口映射的用途是宿主機與容器的通信,而容器互聯是容器之間的通信。容器互聯除了端口映射外,還可以通過容器別名互聯。使用容器別名互聯時,容器必須要有一個名字,也就–name指定的值。這個值不管理用戶是否定義了,都會存在,默認由Docker隨機生成詞組。但一般為了方便操作與記憶都會手動設置容器名稱。如果忘記了設置名稱,可以通過docker rename來重命名容器。容器的名稱是唯一了,如果名稱已存在,新的同名容器會無法創建。容器互聯的參數–link,步驟如下:

      第一步,創建一個數據庫容器:

      ~$ sudo docker create -it --name db -e MYSQL_ROOT_PASSWORD=password mysql:5.6

      1

      注:-e MYSQL_ROOT_PASSWORD=password設置數據庫root密碼

      第二步,啟動數據庫容器:

      ~$ sudo docker start -a -i db

      1

      第三步,創建一個web服務:

      ~$ sudo docker create -it -p 8000:80 --name myPhpWeb --link db:myphp richarvey/nginx-php-fpm bash

      1

      這里–link db:myphp使用參數值左右不同的寫法來區分,左邊表示的是剛才啟動的容器名稱,代表MySQL容器,右邊myphp表示后來運行的PHP容器。

      第四步,啟動PHP容器

      ~$ sudo docker start -a -i myPhpWeb

      1

      第五步,測試PHP容器與數據庫容器是否互聯成功。在PHP容器啟動完成后,使用ping db查看是否連接成功:

      bash-4.4# ping db PING db (172.17.0.2): 56 data bytes 64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.113 ms 64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.166 ms 64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.170 ms 64 bytes from 172.17.0.2: seq=3 ttl=64 time=0.122 ms 64 bytes from 172.17.0.2: seq=4 ttl=64 time=0.171 ms 64 bytes from 172.17.0.2: seq=5 ttl=64 time=0.163 ms 64 bytes from 172.17.0.2: seq=6 ttl=64 time=0.147 ms ^C --- db ping statistics --- 7 packets transmitted, 7 packets received, 0% packet loss round-trip min/avg/max = 0.113/0.150/0.171 ms

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      ping通了,表明容器互聯成功了。注:ping <容器名>

      也可以建立一個PHP文件,測試是否能連接 MySQL容器。

      1

      2

      3

      4

      5

      6

      注意mysql_connect(“mysql”,”root”,”password”);之中沒有使用localhost來連接,這是因為在容器中的/etc/hosts文件會實時根據環境而改變,例如使用—link連接容器的時候,就會在容器的/etc/hosts文件中添加一行內容:

      127.0.0.1 localhost

      ::1 localhost ip6-localhost ip6-loopback

      fe00::0 ip6-localnet

      ff00::0 ip6-mcastprefix

      ff02::1 ip6-allnodes

      ff02::2 ip6-allrouters

      172.17.0.2 mysql 00467a2d7da1 db

      172.17.0.3 7efd4da74342

      –link只能在容器之間使用。使用–link參數創建的容器會使用容器的主機名和容器ID來更新自己的/etc/hosts文件。使用–link參數時不會向宿主機映射端口,而是在容器之間建立一個通信隧道,因此避免了把數據庫端口暴露到外部網絡中。

      值得注意的是,使用–link時不只是允許容器之間通信,還包括環境變量的設置,如:

      root@7efd4da74342:/# env

      MYSQL_ENV_MYSQL_ROOT_PASSWORD=password

      MYSQL_PORT_3306_TCP_PROTO=tcp

      HOSTNAME=7efd4da74342

      MYSQL_NAME=/PHPWEB/mysql

      MYSQL_ENV_MYSQL_MAJOR=5.6

      MYSQL_PORT=tcp://172.17.0.2:3306

      MYSQL_PORT_3306_TCP=tcp://172.17.0.2:3306

      PWD=/

      MYSQL_ENV_MYSQL_VERSION=5.6.42-1debian9

      HOME=/root

      MYSQL_PORT_3306_TCP_PORT=3306

      MYSQL_PORT_3306_TCP_ADDR=172.17.0.2

      TERM=xterm

      SHLVL=1

      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

      MYSQL_ENV_GOSU_VERSION=1.7

      _=/usr/bin/env

      root@7efd4da74342:/#

      從上述結果可以看出,使用env輸出的內容實際上都是db容器的環境變量,通過–link使得環境變量也交換了,這樣做有助于迅速與數據庫建立連接,如果PHP容器之前設置了env,那么將會被后來的db容器的env覆蓋。–link參數可以使用多次,即PHP容器允許連接多個數據庫。

      43、端口暴露

      端口暴露與端口映射是兩個不同的概念??梢杂肊XPOSE指令在Dockerfile里定義或用—expose參數來指定,如–expose=1324

      44、Docker網絡模式

      (1)bridge模式是Docker默認的網絡模式,屬于一種NAT網絡模型,Docker daemon在啟動的時候就會建立一個docker0網橋,每個容器使用bridge模式啟動時,Docker都會為容器創建一對虛擬網絡接口設備。這對設備一端在容器的Network Namespace,另一端在docker0。這樣就實現了容器與宿主機的通信。

      (2)none模式:不為容器配置任何網絡,使用容器完全失去網絡功能,啟用這種模式,添加–net=none即可。

      (3)container模式:表不與另一個運行中的容器共享一個Network Namespace, --net=container:<另一個容器名>。查看兩個容器的/etc/hosts會發現它們都擁有同一個hostname。

      (4)host模式:不推薦,與主機共享Root Network Namespace,容器有完整的權限操縱主機的網絡配置。

      (5)overlay模式:是Docker原生的跨主機多子網網絡模型,當創建一個新的網絡時,Docker會在主機創建一個Network Namespace,Network Namespace內有一個網橋,網橋上有一個vxlan接口,每個網絡占用一個vxlan ID,當容器被添加到網絡中時,Docker會分配一對veth網卡設置,與bridge模式一樣,一端在容器的Network Namespace,另一端在主機的Network Namespace上。

      docker network connect <網絡名> <容器名>//將指定容器連接到指定網絡

      如:

      ~$ sudo docker network connect foo PHPWEB

      1

      用docker network create <網絡名>創建一個網絡。默認情況下,新建網絡默認使用橋接模式,如果想要新建其他模式的網絡可以使用-d參數來指定。如:

      ~$ sudo docker network create foo 99a4382fbaf78288694fd408ccaa8d01e4ba7a6428a963cf8b0bd67e9b51cc50 ~$ sudo docker network diconnect <網絡名> <容器名>//斷開指定容器的網絡 如:~$ sudo docker network disconnect foo PHPWEB ~$ sudo docker network inspect <網絡名>//顯示指定容器的網絡信息 如:~$ sudo docker network inspect foo ~$ sudo docker network ls //顯示所有docker的網絡 如:~$ sudo docker network ls NETWORK ID NAME DRIVER SCOPE 4a1b46aff078 bridge bridge local 99a4382fbaf7 foo bridge local baf35b082a88 host host local be8b94f86fbf none null local

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      用 docker network rm <網絡名>刪除指定網絡,如:

      ~$ sudo docker network rm foo

      1

      45、查看docker容器端口

      docker port 只能查看運行中的容器的端口信息如:

      ~$ sudo docker port PHPWEB [sudo] password for wong: 80/tcp -> 0.0.0.0:8000

      1

      2

      3

      46、docker daemon設置Docker啟動時的網絡參數(此命令運行在服務端)

      -b,將容器附加到一個網橋上

      –bip 指定docker0的IP,不能與-b一起用

      –default-gateway指定容器默認的IPV4網關

      –default-gateway-v6指定容器默認的IPV6網關

      –dns=[]設置容器默認的DNS

      –dns-opt=[]

      –dns-search=[]

      –icc=true設置是否允許容器間通信

      –ip=0.0.0.0容器端口暴露時綁定的主機IP,一般默認即可。

      –iptables=true設置是否允許向iptables添加規則

      47、登錄docker鏡像倉庫

      $docker login

      1

      48、登出docker鏡像倉庫

      $docker logout

      1

      Docker 容器

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:word怎么降序排列(word怎么進行降序排序
      下一篇:wps版表格如何繪制環形百分比圖(wps表格圓環圖編輯)
      相關文章
      亚洲精品色播一区二区| 亚洲国产日韩在线| 亚洲中文字幕一二三四区苍井空 | 久久久久亚洲精品美女| 久久久久亚洲?V成人无码| 亚洲国产综合精品中文字幕 | 亚洲视频小说图片| 亚洲精品人成电影网| 亚洲电影在线免费观看| 亚洲国产高清在线精品一区| 亚洲成人免费电影| 亚洲av产在线精品亚洲第一站| 亚洲人成在线免费观看| 亚洲一区二区三区高清不卡 | 精品国产综合成人亚洲区| 亚洲第一AV网站| 久久国产亚洲电影天堂| 久久亚洲AV无码精品色午夜| 亚洲日韩国产精品无码av| 亚洲婷婷第一狠人综合精品| 一区二区亚洲精品精华液| 亚洲精品天堂成人片AV在线播放 | 97久久精品亚洲中文字幕无码 | 久久亚洲国产成人影院网站 | 亚洲精品国产suv一区88| 99亚洲男女激情在线观看| 亚洲国产精品人人做人人爱| 国产成人亚洲综合| 久久亚洲综合色一区二区三区| 亚洲天堂视频在线观看| 精品日韩亚洲AV无码一区二区三区| 亚洲国产成人久久| 亚洲JIZZJIZZ妇女| 亚洲日韩在线观看免费视频| 亚洲一区爱区精品无码| 久久亚洲美女精品国产精品| 久久久久精品国产亚洲AV无码| 亚洲国产欧美日韩精品一区二区三区| 无码不卡亚洲成?人片| 国产亚洲精品AA片在线观看不加载 | 亚洲一卡二卡三卡|