Docker之基礎命令實戰

Linxu環境安裝Docker

(示範環境CentOS 7.6, 爲了快速入門所以只介紹其中一種便捷的安裝方法)

安裝依賴包

yum install -y device-mapper-persistent-data lvm2 yum-utils

device-mapper-persistent-data和lvm2是devicemapper存儲驅動所需,yum-utils是下面yum-config-manager所需

添加Docker軟件源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安裝Dcoker

yum install -y docker-ce

啓動確認Docker

systemctl start docker

systemctl status docker

設置Dcoker開機自啓

systemctl enable docker

查看Docker信息

docker info

配置Docker加速器

Docker Hub提供數以萬計的鏡像,在國內需配加速器才穩定和速度

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://4a1df5ef.m.daocloud.io

或者加到docker配置文件/etc/docker/daemon.json

然後重啓docker:systemctl restart docker

[root@localhost ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://4a1df5ef.m.daocloud.io
docker version >= 1.12
{
    "registry-mirrors": ["http://4a1df5ef.m.daocloud.io"],
    "storage-driver": "devicemapper"
}
Success.
You need to restart docker to take effect: sudo systemctl restart docker 
[root@localhost ~]# cat /etc/docker/daemon.json
{
    "registry-mirrors": ["http://4a1df5ef.m.daocloud.io"],
    "storage-driver": "devicemapper"
}
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# 

容器管理

Docker生命週期管理命令粗略圖

創建容器

 docker (container) run [OPTIONS] IMAGE [COMMAND] [ARG...]

下面列出部分常用參數(更詳細的查看docker run --help):

參數 說明
-i,--interactive 交互模式
-t,--tty 分配僞終端
-d,--detach 在後臺運行容器並打印容器ID,不設置默認false
-e,-env list) 設環境變量
-p,--publish list 將容器的端口發佈到主機
-P,--publish-all 將容器所有公開的端口發佈到主機隨機端口
--name string 分配容器名,可用容器名進行管理
-h,--hostname="" 設容器主機名
-m,--memory bytes 設置容器可用內存上限
--memory-swap bytes 設置容器可用的swap分區內存量("-1"無限制交換)
--memory-swappiness int 設置容器可用的swap分區內存量百分比(0-100, 默認-1)
--oom-kill-disable 禁OOM Killer
-c, --cpu-shares int CPU份額(相對權重)
--cpus decimal 容器可使用cpu數
--cpuset-cpus string 設容器可用哪些CPU核心(0-3或0,1), 設容器獨佔CPU
-u,--user string 指定容器用戶名或UID(格式:< name| UID >[:<group|gid>])
--mount 將文件系統掛載附加到容器
-v,--volume list 綁定掛載卷
--volume-driver string 選擇容器的卷驅動
--reatart 容器退出時重啓策略,默認no
-w, --workdir string 容器內的工作目錄
--net="" bridge Docker啓動後創建docker0網橋,不指定就加入這個網橋 (默認)
host 共用宿主機網絡,不單獨分配網絡空間
container:CONTAINER/ID 使用指定容器網絡空間
none 分配一個網絡空間,但不配置,內部自帶DNS發現,同一網絡容器可以相互通信

創建一個Nginx容器在後臺運行

docker (container) run -d nginx

[root@localhost ~]# docker run -d nginx    #-d 後臺運行
Unable to find image 'nginx:latest' locally     #第一次run會先下載到本地
latest: Pulling from library/nginx
743f2d6c1f65: Pull complete 
6bfc4ec4420a: Pull complete 
688a776db95f: Pull complete 
Digest: sha256:e770165fef9e36b990882a4083d8ccf5e29e469a8609bb6b2e3b47d9510e2c8d
Status: Downloaded newer image for nginx:latest
727f48e44dabd794d08914fe3e41899923cd1751f53af0327b01b4cfc7b09211
[root@localhost ~]# docker images   #查看本地鏡像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              53f3fd8007f7        2 days ago          109MB
[root@localhost ~]# docker container ls   #查看運行中容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
727f48e44dab        nginx               "nginx -g 'daemon of鈥   6 minutes ago       Up 6 minutes        80/tcp              compassionate_panini
[root@localhost ~]# docker ps     #查看運行中容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
727f48e44dab        nginx               "nginx -g 'daemon of鈥   6 minutes ago       Up 6 minutes        80/tcp              compassionate_panini

顯示運行中的容器

docker ps 或 docker container ls

[root@localhost project]# docker ps
#隨機生成的容器ID     基於哪個鏡像創建      啓動容器時運行的命令       創建時間             運行狀態             端口映射             容器名
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
e2420149b614        php:v2              "php-fpm"                About an hour ago   Up About an hour                         lnmp_php
799783479e81        nginx:v1            "nginx -g 'daemon of鈥   25 hours ago        Up 24 hours         0.0.0.0:88->80/tcp   lnmp_nginx
9b199a9b5836        centos:7            "/bin/bash"              2 days ago          Up 2 days                                centos7
c9cb6d179649        busybox             "sh"                     4 days ago          Up 4 days                                busybox
e89b0a8d88ff        busybox             "sh"                     9 days ago          Up 9 days                                bs2
7832b11a081c        busybox             "sh"                     9 days ago          Up 9 days                                bs1
9e700ee368ca        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx05
85b964626fca        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx04
80a2a5e35751        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx03
9796a2251876        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx01
3172a2e970f1        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               cocky_chaum
[root@localhost project]# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
e2420149b614        php:v2              "php-fpm"                About an hour ago   Up About an hour                         lnmp_php
799783479e81        nginx:v1            "nginx -g 'daemon of鈥   25 hours ago        Up 24 hours         0.0.0.0:88->80/tcp   lnmp_nginx
9b199a9b5836        centos:7            "/bin/bash"              2 days ago          Up 2 days                                centos7
c9cb6d179649        busybox             "sh"                     4 days ago          Up 4 days                                busybox
e89b0a8d88ff        busybox             "sh"                     9 days ago          Up 9 days                                bs2
7832b11a081c        busybox             "sh"                     9 days ago          Up 9 days                                bs1
9e700ee368ca        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx05
85b964626fca        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx04
80a2a5e35751        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx03
9796a2251876        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx01
3172a2e970f1        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               cocky_chaum

顯示所有容器,包括未運行的

docker ps -a 或 docker container ls -a

[root@localhost project]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                NAMES
e2420149b614        php:v2              "php-fpm"                About an hour ago   Up About an hour                               lnmp_php
799783479e81        nginx:v1            "nginx -g 'daemon of鈥   25 hours ago        Up 24 hours               0.0.0.0:88->80/tcp   lnmp_nginx
9b199a9b5836        centos:7            "/bin/bash"              2 days ago          Up 2 days                                      centos7
49e2ca3fa526        centos:7            "/bin/bash"              3 days ago          Exited (137) 2 days ago                        7-base
c9cb6d179649        busybox             "sh"                     4 days ago          Up 4 days                                      busybox
e89b0a8d88ff        busybox             "sh"                     9 days ago          Up 9 days                                      bs2
7832b11a081c        busybox             "sh"                     9 days ago          Up 9 days                                      bs1
9e700ee368ca        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days                 80/tcp               nginx05
85b964626fca        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days                 80/tcp               nginx04
80a2a5e35751        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days                 80/tcp               nginx03
073f8cb49877        nginx               "nginx -g 'daemon of鈥   9 days ago          Exited (0) 25 hours ago                        nginx02
0eabd05a20ac        nginx               "nginx02 -p 88:80 ng鈥   9 days ago          Created                   80/tcp               nifty_mendeleev
9796a2251876        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days                 80/tcp               nginx01
3172a2e970f1        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days                 80/tcp               cocky_chaum
[root@localhost project]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                NAMES
e2420149b614        php:v2              "php-fpm"                About an hour ago   Up About an hour                               lnmp_php
799783479e81        nginx:v1            "nginx -g 'daemon of鈥   25 hours ago        Up 24 hours               0.0.0.0:88->80/tcp   lnmp_nginx
9b199a9b5836        centos:7            "/bin/bash"              2 days ago          Up 2 days                                      centos7
49e2ca3fa526        centos:7            "/bin/bash"              3 days ago          Exited (137) 2 days ago                        7-base
c9cb6d179649        busybox             "sh"                     4 days ago          Up 4 days                                      busybox
e89b0a8d88ff        busybox             "sh"                     9 days ago          Up 9 days                                      bs2
7832b11a081c        busybox             "sh"                     9 days ago          Up 9 days                                      bs1
9e700ee368ca        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days                 80/tcp               nginx05
85b964626fca        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days                 80/tcp               nginx04
80a2a5e35751        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days                 80/tcp               nginx03
073f8cb49877        nginx               "nginx -g 'daemon of鈥   9 days ago          Exited (0) 25 hours ago                        nginx02
0eabd05a20ac        nginx               "nginx02 -p 88:80 ng鈥   9 days ago          Created                   80/tcp               nifty_mendeleev
9796a2251876        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days                 80/tcp               nginx01
3172a2e970f1        nginx               "nginx -g 'daemon of鈥   9 days ago          Up 9 days                 80/tcp               cocky_chaum

創建一個後臺運行的容器,並設容器名/端口映射/主機名/環境變量

docker run -d --name nginx-1 -p 86:80 -h nginx-1 -e test=1234 nginx

[root@localhost ~]# docker run -d --name nginx-1 -p 86:80 -h nginx-1 -e test=1234 nginx   #宿主機的86端口映射到容器的80端口
87510e62003567d3bef26c0ec28fa29ee3f7807930c0b3789058b6ab1a9db3b0
[root@localhost ~]# docker ps     #查看運行中容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
87510e620035        nginx               "nginx -g 'daemon of鈥   9 seconds ago       Up 4 seconds        0.0.0.0:86->80/tcp   nginx-1
[root@localhost ~]# docker exec -it nginx-1 bash     #進入容器並確認設置是否生效
root@nginx-1:/# hostname 
nginx-1
root@nginx-1:/# echo $test
1234
root@nginx-1:/# exit    #退出當前容器
exit
[root@localhost ~]# netstat -tlnp    #宿主機可以看到設置容器的端口86
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6607/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      6701/master         
tcp6       0      0 :::86                   :::*                    LISTEN      11905/docker-proxy  
tcp6       0      0 :::22                   :::*                    LISTEN      6607/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      6701/master         
[root@localhost ~]# curl http://127.0.0.1:86     #在宿主機訪問映射的端口看是否生效
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@localhost ~]# 

創建一個容器,並限制CPU/內存

docker run -d --name nginx-2 --cpus="0.5" --memory="512M" --oom-kill-disable nginx

[root@localhost ~]# docker run -d --name nginx-2 --cpus="0.5" --memory="512M" --oom-kill-disable nginx  #限制的CPU/內存不能超過宿主機的上限
c974ca01646cc39dafcf8065ad380fd088d75bf800b456a947c1fb1e38a6edda

[root@localhost ~]# docker stats --no-stream nginx-2      #查看容器資源使用及限制
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
c974ca01646c        nginx-2             0.00%               1.352MiB / 512MiB   0.26%               656B / 0B           6.9MB / 0B          2
[root@localhost ~]# 

從宿主機進入運行中的容器

docker exec -it  #交互進入容器;exec也可以在宿主機上遠程執行運行中容器裏命令

docker attach  #進入容器,但[Ctrl]+d或exit退出時候容器也會停止

[root@localhost ~]# docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
8acbd766d3c6        busybox             "sh"                3 minutes ago       Up 3 minutes                            busybox
[root@localhost ~]# docker exec -it busybox sh
/ # ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # exit
[root@localhost ~]# docker attach busybox
/ # ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # exit
[root@localhost ~]# docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS               NAMES
8acbd766d3c6        busybox             "sh"                     5 minutes ago       Exited (0) 8 seconds ago                             busybox
[root@localhost ~]# docker start busybox
busybox
[root@localhost ~]# docker exec busybox ls /
bin
dev
etc
home
proc
root
sys
tmp
usr
var

宿主機和容器相互拷貝文件 

docker cp "宿主機目錄或文件" “容器名字或ID”:"容器路徑"   #從宿主機拷貝到容器

docker cp “容器名字或ID”:"容器路徑" "宿主機目錄或文件"   #從容器拷貝到宿主機

[root@localhost ~]# docker run -itd --name busybox busybox
ff9766324a82187ebd78b2fc38d2d78311fbb434ffa7d0344c86ced9b43431c1
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ff9766324a82        busybox             "sh"                3 seconds ago       Up 3 seconds                            busybox
[root@localhost ~]# touch 123.txt
[root@localhost ~]# docker cp 123.txt busybox:/tmp/
[root@localhost ~]# docker exec busybox ls /tmp/
123.txt
[root@localhost ~]# docker exec -d busybox touch /tmp/456.txt
[root@localhost ~]# docker exec busybox ls /tmp/
123.txt
456.txt
[root@localhost ~]# docker cp busybox:/tmp/456.txt .
[root@localhost ~]# ls
123.txt  456.txt  anaconda-ks.cfg
[root@localhost ~]# mkdir www
[root@localhost ~]# docker cp www busybox:/wwwroot    #拷貝目錄到容器並重命名
[root@localhost ~]# docker exec busybox ls /
bin
dev
etc
home
proc
root
sys
tmp
usr
var
wwwroot
[root@localhost ~]# 

容器和宿主機共享文件

容器裏面的數據隨容器刪除而刪除,要保存/共享數據就掛載文件系統到容器(volume、bind mount、tmpfs mount)

1)volume

多容器間可掛載同樣的卷,共享數據

參數 說明
docker volume create 創建卷
docker volume inspect 顯示一個或多個卷的詳細情況
docker volume ls 列出卷表
docker volume rm 刪除一個或多個卷
docker volume prune 刪除所有未使用的本地卷
[root@localhost ~]# docker volume ls   #查看卷
DRIVER              VOLUME NAME
[root@localhost ~]# docker volume create test-vol   #創建卷
test-vol
[root@localhost ~]# docker volume ls   #查看卷
DRIVER              VOLUME NAME
local               test-vol
[root@localhost ~]# docker volume inspect test-vol  #查看卷詳情
[
    {
        "CreatedAt": "2019-05-15T09:24:37+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/test-vol/_data",   #卷的保存路徑
        "Name": "test-vol",
        "Options": {},
        "Scope": "local"
    }
]
[root@localhost ~]# docker run -itd --name busybox-vol -v test-vol:/mnt busybox  #運行一個使用上面卷的容器
5dde5eac0341d90795045907a9fb980a88d97a91da6d8dd3abef70e2a5402d03
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
5dde5eac0341        busybox             "sh"                4 seconds ago       Up 2 seconds                            busybox-vol
[root@localhost ~]# docker exec -d busybox-vol touch /mnt/test.txt  #在宿主機用exec遠程運行容器命令touch創建一個文件
[root@localhost ~]# docker exec busybox-vol ls /mnt/test.txt  #在宿主機用exec遠程運行容器命令ls看剛纔創建的文件
/mnt/test.txt
[root@localhost ~]# ls /var/lib/docker/volumes/test-vol/_data/  #卷默認存儲路徑
test.txt
local               test-vol
[root@localhost ~]# docker run -itd --name busybox01 --mount src=test-vol,dst=/mnt busybox   #除了-v, 還可以用--mount (docker 17CE後才加入的--mount)
fb9e882b99dcda7430fc6f2f28bf93bf32d4f7145e76a0ade807fcdb8c02cf73
[root@localhost ~]# docker exec busybox01 ls /mnt
test.txt
[root@localhost tmp]# docker volume create --driver local --opt type=nfs --opt o=addr=192.168.101.128,rw --opt device=:/mnt vol-nfs   #使用外部存儲作爲卷
vol-nfs
[root@localhost tmp]# docker volume ls
DRIVER              VOLUME NAME
local               test-vol
local               vol-nfs
[root@localhost tmp]# docker volume inspect vol-nfs
[
    {
        "CreatedAt": "2019-05-16T09:43:45+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/vol-nfs/_data",
        "Name": "vol-nfs",
        "Options": {
            "device": ":/mnt",
            "o": "addr=192.168.101.128,rw",
            "type": "nfs"
        },
        "Scope": "local"
    }
]
[root@localhost tmp]#

2、bind mount

從宿主機共享文件到容器

[root@localhost tmp]# mkdir /tmp/www   #運行前掛載的宿主機目錄要建好
[root@localhost tmp]# docker run -d --name nginx-2 -v /tmp/www:/usr/local/nginx/html nginx   #-v 宿主機路徑:容器路徑。用--mount掛載也OK
d01c794ada8a8b5064c607717df0030497f4f482f204ed736263701d7a2412fd
[root@localhost tmp]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d01c794ada8a        nginx               "nginx -g 'daemon of鈥   9 seconds ago       Up 7 seconds        80/tcp              nginx-2
[root@localhost tmp]# docker inspect nginx-2  #用inpect確認下容器掛載信息
......
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/tmp/www",
                "Destination": "/usr/local/nginx/html",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
......
[root@localhost tmp]# echo > /tmp/www/test.html
[root@localhost tmp]# docker exec nginx-2 ls /usr/local/nginx/html
test.html
[root@localhost tmp]# 

3、tmpfs

掛載到內存中,不寫入文件系統。適合數據不需要保存,而且提高性能

[root@localhost tmp]# docker volume create --driver local --opt type=tmpfs --opt device=tmpfs  --opt o=size=100m,uid=1000 vol-tmpfs   #大小爲100m,uid爲1000
vol-tmpfs
[root@localhost tmp]# docker volume ls
DRIVER              VOLUME NAME
local               test-vol
local               vol-nfs
local               vol-tmpfs
[root@localhost tmp]# docker volume inspect vol-tmpfs
[
    {
        "CreatedAt": "2019-05-16T09:55:20+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/vol-tmpfs/_data",
        "Name": "vol-tmpfs",
        "Options": {
            "device": "tmpfs",
            "o": "size=100m,uid=1000",
            "type": "tmpfs"
        },
        "Scope": "local"
    }
]
[root@localhost tmp]#

查看容器日誌和進程

[root@localhost tmp]# docker run -d --name nginx -p 86:80 nginx
70b50aab941cd791032ccf30f379e97bc5c8f6341148b96ea59709e3ba7731aa
[root@localhost tmp]# curl -l http://127.0.0.1:86
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@localhost tmp]# docker logs nginx    #查看容器日誌
172.17.0.1 - - [16/May/2019:02:36:49 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
[root@localhost tmp]# docker top nginx  #查看容器進程
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                76819               76803               0                   10:36               ?                   00:00:00            nginx: master process nginx -g daemon off;
101                 76858               76819               0                   10:36               ?                   00:00:00            nginx: worker process
[root@localhost tmp]# 

容器網絡配置

--net="" bridge Docker啓動後創建docker0網橋,不指定就加入這個網橋 (默認)
host 共用宿主機網絡,不單獨分配網絡空間
container:CONTAINER/ID 使用指定容器網絡空間
none 分配一個網絡空間,但不配置,內部自帶DNS發現,同一網絡容器可以相互通信

none,自定義網絡

命令 說明
docker network create 創建一個網絡 空間
docker network ls 查看網絡列表
docker network inspect 查看一個或多個網絡詳情
docker network rm 刪除一個或多個網絡
docker network prune 刪除所有未使用的網絡
docker network connect 連接容器網絡
docker network disconnect 斷開容器網絡
[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
828a106004fe        bridge              bridge              local
6b33d0ae2e5d        host                host                local
7360975b9dcb        none                null                local
[root@localhost ~]# docker network create test   #創建一個命名爲test的網絡
1fed7e2c0662e47989d2c5d1b9bfebf7efe496f09e45fc5ef606a99e0c3e01f1
[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
828a106004fe        bridge              bridge              local
6b33d0ae2e5d        host                host                local
7360975b9dcb        none                null                local
1fed7e2c0662        test                bridge              local
[root@localhost ~]# docker container run -itd --name busybox1 --net=test busybox
f7a7de3b06dba85ad0aabf0544a4b4877bb21de285d1b6741cd18d6b332ff98b
[root@localhost ~]# docker container run -itd --name busybox2 --net=test busybox
3a4a2d6b16b16c0ee92fa063adb60e360416e2e20d6e9b35052a4d5f7a37d055
[root@localhost ~]# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
3a4a2d6b16b1        busybox             "sh"                     15 seconds ago      Up 14 seconds                            busybox2
f7a7de3b06db        busybox             "sh"                     21 seconds ago      Up 20 seconds                            busybox1
70b50aab941c        nginx               "nginx -g 'daemon of鈥   2 hours ago         Up 2 hours          0.0.0.0:86->80/tcp   nginx
[root@localhost ~]# docker exec -it busybox1 ip a   #查看busybox1的ip
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
74: eth0@if75: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:13:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.19.0.2/16 brd 172.19.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@localhost ~]# docker exec -it busybox2 ip a   #查看busybox2的ip
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
76: eth0@if77: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:13:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.19.0.3/16 brd 172.19.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@localhost ~]# docker exec -it busybox1 ping 172.19.0.3 -c 2   #測試通過busybox1丟包到busybox2
PING 172.19.0.3 (172.19.0.3): 56 data bytes
64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.072 ms
64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.149 ms

--- 172.19.0.3 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.072/0.110/0.149 ms

從鏡像倉庫拉取鏡像到本地

docker pull nginx

[root@localhost project]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
743f2d6c1f65: Pull complete 
6bfc4ec4420a: Pull complete 
688a776db95f: Pull complete 
Digest: sha256:0e409e180983aea7972c92b0a8ae538d1d3c802fe3a8f795ad8049951894590a
Status: Downloaded newer image for nginx:latest

列出本地鏡像

docker images 或 docker image ls

[root@localhost project]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php                 v2                  0033622fde2f        About an hour ago   527MB
php-56              v2                  83996a2a5a02        2 hours ago         527MB
nginx               v1                  aa9d402c7fca        25 hours ago        371MB
nginx-112           latest              5a078b28d864        45 hours ago        371MB
php                 v1                  157ea6156082        2 days ago          527MB
php-56              latest              12d6c7e75b6a        2 days ago          527MB
nginx               latest              27a188018e18        3 weeks ago         109MB
busybox             latest              af2f74c517aa        5 weeks ago         1.2MB
centos              7                   9f38484d220f        8 weeks ago         202MB
[root@localhost project]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php                 v2                  0033622fde2f        About an hour ago   527MB
php-56              v2                  83996a2a5a02        2 hours ago         527MB
nginx               v1                  aa9d402c7fca        25 hours ago        371MB
nginx-112           latest              5a078b28d864        45 hours ago        371MB
php                 v1                  157ea6156082        2 days ago          527MB
php-56              latest              12d6c7e75b6a        2 days ago          527MB
nginx               latest              27a188018e18        3 weeks ago         109MB
busybox             latest              af2f74c517aa        5 weeks ago         1.2MB
centos              7                   9f38484d220f        8 weeks ago         202MB

 列出包括中間層鏡像的本地鏡像

docker image ls -a

 注:這裏看到的鏡像大小不是實際佔用磁盤的大小,Docker鏡像是多層存儲結構,並且可以繼承複用的,所以不同鏡像可複用相同的基礎鏡像。下面無標籤的鏡像是中間層鏡像,不能刪除,否則會導致引用的鏡像因爲依賴丟失出錯

[root@localhost project]# docker image ls -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php                 v2                  0033622fde2f        About an hour ago   527MB
<none>              <none>              ced621504315        About an hour ago   527MB
php-56              v2                  83996a2a5a02        2 hours ago         527MB
<none>              <none>              d6e0b78cd99f        2 hours ago         527MB
<none>              <none>              a721014faef0        2 hours ago         527MB
<none>              <none>              b43aec20c2ae        2 hours ago         527MB
<none>              <none>              96d124d288ea        2 hours ago         527MB
<none>              <none>              f1746dbc5baa        2 hours ago         404MB
<none>              <none>              cad90b1023e0        2 hours ago         202MB
nginx               v1                  aa9d402c7fca        25 hours ago        371MB
nginx-112           latest              5a078b28d864        45 hours ago        371MB
<none>              <none>              2bf655d88a00        45 hours ago        371MB
<none>              <none>              addff8f76cf9        45 hours ago        371MB
<none>              <none>              371cff142ac2        45 hours ago        371MB
<none>              <none>              d6ee785bb86c        45 hours ago        371MB
<none>              <none>              7f38493054a5        45 hours ago        364MB
php                 v1                  157ea6156082        2 days ago          527MB
<none>              <none>              482b33cdbb22        2 days ago          527MB
php-56              latest              12d6c7e75b6a        2 days ago          527MB
<none>              <none>              eb355c91c0c3        2 days ago          527MB
<none>              <none>              72362a3403b5        2 days ago          527MB
<none>              <none>              88f5357500e4        2 days ago          527MB
<none>              <none>              c1d4b84ccbc5        2 days ago          527MB
<none>              <none>              04add163a0f6        2 days ago          404MB
<none>              <none>              6a1cc8607179        2 days ago          202MB
nginx               latest              27a188018e18        3 weeks ago         109MB
busybox             latest              af2f74c517aa        5 weeks ago         1.2MB
centos              7                   9f38484d220f        8 weeks ago         202MB

 查看某個鏡像中各層情況

 docker history “名字或者ID”

[root@localhost project]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php                 v2                  0033622fde2f        2 hours ago         527MB
php-56              v2                  83996a2a5a02        2 hours ago         527MB
nginx               v1                  aa9d402c7fca        26 hours ago        371MB
nginx-112           latest              5a078b28d864        46 hours ago        371MB
php                 v1                  157ea6156082        2 days ago          527MB
php-56              latest              12d6c7e75b6a        2 days ago          527MB
nginx               latest              27a188018e18        3 weeks ago         109MB
busybox             latest              af2f74c517aa        5 weeks ago         1.2MB
centos              7                   9f38484d220f        8 weeks ago         202MB
[root@localhost project]# docker history nginx
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
27a188018e18        3 weeks ago         /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon鈥  0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop)  STOPSIGNAL SIGTERM           0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop)  EXPOSE 80                    0B                  
<missing>           3 weeks ago         /bin/sh -c ln -sf /dev/stdout /var/log/nginx鈥  0B                  
<missing>           3 weeks ago         /bin/sh -c set -x  && apt-get update  && apt鈥  54.1MB              
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV NJS_VERSION=1.15.12.0鈥  0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV NGINX_VERSION=1.15.12鈥  0B                  
<missing>           6 weeks ago         /bin/sh -c #(nop)  LABEL maintainer=NGINX Do鈥  0B                  
<missing>           6 weeks ago         /bin/sh -c #(nop)  CMD ["bash"]                 0B                  
<missing>           6 weeks ago         /bin/sh -c #(nop) ADD file:4fc310c0cb879c876鈥  55.3MB              
[root@localhost project]# docker history 27a188018e18
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
27a188018e18        3 weeks ago         /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon鈥  0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop)  STOPSIGNAL SIGTERM           0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop)  EXPOSE 80                    0B                  
<missing>           3 weeks ago         /bin/sh -c ln -sf /dev/stdout /var/log/nginx鈥  0B                  
<missing>           3 weeks ago         /bin/sh -c set -x  && apt-get update  && apt鈥  54.1MB              
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV NJS_VERSION=1.15.12.0鈥  0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV NGINX_VERSION=1.15.12鈥  0B                  
<missing>           6 weeks ago         /bin/sh -c #(nop)  LABEL maintainer=NGINX Do鈥  0B                  
<missing>           6 weeks ago         /bin/sh -c #(nop)  CMD ["bash"]                 0B                  
<missing>           6 weeks ago         /bin/sh -c #(nop) ADD file:4fc310c0cb879c876鈥  55.3MB   

查看鏡像詳細情況

 docker inspect "name(:tag) | ID"  或  docker image inspect "name(:tag) | ID" 

[root@localhost project]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php                 v2                  0033622fde2f        3 hours ago         527MB
php-56              v2                  83996a2a5a02        3 hours ago         527MB
nginx               v1                  aa9d402c7fca        27 hours ago        371MB
nginx-112           latest              5a078b28d864        46 hours ago        371MB
nginx               latest              53f3fd8007f7        2 days ago          109MB
php                 v1                  157ea6156082        2 days ago          527MB
php-56              latest              12d6c7e75b6a        2 days ago          527MB
nginx               <none>              27a188018e18        3 weeks ago         109MB
busybox             latest              af2f74c517aa        5 weeks ago         1.2MB
centos              7                   9f38484d220f        8 weeks ago         202MB
[root@localhost project]# docker inspect nginx:v1
[
    {
        "Id": "sha256:aa9d402c7fca8fc81d014c0cffc3d2b7ebd25b772f04dc9384c3b06e96a62904",
        "RepoTags": [
            "nginx:v1"
        ],
        "RepoDigests": [],
        "Parent": "sha256:5a078b28d864f2281109d16d69439648982733d0fd9bd5c482ad221cd6f088c8",
        "Comment": "",
        "Created": "2019-05-09T02:42:10.753920783Z",
        "Container": "",
        "ContainerConfig": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/nginx/sbin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) COPY file:0da0825bc547dd6839d0a1a98c9b77784ef5e76890405da3149009b2c5da4e8b in /usr/local/nginx/conf/ "
            ],
            "ArgsEscaped": true,
            "Image": "sha256:5a078b28d864f2281109d16d69439648982733d0fd9bd5c482ad221cd6f088c8",
            "Volumes": null,
            "WorkingDir": "/usr/local/nginx",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20190305",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "DockerVersion": "18.09.5",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/nginx/sbin"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:5a078b28d864f2281109d16d69439648982733d0fd9bd5c482ad221cd6f088c8",
            "Volumes": null,
            "WorkingDir": "/usr/local/nginx",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20190305",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 370946800,
        "VirtualSize": 370946800,
        "GraphDriver": {
            "Data": {
                "DeviceId": "168",
                "DeviceName": "docker-8:3-16821793-f35c2d0e33f00ff56fb8cab15c0e0c72cb898dfb179558fbaabc753c38c6c50e",
                "DeviceSize": "10737418240"
            },
            "Name": "devicemapper"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:d69483a6face4499acb974449d1303591fcbb5cdce5420f36f8a6607bda11854",
                "sha256:9790e7f584c58ed832d87ab6e4ce7aee9cb9040d94ff954f29d9779547f35a80",
                "sha256:af4f89d1758bb97fc3fc5e86a1bb3bfea2963fd9b4a83e913f4be1b3807fccc9",
                "sha256:cfde45d2e1eb1611e7840943fc263cf631e4ff88727de88ded7725da4a5218eb"
            ]
        },
        "Metadata": {
            "LastTagTime": "2019-05-09T10:42:11.172308504+08:00"
        }
    }
]
[root@localhost project]# 

刪除鏡像

docker rmi "name(:tag) | ID"  或  docker image rm "name(:tag) | ID" 

注:刪除鏡像之前需要停止並刪除正在運行這個鏡像的相關容器

[root@localhost project]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php                 v2                  0033622fde2f        3 hours ago         527MB
php-56              v2                  83996a2a5a02        3 hours ago         527MB
nginx               v1                  aa9d402c7fca        27 hours ago        371MB
nginx-112           latest              5a078b28d864        46 hours ago        371MB
nginx               latest              53f3fd8007f7        2 days ago          109MB
php                 v1                  157ea6156082        2 days ago          527MB
php-56              latest              12d6c7e75b6a        2 days ago          527MB
nginx               <none>              27a188018e18        3 weeks ago         109MB
busybox             latest              af2f74c517aa        5 weeks ago         1.2MB
centos              7                   9f38484d220f        8 weeks ago         202MB
[root@localhost project]# docker rmi busybox
Error response from daemon: conflict: unable to remove repository reference "busybox" (must force) - container 7832b11a081c is using its referenced image af2f74c517aa
[root@localhost project]# docker stop 7832b11a081c
7832b11a081c
[root@localhost project]# docker rmi busybox
Error response from daemon: conflict: unable to remove repository reference "busybox" (must force) - container e89b0a8d88ff is using its referenced image af2f74c517aa
[root@localhost project]# docker stop e89b0a8d88ff
e89b0a8d88ff
[root@localhost project]# docker rmi busybox
Error response from daemon: conflict: unable to remove repository reference "busybox" (must force) - container e89b0a8d88ff is using its referenced image af2f74c517aa
[root@localhost project]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS                NAMES
e2420149b614        php:v2              "php-fpm"                3 hours ago         Up 3 hours                                             lnmp_php
799783479e81        nginx:v1            "nginx -g 'daemon of鈥   26 hours ago        Up 26 hours                       0.0.0.0:88->80/tcp   lnmp_nginx
9b199a9b5836        centos:7            "/bin/bash"              2 days ago          Up 2 days                                              centos7
49e2ca3fa526        centos:7            "/bin/bash"              3 days ago          Exited (137) 2 days ago                                7-base
c9cb6d179649        busybox             "sh"                     4 days ago          Up 4 days                                              busybox
e89b0a8d88ff        busybox             "sh"                     9 days ago          Exited (137) 40 seconds ago                            bs2
7832b11a081c        busybox             "sh"                     9 days ago          Exited (137) About a minute ago                        bs1
9e700ee368ca        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days                         80/tcp               nginx05
85b964626fca        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days                         80/tcp               nginx04
80a2a5e35751        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days                         80/tcp               nginx03
073f8cb49877        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Exited (0) 27 hours ago                                nginx02
0eabd05a20ac        27a188018e18        "nginx02 -p 88:80 ng鈥   9 days ago          Created                           80/tcp               nifty_mendeleev
9796a2251876        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days                         80/tcp               nginx01
3172a2e970f1        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days                         80/tcp               cocky_chaum
[root@localhost project]# docker rm bs1 bs2
bs1
bs2
[root@localhost project]# docker rmi busybox
Error response from daemon: conflict: unable to remove repository reference "busybox" (must force) - container c9cb6d179649 is using its referenced image af2f74c517aa
[root@localhost project]# docker stop  c9cb6d179649
c9cb6d179649
[root@localhost project]# docker rmi busybox
Error response from daemon: conflict: unable to remove repository reference "busybox" (must force) - container c9cb6d179649 is using its referenced image af2f74c517aa
[root@localhost project]# docker rm c9cb6d179649
c9cb6d179649
[root@localhost project]# docker rmi busybox
Untagged: busybox:latest
Untagged: busybox@sha256:f79f7a10302c402c052973e3fa42be0344ae6453245669783a9e16da3d56d5b4
Deleted: sha256:af2f74c517aac1d26793a6ed05ff45b299a037e1a9eefeae5eacda133e70a825
Deleted: sha256:0b97b1c81a3200e9eeb87f17a5d25a50791a16fa08fc41eb94ad15f26516ccea
[root@localhost project]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php                 v2                  0033622fde2f        3 hours ago         527MB
php-56              v2                  83996a2a5a02        3 hours ago         527MB
nginx               v1                  aa9d402c7fca        27 hours ago        371MB
nginx-112           latest              5a078b28d864        46 hours ago        371MB
nginx               latest              53f3fd8007f7        2 days ago          109MB
php                 v1                  157ea6156082        2 days ago          527MB
php-56              latest              12d6c7e75b6a        2 days ago          527MB
nginx               <none>              27a188018e18        3 weeks ago         109MB
centos              7                   9f38484d220f        8 weeks ago         202MB
[root@localhost project]# 

暫停、刪除所有運行中的容器,刪除本地鏡像

docker kill $(docker ps -q) ;  docker rm $(docker ps -aq) ; docker rmi $(docker images -qa)

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
f5c1eb77fff1        busybox             "sh"                     About an hour ago   Up About an hour                        buxybox
727f48e44dab        nginx               "nginx -g 'daemon of鈥   2 days ago          Up 2 days           80/tcp              compassionate_panini
[root@localhost ~]# docker ps -q
f5c1eb77fff1
727f48e44dab
[root@localhost ~]# docker kill $(docker ps -q)
f5c1eb77fff1
727f48e44dab
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
f5c1eb77fff1        busybox             "sh"                     About an hour ago   Exited (137) 2 minutes ago                       buxybox
727f48e44dab        nginx               "nginx -g 'daemon of鈥   2 days ago          Exited (137) 2 minutes ago                       compassionate_panini
[root@localhost ~]# docker ps -aq
f5c1eb77fff1
727f48e44dab
[root@localhost ~]# docker rm $(docker ps -aq)
f5c1eb77fff1
727f48e44dab
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              64f5d945efcc        3 days ago          1.2MB
nginx               latest              53f3fd8007f7        4 days ago          109MB
[root@localhost ~]# docker images -qa
64f5d945efcc
53f3fd8007f7
[root@localhost ~]# docker rmi $(docker images -qa)
Untagged: busybox:latest
Untagged: busybox@sha256:4b6ad3a68d34da29bf7c8ccb5d355ba8b4babcad1f99798204e7abb43e54ee3d
Deleted: sha256:64f5d945efcc0f39ab11b3cd4ba403cc9fefe1fa3613123ca016cf3708e8cafb
Deleted: sha256:d1156b98822dccbb924b4e5fe16465a7ecac8bfc81d726177bed403a8e70c972
Untagged: nginx:latest
Untagged: nginx@sha256:e770165fef9e36b990882a4083d8ccf5e29e469a8609bb6b2e3b47d9510e2c8d
Deleted: sha256:53f3fd8007f76bd23bf663ad5f5009c8941f63828ae458cef584b5f85dc0a7bf
Deleted: sha256:50183b8336fcc9552a55c86895cdfdfb6f1bb349a951da638f22f645ce235926
Deleted: sha256:093a0ead7cedbef266292a1b08e478489ed6584170f0d82127c5ac9a10fd8303
Deleted: sha256:6270adb5794c6987109e54af00ab456977c5d5cc6f1bc52c1ce58d32ec0f15f4
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@localhost ~]# 

Docker鏡像導出導入

導出容器爲文件

docker export "name(:tag) | ID" > container.tar

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
68014318583f        busybox             "sh"                     24 minutes ago      Up 24 minutes                            busybox
e2420149b614        php:v2              "php-fpm"                4 hours ago         Up 4 hours                               lnmp_php
799783479e81        nginx:v1            "nginx -g 'daemon of鈥   28 hours ago        Up 27 hours         0.0.0.0:88->80/tcp   lnmp_nginx
9b199a9b5836        centos:7            "/bin/bash"              2 days ago          Up 2 days                                centos7
9e700ee368ca        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx05
85b964626fca        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx04
80a2a5e35751        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx03
9796a2251876        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx01
3172a2e970f1        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               cocky_chaum
[root@localhost ~]# docker export busybox > busybox.tar
[root@localhost ~]# ll
total 1392
-rw-------. 1 root root    1379 Apr 29 18:57 anaconda-ks.cfg
-rw-r--r--  1 root root 1420800 May 10 14:50 busybox.tar
drwxr-xr-x  4 root root      33 May  7 09:30 lnmp
[root@localhost ~]# docker export 68014318583f > busybox01.tar
[root@localhost ~]# ll
total 2780
-rw-------. 1 root root    1379 Apr 29 18:57 anaconda-ks.cfg
-rw-r--r--  1 root root 1420800 May 10 14:53 busybox01.tar
-rw-r--r--  1 root root 1420800 May 10 14:50 busybox.tar
drwxr-xr-x  4 root root      33 May  7 09:30 lnmp

用import導入export出來的文件爲鏡像

docker import "CONTAINER:ID" 

docker import - "REPOSITORY:TAG" < container.tar 或 cat container.tar | docker import - "REPOSITORY:TAG"  #指定鏡像名和標籤

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php                 v2                  0033622fde2f        4 hours ago         527MB
php-56              v2                  83996a2a5a02        4 hours ago         527MB
busybox             latest              64f5d945efcc        10 hours ago        1.2MB
nginx               v1                  aa9d402c7fca        28 hours ago        371MB
nginx-112           latest              5a078b28d864        2 days ago          371MB
nginx               latest              53f3fd8007f7        2 days ago          109MB
php                 v1                  157ea6156082        2 days ago          527MB
php-56              latest              12d6c7e75b6a        3 days ago          527MB
nginx               <none>              27a188018e18        3 weeks ago         109MB
centos              7                   9f38484d220f        8 weeks ago         202MB
[root@localhost ~]# docker import busybox.tar 
sha256:0c804436c47a89cff5f836776beb759f3ef6583f49a399e4913508f7c3a3cbd0
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              0c804436c47a        10 seconds ago      1.2MB
php                 v2                  0033622fde2f        4 hours ago         527MB
php-56              v2                  83996a2a5a02        4 hours ago         527MB
busybox             latest              64f5d945efcc        10 hours ago        1.2MB
nginx               v1                  aa9d402c7fca        28 hours ago        371MB
nginx-112           latest              5a078b28d864        2 days ago          371MB
nginx               latest              53f3fd8007f7        2 days ago          109MB
php                 v1                  157ea6156082        2 days ago          527MB
php-56              latest              12d6c7e75b6a        3 days ago          527MB
nginx               <none>              27a188018e18        3 weeks ago         109MB
centos              7                   9f38484d220f        8 weeks ago         202MB
[root@localhost ~]# docker import - busybox:v1 < busybox.tar 
sha256:3a8fed956b0d249f92c6ca18535ac2dd7a1f67b3a289a8aa8536e67b03af9dfe
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             v1                  3a8fed956b0d        3 seconds ago       1.2MB
<none>              <none>              0c804436c47a        2 minutes ago       1.2MB
php                 v2                  0033622fde2f        4 hours ago         527MB
php-56              v2                  83996a2a5a02        4 hours ago         527MB
busybox             latest              64f5d945efcc        10 hours ago        1.2MB
nginx               v1                  aa9d402c7fca        28 hours ago        371MB
nginx-112           latest              5a078b28d864        2 days ago          371MB
nginx               latest              53f3fd8007f7        2 days ago          109MB
php                 v1                  157ea6156082        2 days ago          527MB
php-56              latest              12d6c7e75b6a        3 days ago          527MB
nginx               <none>              27a188018e18        3 weeks ago         109MB
centos              7                   9f38484d220f        8 weeks ago         202MB
[root@localhost ~]# ^C
[root@localhost ~]# cat busybox.tar | docker import - busybox:v2
sha256:43298b31d867db420d54dd5f64f5d0c9b7907d3eb6fa3c6e4199cd1d0c42a68b
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             v2                  43298b31d867        6 seconds ago       1.2MB
busybox             v1                  3a8fed956b0d        2 minutes ago       1.2MB
<none>              <none>              0c804436c47a        4 minutes ago       1.2MB
php                 v2                  0033622fde2f        4 hours ago         527MB
php-56              v2                  83996a2a5a02        4 hours ago         527MB
busybox             latest              64f5d945efcc        10 hours ago        1.2MB
nginx               v1                  aa9d402c7fca        28 hours ago        371MB
nginx-112           latest              5a078b28d864        2 days ago          371MB
nginx               latest              53f3fd8007f7        2 days ago          109MB
php                 v1                  157ea6156082        2 days ago          527MB
php-56              latest              12d6c7e75b6a        3 days ago          527MB
nginx               <none>              27a188018e18        3 weeks ago         109MB
centos              7                   9f38484d220f        8 weeks ago         202MB

鏡像保存加載

docker save “鏡像名:標籤 | ID” > image.tar    #不指定標籤就會把相同名字的都保存出來了,看下面例子的images.tar大小

docker load < image.tar 或 docker load --i image.tar

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             v2                  43298b31d867        22 minutes ago      1.2MB
busybox             v1                  3a8fed956b0d        24 minutes ago      1.2MB
<none>              <none>              0c804436c47a        27 minutes ago      1.2MB
php                 v2                  0033622fde2f        5 hours ago         527MB
php-56              v2                  83996a2a5a02        5 hours ago         527MB
busybox             latest              64f5d945efcc        10 hours ago        1.2MB
nginx               v1                  aa9d402c7fca        29 hours ago        371MB
nginx-112           latest              5a078b28d864        2 days ago          371MB
nginx               latest              53f3fd8007f7        2 days ago          109MB
php                 v1                  157ea6156082        2 days ago          527MB
php-56              latest              12d6c7e75b6a        3 days ago          527MB
nginx               <none>              27a188018e18        3 weeks ago         109MB
centos              7                   9f38484d220f        8 weeks ago         202MB
[root@localhost ~]# docker save busybox > image.tar
[root@localhost ~]# ll
total 5572
-rw-------. 1 root root    1379 Apr 29 18:57 anaconda-ks.cfg
-rw-r--r--  1 root root 1420800 May 10 14:53 busybox01.tar
-rw-r--r--  1 root root 1420800 May 10 14:50 busybox.tar
-rw-r--r--  1 root root 2856448 May 10 15:22 image.tar
drwxr-xr-x  4 root root      33 May  7 09:30 lnmp
[root@localhost ~]# docker save busybox:v2 > image.tar
[root@localhost ~]# ll
total 4176
-rw-------. 1 root root    1379 Apr 29 18:57 anaconda-ks.cfg
-rw-r--r--  1 root root 1420800 May 10 14:53 busybox01.tar
-rw-r--r--  1 root root 1420800 May 10 14:50 busybox.tar
-rw-r--r--  1 root root 1428992 May 10 15:23 image.tar
drwxr-xr-x  4 root root      33 May  7 09:30 lnmp
[root@localhost ~]# docker load < image.tar 
Loaded image: busybox:v2
[root@localhost ~]# docker load < image.tar 
Loaded image: busybox:v2
[root@localhost ~]# docker save busybox:v1 > image.tar
[root@localhost ~]# docker load < image.tar 
Loaded image: busybox:v1
[root@localhost ~]# docker load -i image.tar 
Loaded image: busybox:v1

注:export導出的鏡像會比save保存出來的小,export直接拿容器的,會丟失鏡像的歷史,也無法回滾之前的鏡像層

保存容器爲鏡像

docker commit "容器ID" "鏡像名:ID"

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
68014318583f        busybox             "sh"                     About an hour ago   Up About an hour                         busybox
e2420149b614        php:v2              "php-fpm"                5 hours ago         Up 5 hours                               lnmp_php
799783479e81        nginx:v1            "nginx -g 'daemon of鈥   29 hours ago        Up 28 hours         0.0.0.0:88->80/tcp   lnmp_nginx
9b199a9b5836        centos:7            "/bin/bash"              2 days ago          Up 2 days                                centos7
9e700ee368ca        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx05
85b964626fca        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx04
80a2a5e35751        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx03
9796a2251876        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               nginx01
3172a2e970f1        27a188018e18        "nginx -g 'daemon of鈥   9 days ago          Up 9 days           80/tcp               cocky_chaum
[root@localhost ~]# docker commit 68014318583f busybox:v3
sha256:3874ab49e818daea7861d87c76f7c0533ab4b0f4ea3e8ed5c37f7cd447ffa057
[root@localhost ~]# docker images busybox:v3
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             v3                  3874ab49e818        2 minutes ago       1.2MB

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章