zoukankan      html  css  js  c++  java
  • Docker

    安装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 {
             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<634338225@qq.com>
            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<634338225@qq.com>
             ---> 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
  • 相关阅读:
    漂亮灵活设置的jquery通知提示插件toastr
    C# 对List<T>取交集、连集及差集
    查看sqlserver被锁的表以及如何解锁.
    javascript的setTimeout()用法总结,js的setTimeout()方法
    日志插件 log4net 的使用
    Log4NET简介
    解决WCF大数据量传输 ,System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接
    也说Autofac在MVC的简单实践:破解在Controller构造函数中的实例化
    Autofac 依赖注入 ASP.NET MVC5 插件机制中插件的简单实现
    Asp.net mvc中整合autofac
  • 原文地址:https://www.cnblogs.com/xuyaping/p/13686520.html
Copyright © 2011-2022 走看看