1. 程式人生 > 實用技巧 >java 常用時間操作類,計算到期提醒,N年後,N月後的日期

java 常用時間操作類,計算到期提醒,N年後,N月後的日期

安裝docker

https://docs.docker.com/engine/install/centos/

docker version檢視是否安裝成功

[root@iZbp10a8w2ct7pZ ~]# docker run hello-world        # 本地沒有hello-world,從倉庫pull
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5
Status: Downloaded newer image 
for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64)
3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run
-it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/ [root@iZbp10a8w2ct7pZ ~]# docker images # 檢視docker映象 REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 8 months ago 13.3kB [root@iZbp10a8w2ct7pZ ~]#
View Code

阿里雲容器映象加速配置使用

從阿里雲docker庫中下載,代替DockerHub網站下載

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://6gjccqh6.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker
View Code

底層原理

docker是一個client-server結構系統,docker守護程序執行在主機上,通過socket從客戶端訪問。
DockerServer接收到Docker-Client指令,就會執行這個命令。
View Code

常用命令

docker version            # 顯示docker版本資訊
docker info                # 顯示docker系統資訊,包括映象和容器數量
docker --help            
docker images --help    # 幫助命令

更多命令https://docs.docker.com/engine/reference/commandline/docker/
View Code

映象命令

[root@iZbp10a8w2ct7pZ ~]# docker images        # 檢視docker映象
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        8 months ago        13.3kB

REPOSITORY     # 映象的倉庫源
TAG            # 映象的標籤
IMAGE ID     # 映象id
CREATED     # 映象建立時間
SIZE        # 映象大小


docker images -a, docker images --all             # 列出所有映象
docker images -q, docker images --quiet          # 只顯示映象id

[root@iZbp10a8w2ct7pZ ~]# docker images -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        8 months ago        13.3kB
[root@iZbp10a8w2ct7pZ ~]# docker images -q
bf756fb1ae65
[root@iZbp10a8w2ct7pZ ~]# docker images -aq
bf756fb1ae65


搜尋命令
    docker search 映象名        # docker搜尋命令,也可去DockerHub去搜索,結果一樣
    docker search mysql --filert=STARS=5000

dock pull mysql        # 下載映象

    [root@iZbp10a8w2ct7pZ ~]# docker pull mysql:5.7        # docker pull預設最新版本,:5.7指定版本下載
    5.7: Pulling from library/mysql
    bf5952930446: Pull complete                         # 分層下載,docker image核心,聯合檔案系統
    8254623a9871: Pull complete 
    938e3e06dac4: Pull complete 
    ea28ebf28884: Pull complete 
    f3cef38785c2: Pull complete 
    894f9792565a: Pull complete 
    1d8a57523420: Pull complete 
    5f09bf1d31c1: Pull complete 
    1591b28581e8: Pull complete 
    96ef942f7603: Pull complete 
    2e009731422e: Pull complete 
    Digest: sha256:1a83136153b238b659b0887ceb4e08275473af1eab2e67de4c22b37c5f4130cd        # 簽名
    Status: Downloaded newer image for mysql:5.7
    docker.io/library/mysql:5.7                        # 映象地址,docker pull mysql:5.7等同於docker pull docker.io/library/mysql:5.7



docker rmi -f 容器id                         # 刪除容器
docker rmi -f 容器id 容器id 容器id 容器id        # 刪除多個容器
docker rmi -f $(docker images -aq)            # 刪除全部容器

    [root@iZbp10a8w2ct7pZ ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    mysql               5.7                 d589ea3123e0        3 days ago          448MB
    hello-world         latest              bf756fb1ae65        8 months ago        13.3kB
    [root@iZbp10a8w2ct7pZ ~]# docker rmi -f d589ea3123e0
    Untagged: mysql:5.7
    Untagged: mysql@sha256:1a83136153b238b659b0887ceb4e08275473af1eab2e67de4c22b37c5f4130cd
    Deleted: sha256:d589ea3123e06ae2cfb548f3a697fc82986878afb1ef7b4fe1d8a3981d420620
    Deleted: sha256:a014b34bfc08ca4a4fd6a3ddbc9882b4dc3b192d0a0b1e864662cd1d23ea7567
    Deleted: sha256:abf85fe645d8297b56e0363050e6df5e1ccc0649d4a71dc2c2f978a1de8ab1da
    Deleted: sha256:4299450e41032ab45b35e5d929bfebfa6e3d06528b23b02dc1223fcff7fb0667
    Deleted: sha256:165805124136fdee738ed19021a522bb53de75c2ca9b6ca87076f51c27385fd7
    Deleted: sha256:904abdc2d0bea0edbb1a8171d1a1353fa6de22150a9c5d81358799a5b6c38c8d
    Deleted: sha256:d26f7649f78cf789267fbbca8aeb234932e230109c728632c6b9fbc60ca5591b
    Deleted: sha256:7fcf7796e23ea5b42eb3bbd5bec160ba5f5f47ecb239053762f9cf766c143942
    Deleted: sha256:826130797a5760bcd2bb19a6c6d92b5f4860bbffbfa954f5d3fc627904a76e9d
    Deleted: sha256:53e0181c63e41fb85bce681ec8aadfa323cd00f70509107f7001a1d0614e5adf
    Deleted: sha256:d6854b83e83d7eb48fb0ef778c58a8b839adb932dd036a085d94a7c2db98f890
    Deleted: sha256:d0f104dc0a1f9c744b65b23b3fd4d4d3236b4656e67f776fe13f8ad8423b955c
    [root@iZbp10a8w2ct7pZ ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              bf756fb1ae65        8 months ago        13.3kB
    [root@iZbp10a8w2ct7pZ ~]# docker rmi -f $(docker images -aq)
    Untagged: hello-world:latest
    Untagged: hello-world@sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5
    Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
    [root@iZbp10a8w2ct7pZ ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
View Code

容器命令

進入容器
    docker run -it         # 使用互動方式執行,進入容器檢視內容

    [root@iZbp10a8w2ct7pZ ~]# docker pull centos
    ...
    [root@iZbp10a8w2ct7pZ ~]# docker run -it centos /bin/bash        # 啟動並進入容器
    [root@ba8ce9ec552c /]# ls                                         # 檢視容器內centos,基礎版本,很多命令不完善
    bin  etc   lib      lost+found  mnt  proc  run   srv  tmp  var
    dev  home  lib64  media       opt  root  sbin  sys  usr
    [root@ba8ce9ec552c /]# exit                                        # 從容器中退回主機
    exit
    [root@iZbp10a8w2ct7pZ ~]# cd /
    [root@iZbp10a8w2ct7pZ /]# ls
    bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
    boot  etc  lib   media  opt  root  sbin  sys  usr

檢視容器
    docker ps         # 列出所有執行的容器
    docker ps -a     # 列出當前正在執行的容器和歷史執行過的容器
    docker ps -n=?    # 顯示最近建立的容器
    docker ps -q     # 只顯示容器的編號

    [root@iZbp10a8w2ct7pZ /]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@iZbp10a8w2ct7pZ /]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
    ba8ce9ec552c        centos              "/bin/bash"         9 minutes ago       Exited (0) 3 minutes ago                       laughing_satoshi
    46d8229f9713        bf756fb1ae65        "/hello"            19 hours ago        Exited (0) 19 hours ago                        happy_wozniak
    [root@iZbp10a8w2ct7pZ /]# docker ps -n=1
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    ba8ce9ec552c        centos              "/bin/bash"         18 minutes ago      Exited (0) 12 minutes ago                       laughing_satoshi
    [root@iZbp10a8w2ct7pZ /]# docker ps -aq
    ba8ce9ec552c
    46d8229f9713

退出容器
    exit             # 容器停止並退出容器
    ctrl + p + q     # 容器不停止,退出容器

    [root@iZbp10a8w2ct7pZ /]# docker run -it centos /bin/bash
    [root@b829a2218ef7 /]# [root@iZbp10a8w2ct7pZ /]#                 # ctrl + p + q
    [root@iZbp10a8w2ct7pZ /]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
    b829a2218ef7        centos              "/bin/bash"         About a minute ago   Up About a minute                       tender_maxwell
    [root@iZbp10a8w2ct7pZ /]# 


刪除容器
    docker rm 容器id                    # 刪除指定容器,不能刪除正在執行的容器,強制刪除的話,docker rm -f 容器id
    docker rm -f $(docker ps -aq)    # 刪除所有容器

    [root@iZbp10a8w2ct7pZ /]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    b829a2218ef7        centos              "/bin/bash"         5 minutes ago       Up 5 minutes                                    tender_maxwell
    ba8ce9ec552c        centos              "/bin/bash"         27 minutes ago      Exited (0) 22 minutes ago                       laughing_satoshi
    46d8229f9713        bf756fb1ae65        "/hello"            19 hours ago        Exited (0) 19 hours ago                         happy_wozniak
    [root@iZbp10a8w2ct7pZ /]# docker rm ba8ce9ec552c
    ba8ce9ec552c
    [root@iZbp10a8w2ct7pZ /]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
    b829a2218ef7        centos              "/bin/bash"         5 minutes ago       Up 5 minutes                                  tender_maxwell
    46d8229f9713        bf756fb1ae65        "/hello"            19 hours ago        Exited (0) 19 hours ago                       happy_wozniak
    [root@iZbp10a8w2ct7pZ /]# docker rm b829a2218ef7
    Error response from daemon: You cannot remove a running container b829a2218ef7dba121e92cad4dda9e56ca8cac479d37fe378f302e5f6be6daf4. Stop the container before attempting removal or force remove
    [root@iZbp10a8w2ct7pZ /]# docker rm -f $(docker ps -aq)
    b829a2218ef7
    46d8229f9713
    [root@iZbp10a8w2ct7pZ /]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES


啟動和停止容器的操作
    docker start 容器id
    docker restart 容器id
    docker stop 容器id
    docker kill 容器id


常用的其他命令

    docker run -d 映象名        # 後臺啟動映象

    [root@iZbp10a8w2ct7pZ /]# docker run -d centos
    745994dafb897aabdde808019d054f8ccbe392b87ff8b7fd5e0557b41656db97
    [root@iZbp10a8w2ct7pZ /]# docker ps      # 發現centos停止了,因為docker run -d centos是使用後臺執行,docker必須要有一個前臺程序,docker發現沒有應用,就會停止                    
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@iZbp10a8w2ct7pZ /]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    745994dafb89        centos              "/bin/bash"         36 seconds ago      Exited (0) 36 seconds ago                       frosty_payne


檢視日誌
    docker logs --help
    docker logs -tf --tail 10 容器id

    [root@iZbp10a8w2ct7pZ /]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    4ffb701fc4e7        centos              "/bin/bash"         4 minutes ago       Up 4 minutes                            kind_sammet
    [root@iZbp10a8w2ct7pZ /]# docker logs -tf --tail 10 4ffb701fc4e7            # docker無日誌
    ^C
    [root@iZbp10a8w2ct7pZ /]# docker run -d centos /bin/sh -c 'while true;do echo test;sleep 1;done'        # 啟動新映象並寫入日誌
    5981cc92455a011175fa792c724f0c1c4306fe66cc20797565159b9f08d1f7c1
    [root@iZbp10a8w2ct7pZ /]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    5981cc92455a        centos              "/bin/sh -c 'while t…"   5 seconds ago       Up 4 seconds                            interesting_joliot
    4ffb701fc4e7        centos              "/bin/bash"              5 minutes ago       Up 5 minutes                            kind_sammet
    [root@iZbp10a8w2ct7pZ /]# docker logs -tf --tail 5 5981cc92455a                                         # 查詢新映象日誌
    2020-09-09T06:42:52.369272302Z test
    2020-09-09T06:42:53.371656047Z test
    2020-09-09T06:42:54.373763782Z test
    2020-09-09T06:42:55.375862725Z test
    2020-09-09T06:42:56.377941891Z test
    ^C
    [root@iZbp10a8w2ct7pZ /]# 



檢視容器中程序資訊

    docker top 容器id

    [root@iZbp10a8w2ct7pZ /]# docker run -it centos /bin/bash
    [root@639db7579b14 /]# [root@iZbp10a8w2ct7pZ /]# 
    [root@iZbp10a8w2ct7pZ /]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    639db7579b14        centos              "/bin/bash"         14 seconds ago      Up 12 seconds                           angry_liskov
    [root@iZbp10a8w2ct7pZ /]# docker top 639db7579b14
    UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
    root                408484              408467              0                   14:53               pts/0               00:00:00            /bin/bash
    [root@iZbp10a8w2ct7pZ /]# 


檢視映象的元資料

    docker inspect --help
    docker inspect 容器id

    [root@iZbp10a8w2ct7pZ /]# docker inspect 639db7579b14
    [
        {
            "Id": "639db7579b1463b90adcd5aabd03b57c2690a7b38056626ebc8beff63e299320",
            "Created": "2020-09-09T06:53:23.993543845Z",
            "Path": "/bin/bash",
            "Args": [],
            "State": {
                "Status": "running",
                "Running": true,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 408484,
                "ExitCode": 0,
                "Error": "",
                "StartedAt": "2020-09-09T06:53:24.50544931Z",
                "FinishedAt": "0001-01-01T00:00:00Z"
            },
            "Image": "sha256:0d120b6ccaa8c5e149176798b3501d4dd1885f961922497cd0abef155c869566",
            "ResolvConfPath": "/var/lib/docker/containers/639db7579b1463b90adcd5aabd03b57c2690a7b38056626ebc8beff63e299320/resolv.conf",
            "HostnamePath": "/var/lib/docker/containers/639db7579b1463b90adcd5aabd03b57c2690a7b38056626ebc8beff63e299320/hostname",
            "HostsPath": "/var/lib/docker/containers/639db7579b1463b90adcd5aabd03b57c2690a7b38056626ebc8beff63e299320/hosts",
            "LogPath": "/var/lib/docker/containers/639db7579b1463b90adcd5aabd03b57c2690a7b38056626ebc8beff63e299320/639db7579b1463b90adcd5aabd03b57c2690a7b38056626ebc8beff63e299320-json.log",
            "Name": "/angry_liskov",
            "RestartCount": 0,
            "Driver": "overlay2",
            "Platform": "linux",
            "MountLabel": "",
            "ProcessLabel": "",
            "AppArmorProfile": "",
            "ExecIDs": null,
            "HostConfig": {
                "Binds": null,
                "ContainerIDFile": "",
                "LogConfig": {
                    "Type": "json-file",
                    "Config": {}
                },
                "NetworkMode": "default",
                "PortBindings": {},
                "RestartPolicy": {
                    "Name": "no",
                    "MaximumRetryCount": 0
                },
                "AutoRemove": false,
                "VolumeDriver": "",
                "VolumesFrom": null,
                "CapAdd": null,
                "CapDrop": null,
                "Capabilities": null,
                "Dns": [],
                "DnsOptions": [],
                "DnsSearch": [],
                "ExtraHosts": null,
                "GroupAdd": null,
                "IpcMode": "private",
                "Cgroup": "",
                "Links": null,
                "OomScoreAdj": 0,
                "PidMode": "",
                "Privileged": false,
                "PublishAllPorts": false,
                "ReadonlyRootfs": false,
                "SecurityOpt": null,
                "UTSMode": "",
                "UsernsMode": "",
                "ShmSize": 67108864,
                "Runtime": "runc",
                "ConsoleSize": [
                    0,
                    0
                ],
                "Isolation": "",
                "CpuShares": 0,
                "Memory": 0,
                "NanoCpus": 0,
                "CgroupParent": "",
                "BlkioWeight": 0,
                "BlkioWeightDevice": [],
                "BlkioDeviceReadBps": null,
                "BlkioDeviceWriteBps": null,
                "BlkioDeviceReadIOps": null,
                "BlkioDeviceWriteIOps": null,
                "CpuPeriod": 0,
                "CpuQuota": 0,
                "CpuRealtimePeriod": 0,
                "CpuRealtimeRuntime": 0,
                "CpusetCpus": "",
                "CpusetMems": "",
                "Devices": [],
                "DeviceCgroupRules": null,
                "DeviceRequests": null,
                "KernelMemory": 0,
                "KernelMemoryTCP": 0,
                "MemoryReservation": 0,
                "MemorySwap": 0,
                "MemorySwappiness": null,
                "OomKillDisable": false,
                "PidsLimit": null,
                "Ulimits": null,
                "CpuCount": 0,
                "CpuPercent": 0,
                "IOMaximumIOps": 0,
                "IOMaximumBandwidth": 0,
                "MaskedPaths": [
                    "/proc/asound",
                    "/proc/acpi",
                    "/proc/kcore",
                    "/proc/keys",
                    "/proc/latency_stats",
                    "/proc/timer_list",
                    "/proc/timer_stats",
                    "/proc/sched_debug",
                    "/proc/scsi",
                    "/sys/firmware"
                ],
                "ReadonlyPaths": [
                    "/proc/bus",
                    "/proc/fs",
                    "/proc/irq",
                    "/proc/sys",
                    "/proc/sysrq-trigger"
                ]
            },
            "GraphDriver": {
                "Data": {
                    "LowerDir": "/var/lib/docker/overlay2/3e8a3bec4a8c09a4a966c912e60b907743689bd431769026b824a056feab9318-init/diff:/var/lib/docker/overlay2/aa3d962c927b7e4f593f39a25dfe5fa6e51de31b35f067627a5ecf6d769f6023/diff",
                    "MergedDir": "/var/lib/docker/overlay2/3e8a3bec4a8c09a4a966c912e60b907743689bd431769026b824a056feab9318/merged",
                    "UpperDir": "/var/lib/docker/overlay2/3e8a3bec4a8c09a4a966c912e60b907743689bd431769026b824a056feab9318/diff",
                    "WorkDir": "/var/lib/docker/overlay2/3e8a3bec4a8c09a4a966c912e60b907743689bd431769026b824a056feab9318/work"
                },
                "Name": "overlay2"
            },
            "Mounts": [],
            "Config": {
                "Hostname": "639db7579b14",
                "Domainname": "",
                "User": "",
                "AttachStdin": true,
                "AttachStdout": true,
                "AttachStderr": true,
                "Tty": true,
                "OpenStdin": true,
                "StdinOnce": true,
                "Env": [
                    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
                ],
                "Cmd": [
                    "/bin/bash"
                ],
                "Image": "centos",
                "Volumes": null,
                "WorkingDir": "",
                "Entrypoint": null,
                "OnBuild": null,
                "Labels": {
                    "org.label-schema.build-date": "20200809",
                    "org.label-schema.license": "GPLv2",
                    "org.label-schema.name": "CentOS Base Image",
                    "org.label-schema.schema-version": "1.0",
                    "org.label-schema.vendor": "CentOS"
                }
            },
            "NetworkSettings": {
                "Bridge": "",
                "SandboxID": "abe33ebc01096550b046cd1e5c179529cdcbe70dabc4359c5ce2e50424978e32",
                "HairpinMode": false,
                "LinkLocalIPv6Address": "",
                "LinkLocalIPv6PrefixLen": 0,
                "Ports": {},
                "SandboxKey": "/var/run/docker/netns/abe33ebc0109",
                "SecondaryIPAddresses": null,
                "SecondaryIPv6Addresses": null,
                "EndpointID": "ee3ba1aa46f130548f0ffb0ebead5bc5dc0a3270aca6e101478f4283a448c52c",
                "Gateway": "172.17.0.1",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "IPAddress": "172.17.0.2",
                "IPPrefixLen": 16,
                "IPv6Gateway": "",
                "MacAddress": "02:42:ac:11:00:02",
                "Networks": {
                    "bridge": {
                        "IPAMConfig": null,
                        "Links": null,
                        "Aliases": null,
                        "NetworkID": "3c4d44d1a438f03e8cf11b6a0498ac3bda27e88cfd972a8fd8a1bd4b20656755",
                        "EndpointID": "ee3ba1aa46f130548f0ffb0ebead5bc5dc0a3270aca6e101478f4283a448c52c",
                        "Gateway": "172.17.0.1",
                        "IPAddress": "172.17.0.2",
                        "IPPrefixLen": 16,
                        "IPv6Gateway": "",
                        "GlobalIPv6Address": "",
                        "GlobalIPv6PrefixLen": 0,
                        "MacAddress": "02:42:ac:11:00:02",
                        "DriverOpts": null
                    }
                }
            }
        }
    ]


進入當前正在執行的容器

    docker exec -it 容器id bashShell        # 進入容器後開啟新的終端,在容器內操作(常用)
    docker attach 容器id                    # 進入容器內正在執行的終端,不會有新的程序

    [root@iZbp10a8w2ct7pZ /]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    639db7579b14        centos              "/bin/bash"         2 hours ago         Up 2 hours                              angry_liskov
    [root@iZbp10a8w2ct7pZ /]# docker exec -it 639db7579b14 /bin/bash
    [root@639db7579b14 /]# ls
    bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    [root@639db7579b14 /]# ps -ef
    UID          PID    PPID  C STIME TTY          TIME CMD
    root           1       0  0 06:53 pts/0    00:00:00 /bin/bash
    root          14       0  1 08:54 pts/1    00:00:00 /bin/bash
    root          28      14  0 08:54 pts/1    00:00:00 ps -ef
    [root@iZbp10a8w2ct7pZ ~]# docker attach 639db7579b14
    [root@639db7579b14 /]# ps -ef
    UID          PID    PPID  C STIME TTY          TIME CMD
    root           1       0  0 06:53 pts/0    00:00:00 /bin/bash
    root          29       1  0 09:09 pts/0    00:00:00 ps -ef



從容器內拷貝檔案到主機

    docker cp 容器id:容器內檔案目錄 目的主機路徑

    [root@iZbp10a8w2ct7pZ /]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    639db7579b14        centos              "/bin/bash"         3 hours ago         Up About a minute                       angry_liskov
    [root@iZbp10a8w2ct7pZ /]# docker attach 639db7579b14
    [root@639db7579b14 /]# cd /home
    [root@639db7579b14 home]# ls
    [root@639db7579b14 home]# touch test.txt
    [root@639db7579b14 home]# ls
    test.txt
    [root@639db7579b14 home]# exit
    exit
    [root@iZbp10a8w2ct7pZ /]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@iZbp10a8w2ct7pZ /]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    639db7579b14        centos              "/bin/bash"         3 hours ago         Exited (0) 19 seconds ago                       angry_liskov
    [root@iZbp10a8w2ct7pZ /]# docker cp 639db7579b14:/home/test.txt /home             # 容器不管是執行還是停止,只要容器在就能拷貝成功
    [root@iZbp10a8w2ct7pZ /]# cd /home
    [root@iZbp10a8w2ct7pZ home]# ls
    test.txt
View Code

部署nginx

[root@iZbp10a8w2ct7pZ /]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
bf5952930446: Pull complete 
cb9a6de05e5a: Pull complete 
9513ea0afb93: Pull complete 
b49ea07d2e93: Pull complete 
a5e4a503d449: Pull complete 
Digest: sha256:b0ad43f7ee5edbc0effbc14645ae7055e21bc1973aee5150745632a24a752661
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@iZbp10a8w2ct7pZ /]# docker run -d --name nginx01 -p 3344:80 nginx         # -d後臺執行,--name容器命名,-p宿主機埠:容器內部埠
59810f42fe02d855e384de2cc1588bb167efdefb4def41ff8b84a00c1f5702b2
[root@iZbp10a8w2ct7pZ /]# curl localhost:3344                                    # 本地訪問
<!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@iZbp10a8w2ct7pZ /]# 
    [root@iZbp10a8w2ct7pZ /]# docker exec -it nginx01 /bin/bash         # 進入容器
root@59810f42fe02:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@59810f42fe02:/# 
View Code

圖形介面管理工具portainer

docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer        # -v 卷掛載
訪問測試:http://ip:8088/
...
View Code

提交映象

docker commit -m='提交描述資訊' -a='作者' 容器id 目標映象名:[TAG]        # tag為目標映象版本

[root@iZbp10a8w2ct7pZ ~]# docker run -it redis /bin/bash
root@dc9201da1906:/data# cd ..
root@dc9201da1906:/# ls
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@dc9201da1906:/# mkdir lib01  
root@dc9201da1906:/# cp -r lib/* lib01 
root@dc9201da1906:/# cd lib01
root@dc9201da1906:/lib01# ls
init  lsb  systemd  terminfo  udev  x86_64-linux-gnu
root@dc9201da1906:/lib01# cd ..
root@dc9201da1906:/# ls
bin  boot  data  dev  etc  home  lib  lib01  lib64  media  mnt    opt  proc  root  run  sbin  srv  sys  tmp  usr    var
root@dc9201da1906:/# [root@iZbp10a8w2ct7pZ ~]# 
[root@iZbp10a8w2ct7pZ ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
dc9201da1906        redis               "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp            heuristic_edison
[root@iZbp10a8w2ct7pZ ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              41de2cc0b30e        8 days ago          104MB
nginx               latest              4bb46517cac3        3 weeks ago         133MB
centos              latest              0d120b6ccaa8        4 weeks ago         215MB
[root@iZbp10a8w2ct7pZ ~]# docker commit -m='redis01' -a='xyp' dc9201da1906 redis01:1.0
sha256:ae42197572a6dcdcafd4b001236304d36008324c48727e5c681fccc83d80a715
[root@iZbp10a8w2ct7pZ ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis01             1.0                 ae42197572a6        3 seconds ago       116MB            # 生成新的映象redis01
redis               latest              41de2cc0b30e        8 days ago          104MB
nginx               latest              4bb46517cac3        3 weeks ago         133MB
centos              latest              0d120b6ccaa8        4 weeks ago         215MB
[root@iZbp10a8w2ct7pZ ~]# 
View Code

容器資料卷

容器之間資料共享、持久化和同步操作。

目錄的掛載,將容器內的目錄掛載到linux上。

使用命令掛載

    docker run -it -v 主機目錄:容器目錄 映象名 bashShell

    [root@iZbp10a8w2ct7pZ home]# ls
    [root@iZbp10a8w2ct7pZ home]# docker run -it -v /home/ceshi:/home centos /bin/bash
    [root@e6782e5447e3 /]# [root@iZbp10a8w2ct7pZ home]#                                 # ctrl + p + q退出容器
    [root@iZbp10a8w2ct7pZ home]# ls
    ceshi
    [root@iZbp10a8w2ct7pZ home]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
    e6782e5447e3        centos              "/bin/bash"              About a minute ago   Up About a minute                       gracious_haibt
    dc9201da1906        redis               "docker-entrypoint.s…"   2 hours ago          Up 2 hours          6379/tcp            heuristic_edison
    [root@iZbp10a8w2ct7pZ home]# docker attach e6782e5447e3         # 進入容器
    [root@e6782e5447e3 /]# cd /home
    [root@e6782e5447e3 home]# ls
    [root@e6782e5447e3 home]# read escape sequence                    # ctrl + p + q退出容器
    [root@iZbp10a8w2ct7pZ home]# docker inspect e6782e5447e3         # 容器元資訊
    ...
    "Mounts": [
        {
            "Type": "bind",                        # bind雙向繫結
            "Source": "/home/ceshi",            # 主機內路徑
            "Destination": "/home",                # docker容器內路徑
            "Mode": "",
            "RW": true,
            "Propagation": "rprivate"
        }
    ],
    ...
    [root@iZbp10a8w2ct7pZ home]# 
    [root@iZbp10a8w2ct7pZ home]# docker attach e6782e5447e3
    [root@e6782e5447e3 home]# ls
    [root@e6782e5447e3 home]# touch test.txt
    [root@e6782e5447e3 home]# ls
    test.txt
    [root@e6782e5447e3 /]# [root@iZbp10a8w2ct7pZ home]#
    [root@iZbp10a8w2ct7pZ home]# 
    [root@iZbp10a8w2ct7pZ home]# ls
    ceshi
    [root@iZbp10a8w2ct7pZ home]# cd ceshi/
    [root@iZbp10a8w2ct7pZ ceshi]# ls
    test.txt                                                    # 測試檔案同步
    [root@iZbp10a8w2ct7pZ ceshi]# 
    [root@iZbp10a8w2ct7pZ ceshi]# docker attach e6782e5447e3
    [root@e6782e5447e3 home]# exit
    exit
    [root@iZbp10a8w2ct7pZ ceshi]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@iZbp10a8w2ct7pZ ceshi]# ls
    test.txt
    [root@iZbp10a8w2ct7pZ ceshi]# vim test.txt
    [root@iZbp10a8w2ct7pZ ceshi]# cat test.txt 
    hello, world!
    [root@iZbp10a8w2ct7pZ ceshi]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS               NAMES
    e6782e5447e3        centos              "/bin/bash"              16 minutes ago      Exited (0) 2 minutes ago                              gracious_haibt
    [root@iZbp10a8w2ct7pZ ceshi]# docker start e6782e5447e3
    e6782e5447e3
    [root@iZbp10a8w2ct7pZ ceshi]# docker attach e6782e5447e3
    [root@e6782e5447e3 /]# cd /home
    [root@e6782e5447e3 home]# ls
    test.txt
    [root@e6782e5447e3 home]# cat test.txt                             # 檔案資料同步成功
    hello, world!                        




mysql資料同步

    # 可以掛載多個路徑,-e配置環境,DockerHub搜尋mysql檢視使用方法    
    docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

    啟動成功後,本地使用mysql圖形介面管理工具連線資料庫成功

    將容器刪除後mysql掛載在linux系統的資料和檔案不會丟失
View Code

具名掛載和匿名掛載

docker run -d -P --name nginx01 -v 容器內路徑 nginx             # 匿名掛載,-P隨機對映埠
docker volume ls                                             # 檢視所有volume的情況
docker run -d -P --name nginx02 -v 卷名:容器內路徑 nginx         # 具名掛載

-v 容器內路徑                    # 匿名掛載,不推薦使用
-v 卷名:容器內路徑            # 具名掛載,所有的docker容器內的卷,沒有指定目錄的情況下都是在/var/lib/docker/volumes/卷名/_data
-v /宿主機路徑:容器內路徑        # 指定路徑掛載

設定許可權,一旦許可權確定就不能通過容器內部改變許可權,只能通過宿主機來操作
    docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx     # ro,readonly,只讀
    docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx     # rw,readwrite,讀寫


[root@iZbp10a8w2ct7pZ ~]# docker run -d -P --name nginx01 -v /etc/nginx nginx         # docker run執行映象,如果沒有該映象自動下載並執行
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
d121f8d1c412: Already exists 
ebd81fc8c071: Pull complete 
655316c160af: Pull complete 
d15953c0e0f8: Pull complete 
2ee525c5c3cc: Pull complete 
Digest: sha256:9a1f8ed9e2273e8b3bbcd2e200024adac624c2e5c9b1d420988809f5c0c41a5e
Status: Downloaded newer image for nginx:latest
bc4dcad6827a1f9d5c52f5c854c349814591d3ef90b75b9a2b49ae37367e87b9
[root@iZbp10a8w2ct7pZ ~]# docker volume ls
DRIVER              VOLUME NAME
local               1c262ed249f8288f04cc33d736b6b5449c3cfdc97970d4b0977cddeef0015c88        # 沒有名字只是一串字串匿名掛載
local               4686bb8f3fa9eea72c8386ff6d55d9331bf62a0d2b4da1bbe202b5b45693082b
local               deb1ac57c31c6bb6d5d940240d2c35d7999560f16f4fb3daa5d3be49c66743a8
local               f2ada5a5484150aac28d8270cbfc15d7153610b4d468ec17f1953b99dbdfd91d
[root@iZbp10a8w2ct7pZ ~]# 
[root@iZbp10a8w2ct7pZ ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx         # juming-nginx卷名,/juming-nginx是目錄
0242c80485a49ecdf1a79d688c6bbf4a30c3cbb8be822ba3bc8ca001b53b7fe2
[root@iZbp10a8w2ct7pZ ~]# docker volume ls
DRIVER              VOLUME NAME
local               1c262ed249f8288f04cc33d736b6b5449c3cfdc97970d4b0977cddeef0015c88
local               4686bb8f3fa9eea72c8386ff6d55d9331bf62a0d2b4da1bbe202b5b45693082b
local               deb1ac57c31c6bb6d5d940240d2c35d7999560f16f4fb3daa5d3be49c66743a8
local               f2ada5a5484150aac28d8270cbfc15d7153610b4d468ec17f1953b99dbdfd91d
local               juming-nginx                                                                 # 具名掛載
[root@iZbp10a8w2ct7pZ ~]# docker volume inspect juming-nginx
[
    {
        "CreatedAt": "2020-09-11T10:56:51+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",                    # 掛載具體目錄地址
        "Name": "juming-nginx",
        "Options": null,
        "Scope": "local"
    }
]
[root@iZbp10a8w2ct7pZ ~]# cd /var/lib/docker
[root@iZbp10a8w2ct7pZ docker]# ls
builder  buildkit  containers  image  network  overlay2  plugins  runtimes  swarm  tmp  trust  volumes
[root@iZbp10a8w2ct7pZ docker]# cd volumes/
[root@iZbp10a8w2ct7pZ volumes]# ls
1c262ed249f8288f04cc33d736b6b5449c3cfdc97970d4b0977cddeef0015c88  deb1ac57c31c6bb6d5d940240d2c35d7999560f16f4fb3daa5d3be49c66743a8  juming-nginx
4686bb8f3fa9eea72c8386ff6d55d9331bf62a0d2b4da1bbe202b5b45693082b  f2ada5a5484150aac28d8270cbfc15d7153610b4d468ec17f1953b99dbdfd91d  metadata.db
[root@iZbp10a8w2ct7pZ volumes]# cd juming-nginx/
[root@iZbp10a8w2ct7pZ juming-nginx]# ls
_data
[root@iZbp10a8w2ct7pZ juming-nginx]# cd _data/
[root@iZbp10a8w2ct7pZ _data]# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
[root@iZbp10a8w2ct7pZ _data]# 
View Code

初識dockfile

dockerfile就是用來構建docker映象的檔案,命令指令碼,通過指令碼生成映象。

[root@iZbp10a8w2ct7pZ home]# ls
[root@iZbp10a8w2ct7pZ home]# mkdir docker-test-volume
[root@iZbp10a8w2ct7pZ home]# cd docker-test-volume/
[root@iZbp10a8w2ct7pZ docker-test-volume]# vim dockerfile1
[root@iZbp10a8w2ct7pZ docker-test-volume]# cat dockerfile1             # dockerfile檔案每個命令就是映象的一層
FROM centos

VOLUME ["volume01","volume02"]                                        # 掛載卷,匿名掛載。dockerfile檔案使用“”,列表中元素不要加空格

CMD echo "-----end-----"
CMD /bin/bash
[root@iZbp10a8w2ct7pZ docker-test-volume]# docker build -f dockerfile1 -t xyp/centos .    # 構建映象。-f 地址,-t生成映象,xyp/centos映象名, .當前目錄
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM centos
 ---> 0d120b6ccaa8
Step 2/4 : VOLUME ["volume01","volume02"]
 ---> Running in e5409dcc3399
Removing intermediate container e5409dcc3399
 ---> e1756afde2f0
Step 3/4 : CMD echo "-----end-----"
 ---> Running in 5cc2d440795d
Removing intermediate container 5cc2d440795d
 ---> 22418aff3240
Step 4/4 : CMD /bin/bash
 ---> Running in 63765d3fe757
Removing intermediate container 63765d3fe757
 ---> 859dd2ad60b6
Successfully built 859dd2ad60b6
Successfully tagged xyp/centos:latest
[root@iZbp10a8w2ct7pZ docker-test-volume]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
xyp/centos          latest              859dd2ad60b6        17 seconds ago      215MB        # dockerfile1生成的映象
nginx               latest              7e4d58f0e5f3        20 hours ago        133MB
mysql               5.7                 ef08065b0a30        26 hours ago        448MB
centos              latest              0d120b6ccaa8        4 weeks ago         215MB
[root@iZbp10a8w2ct7pZ docker-test-volume]# docker run -it 859dd2ad60b6 /bin/bash
[root@e4d407e955e1 /]# ls -l
total 0
lrwxrwxrwx   1 root root   7 May 11  2019 bin -> usr/bin
drwxr-xr-x   5 root root 360 Sep 11 08:45 dev
drwxr-xr-x   1 root root  66 Sep 11 08:45 etc
drwxr-xr-x   2 root root   6 May 11  2019 home
lrwxrwxrwx   1 root root   7 May 11  2019 lib -> usr/lib
lrwxrwxrwx   1 root root   9 May 11  2019 lib64 -> usr/lib64
drwx------   2 root root   6 Aug  9 21:40 lost+found
drwxr-xr-x   2 root root   6 May 11  2019 media
drwxr-xr-x   2 root root   6 May 11  2019 mnt
drwxr-xr-x   2 root root   6 May 11  2019 opt
dr-xr-xr-x 130 root root   0 Sep 11 08:45 proc
dr-xr-x---   2 root root 162 Aug  9 21:40 root
drwxr-xr-x  11 root root 163 Aug  9 21:40 run
lrwxrwxrwx   1 root root   8 May 11  2019 sbin -> usr/sbin
drwxr-xr-x   2 root root   6 May 11  2019 srv
dr-xr-xr-x  13 root root   0 Sep 11 08:45 sys
drwxrwxrwt   7 root root 145 Aug  9 21:40 tmp
drwxr-xr-x  12 root root 144 Aug  9 21:40 usr
drwxr-xr-x  20 root root 262 Aug  9 21:40 var
drwxr-xr-x   2 root root   6 Sep 11 08:45 volume01        # 生成映象時自動掛載的資料卷目錄
drwxr-xr-x   2 root root   6 Sep 11 08:45 volume02        # 生成映象時自動掛載的資料卷目錄
[root@e4d407e955e1 /]# 
[root@e4d407e955e1 /]# cd volume01
[root@e4d407e955e1 volume01]# ls
[root@e4d407e955e1 volume01]# touch container.txt
[root@e4d407e955e1 volume01]# ls
container.txt
[root@e4d407e955e1 volume01]# [root@iZbp10a8w2ct7pZ /]#         # ctrl + p + q退出
[root@iZbp10a8w2ct7pZ /]# docker ps                 # CONTAINER ID 為e4d407e955e1,和容器內終端[root@e4d407e955e1 volume01]]#中 e4d407e955e1相同
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
e4d407e955e1        859dd2ad60b6        "/bin/bash"         8 minutes ago       Up 8 minutes                            angry_burnell
[root@iZbp10a8w2ct7pZ /]# 
[root@iZbp10a8w2ct7pZ /]# docker inspect e4d407e955e1         # 檢視卷掛載路徑
...
"Mounts": [                            
    {
        "Type": "volume",
        "Name": "e99639e1bb42e26f197763b77da8fb917072dda289d18240a2496f344d823e55",
        "Source": "/var/lib/docker/volumes/e99639e1bb42e26f197763b77da8fb917072dda289d18240a2496f344d823e55/_data",        # 掛載容器外的目錄 
        "Destination": "volume01",
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    },
    {
        "Type": "volume",
        "Name": "145ee13966150221c513f4f19d33bad712ec31f638138533443a841c4f46e511",
        "Source": "/var/lib/docker/volumes/145ee13966150221c513f4f19d33bad712ec31f638138533443a841c4f46e511/_data",        # 掛載容器外的目錄 
        "Destination": "volume02",
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    }
],
...
# 這種方式掛載使用非常多,因為會經常構建我們自己的映象。如果構建映象時沒有掛載卷,要手動映象掛載 -v 卷名:容器內路徑
[root@iZbp10a8w2ct7pZ /]# cd /var/lib/docker/volumes/e99639e1bb42e26f197763b77da8fb917072dda289d18240a2496f344d823e55/_data    
[root@iZbp10a8w2ct7pZ _data]# ls
container.txt
[root@iZbp10a8w2ct7pZ _data]# 
View Code

資料卷容器

多個容器之間實現資料共享

[root@iZbp10a8w2ct7pZ ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
xyp/centos          latest              859dd2ad60b6        32 minutes ago      215MB
nginx               latest              7e4d58f0e5f3        21 hours ago        133MB
mysql               5.7                 ef08065b0a30        26 hours ago        448MB
centos              latest              0d120b6ccaa8        4 weeks ago         215MB
[root@iZbp10a8w2ct7pZ ~]# docker run -it --name docker01 xyp/centos             # 啟動docker01
[root@2ae6635131db /]# ls -l
total 0
lrwxrwxrwx   1 root root   7 May 11  2019 bin -> usr/bin
drwxr-xr-x   5 root root 360 Sep 11 09:18 dev
drwxr-xr-x   1 root root  66 Sep 11 09:18 etc
drwxr-xr-x   2 root root   6 May 11  2019 home
lrwxrwxrwx   1 root root   7 May 11  2019 lib -> usr/lib
lrwxrwxrwx   1 root root   9 May 11  2019 lib64 -> usr/lib64
drwx------   2 root root   6 Aug  9 21:40 lost+found
drwxr-xr-x   2 root root   6 May 11  2019 media
drwxr-xr-x   2 root root   6 May 11  2019 mnt
drwxr-xr-x   2 root root   6 May 11  2019 opt
dr-xr-xr-x 131 root root   0 Sep 11 09:18 proc
dr-xr-x---   2 root root 162 Aug  9 21:40 root
drwxr-xr-x  11 root root 163 Aug  9 21:40 run
lrwxrwxrwx   1 root root   8 May 11  2019 sbin -> usr/sbin
drwxr-xr-x   2 root root   6 May 11  2019 srv
dr-xr-xr-x  13 root root   0 Sep 11 09:18 sys
drwxrwxrwt   7 root root 145 Aug  9 21:40 tmp
drwxr-xr-x  12 root root 144 Aug  9 21:40 usr
drwxr-xr-x  20 root root 262 Aug  9 21:40 var
drwxr-xr-x   2 root root   6 Sep 11 09:18 volume01
drwxr-xr-x   2 root root   6 Sep 11 09:18 volume02
[root@2ae6635131db /]# [root@iZbp10a8w2ct7pZ ~]# 
[root@iZbp10a8w2ct7pZ ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
2ae6635131db        xyp/centos          "/bin/sh -c /bin/bash"   About a minute ago   Up About a minute                       docker01
[root@iZbp10a8w2ct7pZ ~]# docker run -it --name docker02 --volumes-from docker01 xyp/centos     # --volumes-from,docker02掛載到了docker01,docker01資料卷容器
[root@020ef95e5a0e /]# ls -l
total 0
lrwxrwxrwx   1 root root   7 May 11  2019 bin -> usr/bin
drwxr-xr-x   5 root root 360 Sep 11 09:20 dev
drwxr-xr-x   1 root root  66 Sep 11 09:20 etc
drwxr-xr-x   2 root root   6 May 11  2019 home
lrwxrwxrwx   1 root root   7 May 11  2019 lib -> usr/lib
lrwxrwxrwx   1 root root   9 May 11  2019 lib64 -> usr/lib64
drwx------   2 root root   6 Aug  9 21:40 lost+found
drwxr-xr-x   2 root root   6 May 11  2019 media
drwxr-xr-x   2 root root   6 May 11  2019 mnt
drwxr-xr-x   2 root root   6 May 11  2019 opt
dr-xr-xr-x 135 root root   0 Sep 11 09:20 proc
dr-xr-x---   2 root root 162 Aug  9 21:40 root
drwxr-xr-x  11 root root 163 Aug  9 21:40 run
lrwxrwxrwx   1 root root   8 May 11  2019 sbin -> usr/sbin
drwxr-xr-x   2 root root   6 May 11  2019 srv
dr-xr-xr-x  13 root root   0 Sep 11 09:20 sys
drwxrwxrwt   7 root root 145 Aug  9 21:40 tmp
drwxr-xr-x  12 root root 144 Aug  9 21:40 usr
drwxr-xr-x  20 root root 262 Aug  9 21:40 var
drwxr-xr-x   2 root root   6 Sep 11 09:18 volume01
drwxr-xr-x   2 root root   6 Sep 11 09:18 volume02
[root@020ef95e5a0e /]# [root@iZbp10a8w2ct7pZ ~]# 
[root@iZbp10a8w2ct7pZ ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
020ef95e5a0e        xyp/centos          "/bin/sh -c /bin/bash"   About a minute ago   Up About a minute                       docker02
2ae6635131db        xyp/centos          "/bin/sh -c /bin/bash"   3 minutes ago        Up 3 minutes                            docker01
[root@iZbp10a8w2ct7pZ ~]# docker attach 2ae6635131db        # 進入docker01
[root@2ae6635131db /]# ls -l
total 0
lrwxrwxrwx   1 root root   7 May 11  2019 bin -> usr/bin
drwxr-xr-x   5 root root 360 Sep 11 09:18 dev
drwxr-xr-x   1 root root  66 Sep 11 09:18 etc
drwxr-xr-x   2 root root   6 May 11  2019 home
lrwxrwxrwx   1 root root   7 May 11  2019 lib -> usr/lib
lrwxrwxrwx   1 root root   9 May 11  2019 lib64 -> usr/lib64
drwx------   2 root root   6 Aug  9 21:40 lost+found
drwxr-xr-x   2 root root   6 May 11  2019 media
drwxr-xr-x   2 root root   6 May 11  2019 mnt
drwxr-xr-x   2 root root   6 May 11  2019 opt
dr-xr-xr-x 134 root root   0 Sep 11 09:18 proc
dr-xr-x---   2 root root 162 Aug  9 21:40 root
drwxr-xr-x  11 root root 163 Aug  9 21:40 run
lrwxrwxrwx   1 root root   8 May 11  2019 sbin -> usr/sbin
drwxr-xr-x   2 root root   6 May 11  2019 srv
dr-xr-xr-x  13 root root   0 Sep 11 09:18 sys
drwxrwxrwt   7 root root 145 Aug  9 21:40 tmp
drwxr-xr-x  12 root root 144 Aug  9 21:40 usr
drwxr-xr-x  20 root root 262 Aug  9 21:40 var
drwxr-xr-x   2 root root   6 Sep 11 09:18 volume01
drwxr-xr-x   2 root root   6 Sep 11 09:18 volume02
[root@2ae6635131db /]# cd volume01
[root@2ae6635131db volume01]# touch docker01
[root@2ae6635131db volume01]# ls
docker01
[root@2ae6635131db /]# [root@iZbp10a8w2ct7pZ ~]# 
[root@iZbp10a8w2ct7pZ ~]# docker attach 020ef95e5a0e
[root@020ef95e5a0e /]# cd volume01
[root@020ef95e5a0e volume01]# ls                         # docker01建立的資料同步到docker02上
docker01
[root@020ef95e5a0e volume01]# read escape sequence        # ctrl + p + q
[root@iZbp10a8w2ct7pZ ~]# docker run -it --name docker03 --volumes-from docker01 xyp/centos     # docker02掛載到docker01資料卷
[root@19515c5f1cab /]# ls -l
total 0
lrwxrwxrwx   1 root root   7 May 11  2019 bin -> usr/bin
drwxr-xr-x   5 root root 360 Sep 11 09:30 dev
drwxr-xr-x   1 root root  66 Sep 11 09:30 etc
drwxr-xr-x   2 root root   6 May 11  2019 home
lrwxrwxrwx   1 root root   7 May 11  2019 lib -> usr/lib
lrwxrwxrwx   1 root root   9 May 11  2019 lib64 -> usr/lib64
drwx------   2 root root   6 Aug  9 21:40 lost+found
drwxr-xr-x   2 root root   6 May 11  2019 media
drwxr-xr-x   2 root root   6 May 11  2019 mnt
drwxr-xr-x   2 root root   6 May 11  2019 opt
dr-xr-xr-x 135 root root   0 Sep 11 09:30 proc
dr-xr-x---   2 root root 162 Aug  9 21:40 root
drwxr-xr-x  11 root root 163 Aug  9 21:40 run
lrwxrwxrwx   1 root root   8 May 11  2019 sbin -> usr/sbin
drwxr-xr-x   2 root root   6 May 11  2019 srv
dr-xr-xr-x  13 root root   0 Sep 11 09:30 sys
drwxrwxrwt   7 root root 145 Aug  9 21:40 tmp
drwxr-xr-x  12 root root 144 Aug  9 21:40 usr
drwxr-xr-x  20 root root 262 Aug  9 21:40 var
drwxr-xr-x   2 root root  22 Sep 11 09:22 volume01 
drwxr-xr-x   2 root root   6 Sep 11 09:18 volume02
[root@19515c5f1cab /]# cd volume01     
[root@19515c5f1cab volume01]# ls                         # docker03與docker01資料同步
docker01
[root@19515c5f1cab volume01]# touch docker03
[root@19515c5f1cab volume01]# ls
docker01  docker03
[root@19515c5f1cab volume01]# [root@iZbp10a8w2ct7pZ ~]# 
[root@iZbp10a8w2ct7pZ ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
19515c5f1cab        xyp/centos          "/bin/sh -c /bin/bash"   3 minutes ago       Up 3 minutes                            docker03
020ef95e5a0e        xyp/centos          "/bin/sh -c /bin/bash"   12 minutes ago      Up 12 minutes                           docker02
2ae6635131db        xyp/centos          "/bin/sh -c /bin/bash"   15 minutes ago      Up 15 minutes                           docker01
[root@iZbp10a8w2ct7pZ ~]# docker attach 2ae6635131db         
[root@2ae6635131db volume01]# ls                        # docker01和docker03資料同步
docker01  docker03
[root@2ae6635131db volume01]# lsread escape sequence
[root@iZbp10a8w2ct7pZ ~]# docker attach 020ef95e5a0e
[root@020ef95e5a0e volume01]# ls                         # docker02和docker03資料同步
docker01  docker03
[root@020ef95e5a0e volume01]# read escape sequence
[root@iZbp10a8w2ct7pZ ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
19515c5f1cab        xyp/centos          "/bin/sh -c /bin/bash"   5 minutes ago       Up 5 minutes                            docker03
020ef95e5a0e        xyp/centos          "/bin/sh -c /bin/bash"   15 minutes ago      Up 15 minutes                           docker02
2ae6635131db        xyp/centos          "/bin/sh -c /bin/bash"   17 minutes ago      Up 17 minutes                           docker01
[root@iZbp10a8w2ct7pZ ~]# docker kill 2ae6635131db 
2ae6635131db
[root@iZbp10a8w2ct7pZ ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
19515c5f1cab        xyp/centos          "/bin/sh -c /bin/bash"   6 minutes ago       Up 5 minutes                                      docker03
020ef95e5a0e        xyp/centos          "/bin/sh -c /bin/bash"   15 minutes ago      Up 15 minutes                                     docker02
2ae6635131db        xyp/centos          "/bin/sh -c /bin/bash"   17 minutes ago      Exited (137) 13 seconds ago                       docker01
[root@iZbp10a8w2ct7pZ ~]# docker rm -f 2ae6635131db                     # 刪除docker01
2ae6635131db
[root@iZbp10a8w2ct7pZ ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
19515c5f1cab        xyp/centos          "/bin/sh -c /bin/bash"   8 minutes ago       Up 8 minutes                                      docker03
020ef95e5a0e        xyp/centos          "/bin/sh -c /bin/bash"   18 minutes ago      Up 18 minutes                                     docker02
[root@iZbp10a8w2ct7pZ ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
19515c5f1cab        xyp/centos          "/bin/sh -c /bin/bash"   9 minutes ago       Up 9 minutes                            docker03
020ef95e5a0e        xyp/centos          "/bin/sh -c /bin/bash"   18 minutes ago      Up 18 minutes                           docker02
[root@iZbp10a8w2ct7pZ ~]# docker attach 020ef95e5a0e
[root@020ef95e5a0e volume01]# ls                         # 刪除docker01,docker02資料同樣存在,docker03也一樣
docker01  docker03
[root@020ef95e5a0e volume01]# 

多個mysql實現資料共享

    docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
    docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7
View Code

Dockerfile

介紹
    dockerfile是用來構建docker映象的檔案,命令指令碼。
    構建步驟:
        編寫dockfile檔案
        docker build構建成為一個映象
        docker run執行映象
        docker push 釋出映象(DockerHub、阿里雲映象倉庫)

構建過程

     每個保留關鍵字(指令)都必須是大寫字母
     執行從上到下順序進行
     # 表示註釋
     每個指令都會建立提交一個新的映象層,並提交

     DockerFile:        構建檔案,定義一切步驟,原始碼
     DockerImages:    通過dockerfile構建生成的映象,最終釋出和執行的產品
     Docker容器:        容器就是映象執行起來提供服務的


指令說明

     FROM             # 基礎映象
     MAINTAINER        # 映象維護者,姓名+郵箱
     RUN             # 映象執行命令
     ADD             # 步驟,新增內容
     WORKDIR         # 映象的工作目錄
     VOLUME             # 掛載的目錄
     EXPOSE            # 保留埠設定
     CMD             # 指定容器啟動時執行的命令,只有最後一個會生效可被替代
     ENTRYPOINT         # 指定容器啟動時執行的命令,可以追加命令
     ONBUILD         # 構建被繼承DockerFile時執行ONBULID指令,指令出發
     COPY            # 類似ADD命令,將檔案拷貝到映象中
     ENV             # 構建映象時設定環境變數




構建自己的centos

     DockerHub搜尋centos,找到centos7跳轉進github中

         FROM scratch                                                # 基礎映象,DockerHub中99%映象都是這個基礎映象
        ADD centos-7-x86_64-docker.tar.xz /                            # 新增centos7壓縮包

        LABEL \
            org.label-schema.schema-version="1.0" \
            org.label-schema.name="CentOS Base Image" \
            org.label-schema.vendor="CentOS" \
            org.label-schema.license="GPLv2" \
            org.label-schema.build-date="20200809" \
            org.opencontainers.image.title="CentOS Base Image" \
            org.opencontainers.image.vendor="CentOS" \
            org.opencontainers.image.licenses="GPL-2.0-only" \
            org.opencontainers.image.created="2020-08-09 00:00:00+01:00"

        CMD ["/bin/bash"]

    1.編寫dockerfile檔案

        root@iZbp10a8w2ct7pZ home]# ls
        docker-test-volume
        [root@iZbp10a8w2ct7pZ home]# mkdir dockerfile
        [root@iZbp10a8w2ct7pZ home]# cd dockerfile/
        [root@iZbp10a8w2ct7pZ dockerfile]# vim mydockercentos        # 編寫dockerfile檔案
        [root@iZbp10a8w2ct7pZ dockerfile]# cat mydockercentos 
        FROM centos
        MAINTAINER xyp<[email protected]>
        ENV MYPATH /usr/local
        WORKDIR $MYPATH
        RUN yum -y install vim
        RUN yum -y install net-tools                 # ifconfig
        EXPOSE 80
        CMD echo $MYPATH
        CMD echo "-----end-----"
        CMD /bin/bash

    2.構建映象

        [root@iZbp10a8w2ct7pZ dockerfile]# docker build -f mydockercentos -t mycentos:0.1 .        # 構建映象,-f檔案,-t tag, .當前目錄
        Sending build context to Docker daemon  2.048kB
        Step 1/10 : FROM centos
         ---> 0d120b6ccaa8                                                 # 0d120b6ccaa8 docker images已經有centos了,所以直接拿來用
        Step 2/10 : MAINTAINER xyp<[email protected]>
         ---> Running in 64164f664934
        Removing intermediate container 64164f664934
         ---> cd6f03fb2eac
        Step 3/10 : ENV MYPATH /usr/local
         ---> Running in cf799f2e632d
        Removing intermediate container cf799f2e632d
         ---> 9a3dd2c23724
        Step 4/10 : WORKDIR $MYPATH
         ---> Running in 00b78d805c85
        Removing intermediate container 00b78d805c85
         ---> a9601792225a
        Step 5/10 : RUN yum -y install vim
         ---> Running in 89e5c7b6291e
        ......
        Step 6/10 : RUN yum -y install net-tools
         ---> Running in de49a3389045
        ......
        Step 7/10 : EXPOSE 80
         ---> Running in fe8fb115d5ff
        Removing intermediate container fe8fb115d5ff
         ---> 8d87be4ea47b
        Step 8/10 : CMD echo $MYPATH
         ---> Running in d888190a2ca2
        Removing intermediate container d888190a2ca2
         ---> e37a46ff1f35
        Step 9/10 : CMD echo "-----end-----"
         ---> Running in 17277dd683bb
        Removing intermediate container 17277dd683bb
         ---> 898763dddfec
        Step 10/10 : CMD /bin/bash
         ---> Running in e66ec505f302
        Removing intermediate container e66ec505f302
         ---> ca394e3f127c
        Successfully built ca394e3f127c
        Successfully tagged mycentos:0.1

    3.測試

        [root@iZbp10a8w2ct7pZ dockerfile]# docker run -it mycentos:0.1     
        [root@8a91c7375d56 local]# pwd                                      # 預設進入的容器路徑是根目錄/,dockerfile檔案配置ENV為/use/local
        /usr/local
        [root@8a91c7375d56 local]# ifconfig
        eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
                inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
                ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
                RX packets 11  bytes 866 (866.0 B)
                RX errors 0  dropped 0  overruns 0  frame 0
                TX packets 0  bytes 0 (0.0 B)
                TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
                inet 127.0.0.1  netmask 255.0.0.0
                loop  txqueuelen 1000  (Local Loopback)
                RX packets 0  bytes 0 (0.0 B)
                RX errors 0  dropped 0  overruns 0  frame 0
                TX packets 0  bytes 0 (0.0 B)
                TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        [root@8a91c7375d56 local]# vim test
        [root@8a91c7375d56 local]# cat test
        hello,world!



    4.映象歷史

        [root@iZbp10a8w2ct7pZ dockerfile]# docker images
        REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
        mycentos            0.1                 ca394e3f127c        9 minutes ago       295MB
        xyp/centos          latest              859dd2ad60b6        3 days ago          215MB
        nginx               latest              7e4d58f0e5f3        3 days ago          133MB
        mysql               5.7                 ef08065b0a30        4 days ago          448MB
        centos              latest              0d120b6ccaa8        4 weeks ago         215MB
        [root@iZbp10a8w2ct7pZ dockerfile]# docker history ca394e3f127c                                 # docker history 容器id
        IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
        ca394e3f127c        9 minutes ago       /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B                  
        898763dddfec        9 minutes ago       /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B                  
        e37a46ff1f35        9 minutes ago       /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B                  
        8d87be4ea47b        9 minutes ago       /bin/sh -c #(nop)  EXPOSE 80                    0B                  
        acb0d96ce4a0        9 minutes ago       /bin/sh -c yum -y install net-tools             22.8MB              
        fdfd29805dd0        9 minutes ago       /bin/sh -c yum -y install vim                   57.2MB              
        a9601792225a        9 minutes ago       /bin/sh -c #(nop) WORKDIR /usr/local            0B                  
        9a3dd2c23724        9 minutes ago       /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B                  
        cd6f03fb2eac        9 minutes ago       /bin/sh -c #(nop)  MAINTAINER xyp<634338225@…   0B                  
        0d120b6ccaa8        4 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
        <missing>           4 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
        <missing>           4 weeks ago         /bin/sh -c #(nop) ADD file:538afc0c5c964ce0d…   215MB  
View Code

釋出映象

釋出到DockerHub

    docker login -u username
    docker push 映象:版本

    [root@iZbp10a8w2ct7pZ /]# docker login -u 634338225
    Password: 
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store

    Login Succeeded
    [root@iZbp10a8w2ct7pZ /]# 


釋出到阿里雲映象倉庫

    1.建立名稱空間

    2.建立映象倉庫

    3.按照阿里雲官方文件操作
View Code

Docker網路

理解Docker0

    清空所有環境

        [root@iZbp10a8w2ct7pZ /]# docker rm -f $(docker ps -aq)
        8a91c7375d56
        5e3f11cf0321
        7a43a61a48dd
        b409da379658
        19515c5f1cab
        020ef95e5a0e
        e4d407e955e1
        0eb6a3bcf479
        0242c80485a4
        bc4dcad6827a
        b0a2d40b2944
        [root@iZbp10a8w2ct7pZ /]# docker rmi -f $(docker images -aq)
        Untagged: mycentos:0.1
        Deleted: sha256:ca394e3f127cfbda3f9bdfd56fd207216456997e38f794c325c55195dfca6aab
        Deleted: sha256:898763dddfec36bae6f49535fdd7386376184783756940ee7d065c760f1e0820
        Deleted: sha256:e37a46ff1f356366db14c61c0d8d53acf186943de312ab6b171f8e22fadfe996
        Deleted: sha256:8d87be4ea47ba14b64f8c103c270f71651407e98414b91ee722dbfe4ac817db2
        Deleted: sha256:acb0d96ce4a0634e4d4a41149634233072c53e99726c9c79b3f6ad96d4ace8bf
        Deleted: sha256:08e269cbe24f078d16ab1bac86fe19ded07f0f0df39e85a2098beda2c135a81c
        Deleted: sha256:fdfd29805dd0e96c3b12646e74c3567e150763ef32caef2f72422455f04606e2
        Deleted: sha256:22874a7594abedbc95b736a7944aa7a92b20190b5bf217b9e0c171c87cc7623d
        Deleted: sha256:a9601792225a70aa7ea7f92332d731db77d909db39b9ec059fd5210a593c8245
        Deleted: sha256:9a3dd2c23724546c645f12c58221ae01008d191a9523b61433adca6a92583a48
        Deleted: sha256:cd6f03fb2eac09b7856edae190ce5b340bfa525968cb02e72ca47ae9593dc93e
        Untagged: xyp/centos:latest
        Deleted: sha256:859dd2ad60b61e8170c1e6bb63d820b9518e1bd55d2234615882fd4959106481
        Deleted: sha256:22418aff324094a25b9903ffeb60056372ae946e3a8e9cc963e36051a287ec93
        Deleted: sha256:e1756afde2f0f6f5febc4d2d438cfc3edb55a4f4f1bafbd6b12fd52e7f4f03bc
        Untagged: nginx:latest
        Untagged: nginx@sha256:9a1f8ed9e2273e8b3bbcd2e200024adac624c2e5c9b1d420988809f5c0c41a5e
        Deleted: sha256:7e4d58f0e5f3b60077e9a5d96b4be1b974b5a484f54f9393000a99f3b6816e3d
        Deleted: sha256:eedfd37abc0b05520a719addf6675b372687fe9a2ed1746fa988335720d4376c
        Deleted: sha256:4f052ddd517f6dc5b74d2f7d881838b8ec6a5e67ec7a1da8bbbe91e1e068ad3a
        Deleted: sha256:5f78154d356577280e4ac0d9bf0d021d488828e57f953b011dcbadaecd539ce4
        Deleted: sha256:db5783668220e16186080f3e9d69ad748aab8c72abb8e457f6fc45369461634b
        Untagged: mysql:5.7
        Untagged: mysql@sha256:14fd47ec8724954b63d1a236d2299b8da25c9bbb8eacc739bb88038d82da4919
        Deleted: sha256:ef08065b0a302111b56966aa92c89fa0bacdfc537741cbca88a15b10f14332ca
        Deleted: sha256:c8c81ac92392c394197759ca3d50f5f843d85ac1550d8c0bb2b21adc7334100d
        Deleted: sha256:2dc86a1b9b92e7c946c684bd349e448d7c4fbb3236686e1a48ddfe5adb86a425
        Deleted: sha256:97b541df82456d38e987b630870fcd4e39f05f016717652466b3466841f4162e
        Deleted: sha256:aded9a11fc54761c770a9075cfc2d0bb72c72b59171a56cfa4322ab2b2d416e7
        Deleted: sha256:3fc742b087b51753835895403bd70b649bf2e4e32c5eb5f2f15c2b7d22409964
        Deleted: sha256:00d53c8dcb5c8fd12fbfd2b3b25afcbc3a044e73f1fd395af231f86827238fcf
        Deleted: sha256:007d9a78de83bec432afb0e4e847072a6943e853456fe21b70488d25c1c96bf4
        Deleted: sha256:31fd54b7e8a4e80375cbfd9ead44c37e0ee03d8c4ca7ace27cc1896e9d40e2a2
        Deleted: sha256:22d626b2851ecf92af46f616ce1ff0ef0879ef23b68be2fb92be3311f2308763
        Deleted: sha256:5da80bf7a61d70d69c153f015cd2a5aa96594f36f3835ef6dbcd4da41da374f2
        Deleted: sha256:07cab433985205f29909739f511777a810f4a9aff486355b71308bb654cdc868
        Untagged: centos:latest
        Untagged: centos@sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd
        Deleted: sha256:0d120b6ccaa8c5e149176798b3501d4dd1885f961922497cd0abef155c869566
        Deleted: sha256:291f6e44771a7b4399b0c6fb40ab4fe0331ddf76eda11080f052b003d96c7726
        Error response from daemon: conflict: unable to delete 898763dddfec (cannot be forced) - image has dependent child images
        Error: No such image: 8d87be4ea47b
        Error: No such image: e37a46ff1f35
        Error: No such image: acb0d96ce4a0
        Error: No such image: fdfd29805dd0
        Error: No such image: 9a3dd2c23724
        Error: No such image: a9601792225a
        Error: No such image: cd6f03fb2eac
        Error: No such image: 22418aff3240
        Error: No such image: e1756afde2f0
        [root@iZbp10a8w2ct7pZ /]#


    測試

        [root@iZbp10a8w2ct7pZ /]# ip addr
        1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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                                                             # 127.0.0.1 本機迴環地址
               valid_lft forever preferred_lft forever
            inet6 ::1/128 scope host 
               valid_lft forever preferred_lft forever
        2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
            link/ether 00:16:3e:0b:70:c5 brd ff:ff:ff:ff:ff:ff
            inet 172.16.136.181/20 brd 172.16.143.255 scope global dynamic noprefixroute eth0        # 172.16.136.181 阿里雲內網地址
               valid_lft 308878656sec preferred_lft 308878656sec
            inet6 fe80::216:3eff:fe0b:70c5/64 scope link 
               valid_lft forever preferred_lft forever
        3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
            link/ether 02:42:ae:df:d8:31 brd ff:ff:ff:ff:ff:ff
            inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0                                 # 172.17.0.1 docker0地址
               valid_lft forever preferred_lft forever
            inet6 fe80::42:aeff:fedf:d831/64 scope link 
               valid_lft forever preferred_lft forever

    docker0和容器之間橋接...           

    --link容器互聯
    ...
View Code

自定義網路

檢視所有的docker網路

    [root@iZbp10a8w2ct7pZ ~]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    3c4d44d1a438        bridge              bridge              local
    680eb3f56321        host                host                local
    b5d36dc07adc        none                null                local
    [root@iZbp10a8w2ct7pZ ~]# 

網路模式

    bridge:橋接,docker預設,自己建立也使用bridge模式
    none:不配置網路
    host:和宿主機共享連線
    container:容器網路互聯,用的少侷限性大


    docker run -d -P --name tomcat01 --net bridge tomcat     # --net bridge即docker0

    docker0特點:預設,域名不能訪問,--link可以實現容器間連線


docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet     # 自定義網路,driver bridge橋接,subnet子網,gateway閘道器

[root@iZbp10a8w2ct7pZ ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
47d322e7f7befe348a197d452f0dd3c316fb21dfd85c503802ed6266efa7bdbe
[root@iZbp10a8w2ct7pZ ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
3c4d44d1a438        bridge              bridge              local
680eb3f56321        host                host                local
47d322e7f7be        mynet               bridge              local         # 建立的網路
b5d36dc07adc        none                null                local
[root@iZbp10a8w2ct7pZ ~]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "47d322e7f7befe348a197d452f0dd3c316fb21dfd85c503802ed6266efa7bdbe",
        "Created": "2020-09-16T15:25:14.725287691+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.0.0/16",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
[root@iZbp10a8w2ct7pZ ~]# docker run -d -P --name tomcat-net-01 --net mynet tomcat
...
[root@iZbp10a8w2ct7pZ ~]# docker run -d -P --name tomcat-net-02 --net mynet tomcat
...
[root@iZbp10a8w2ct7pZ ~]# docker network inspect mynet                             # 192.168.0.2為tomcat-net-01對應的IP,192.168.0.3為tomcat-net-02對應的IP
...
[root@iZbp10a8w2ct7pZ ~]# docker exex -it tomcat-net-01 ping 192.168.0.3        # ping成功
...
[root@iZbp10a8w2ct7pZ ~]# docker exex -it tomcat-net-01 ping tomcat-net-02        # 不使用--link也可以直接ping通名字了
...

自定義網路docker已經維護好了對應的關係,推薦使用這種方法,不推薦--link
redis,mysql等不同的叢集使用不同的網路,保證叢集是安全的
View Code

docker0和自定義網路關聯

[root@iZbp10a8w2ct7pZ ~]# docker network --help

Usage:    docker network COMMAND

Manage networks

Commands:
  connect     Connect a container to a network
  create      Create a network
  disconnect  Disconnect a container from a network
  inspect     Display detailed information on one or more networks
  ls          List networks
  prune       Remove all unused networks
  rm          Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.
[root@iZbp10a8w2ct7pZ ~]# docker network connect --help

Usage:    docker network connect [OPTIONS] NETWORK CONTAINER

Connect a container to a network

Options:
      --alias strings           Add network-scoped alias for the container
      --driver-opt strings      driver options for the network
      --ip string               IPv4 address (e.g., 172.30.100.104)
      --ip6 string              IPv6 address (e.g., 2001:db8::33)
      --link list               Add link to another container
      --link-local-ip strings   Add a link-local address for the container
[root@iZbp10a8w2ct7pZ ~]# docker network connect mynet tomcat01     # tomcat01 docker0關聯的映象
...
[root@iZbp10a8w2ct7pZ ~]# docker network connect mynet tomcat02     # tomcat02 docker0關聯的映象
...
View Code