• DOCKER 从入门到放弃(三)


    使用docker create [image-name] 创建一个容器

    创建一个nginx镜像的容器,由于没有指定各项参数,容器实用默认参数,创建后并不会启动,并将容器的ID输出到终端,如果本地没有镜像,将从网络下载镜像。

    [root@docker ~]# docker create nginx
    63dd9de3c7280959175223c32253623ac0c0ec7680f1051391b62adc126d464f
    
    

    使用docker run [image-name] 创建一个容器并运行该容器

    创建一个nginx镜像的容器,由于没有指定各项参数,容器实用默认参数,创建并启动运行,并将容器的ID输出到终端,如果本地没有镜像,将从网络下载镜像。但是请使用-d 参数,让容器运行在后台,不然该终端将会被占用无法使用。

    [root@docker ~]# docker run -d nginx
    593d0b66c5b44b2b810076469872d1032376116e2352846aa60a190f7365d914
    
    

    实用docker ps -a 命令查看当前docker创建的容器,并显示运行状态

    [root@docker ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    63dd9de3c728        nginx               "nginx -g 'daemon ..."   3 minutes ago       Created                                 gifted_minsky
    

    启动一个创建好的或者被停止的容器

    使用docker start [container id] 启动容器

    [root@docker ~]# docker start 63dd9de3c728
    63dd9de3c728
    [root@docker ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    63dd9de3c728        nginx               "nginx -g 'daemon ..."   7 minutes ago       Up 4 seconds        80/tcp              gifted_minsky
    
    

    停止一个正在运行的容器

    使用docker stop [container id] 启动容器

    [root@docker ~]# docker stop 63dd9de3c728
    63dd9de3c728
    [root@docker ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
    63dd9de3c728        nginx               "nginx -g 'daemon ..."   9 minutes ago       Exited (0) 4 seconds ago                       gifted_minsky
    
    

    使用docker rm 删除一个容器

    如果被删除的容器处于运行状态,将无法删除

    [root@docker ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    63dd9de3c728        nginx               "nginx -g 'daemon ..."   11 minutes ago      Up 2 seconds        80/tcp              gifted_minsky
    [root@docker ~]# docker rm 63dd9de3c728
    Error response from daemon: You cannot remove a running container 63dd9de3c7280959175223c32253623ac0c0ec7680f1051391b62adc126d464f. Stop the container before attempting removal or force remove
    
    

    停止要删除后的容器然后在删除容器

    [root@docker ~]# docker stop 63dd9de3c728
    63dd9de3c728
    [root@docker ~]# docker rm 63dd9de3c728
    63dd9de3c728
    [root@docker ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    
    

    创建容器的参数

    OPTIONS 说明
    -a stdin 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项
    -d 后台运行容器,并返回容器ID
    -i 以交互模式运行容器,通常与 -t 同时使用
    -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
    --name="nginx-lb" 为容器指定一个名称
    --dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致
    --dns-search example.com 指定容器DNS搜索域名,默认和宿主一致
    -h "mars" 指定容器的hostname
    -e username="ritchie" 设置环境变量
    --env-file=[] 从指定文件读入环境变量
    --cpuset="0-2" or --cpuset="0,1,2" 绑定容器到指定CPU运行
    -m 设置容器使用内存最大值
    --net="bridge" 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型
    --link=[] 添加链接到另一个容器
    --expose=[] 开放一个端口或一组端口

    -it

    -it 参数一般连用,在docker run 启动一个容器后提供一个容器的终端,如果容器中没开启shell进程,也无法对容器进行交互

    [root@docker ~]# docker run -it centos
    [root@a8c4541d52fc /]# 
    
    

    退出容器请使用CTRL + D ;CTRL + C 只会发送给容器的shell,不会退出容器

    --name="container name"

    --name 将会为容器指定一个名称,没有这个参数,容器的名称将由系统分配

    [root@docker ~]# docker create --name="centos-1" centos
    eb96e184b3840979de8c9e66adda190c8465fc73dfae65418d8bc0c9c62f491c
    [root@docker ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    eb96e184b384        centos              "/bin/bash"         25 seconds ago      Created                                 centos-1
    
    

    -p

    -p 参数将一个docker主机的端口映射到容器中,有如下几种格式:
    ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | [range hostPort]:containerPort |[range hostPort]:[range containerPort]

    [root@docker ~]# docker run -it -d -p 192.168.0.141:10000:80 --name=c-1 centos
    37a154d52dc218499e535e2264753006dc29e40e7d33f35be420d38b3bfb4847
    [root@docker ~]# docker run -it -d -p 192.168.0.141::80 --name=n-1 centos
    1acf8de94a8e485a19be3e5be0735f4e88807cee8c0f466d18eb1bf2c633ab44
    [root@docker ~]# docker run -it -d -p 10001:80 --name=a-1 centos
    bbb33f76794dd059a96872c1ff2add28719df15b326fb87864284d10d5e9d470
    [root@docker ~]# docker run -it -d -p 10010-10020:80-90 --name=q-1 centos
    3877df081cea0903ba91910bf4ee5150cac55d337435f66075c237956350bd42
    [root@docker ~]# docker run -it -d -p 10030-10040:80 --name=w-1 centos
    8296c4196bfaae55d7d7ec145086bf31b257aea733567501a61d57dcd553a320
    [root@docker ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                                                                                                                                                                                                                                         NAMES
    8296c4196bfa        centos              "/bin/bash"         3 seconds ago       Up 2 seconds        0.0.0.0:10031->80/tcp                                                                                                                                                                                                                                         w-1
    3877df081cea        centos              "/bin/bash"         11 seconds ago      Up 10 seconds       0.0.0.0:10010->80/tcp, 0.0.0.0:10011->81/tcp, 0.0.0.0:10012->82/tcp, 0.0.0.0:10013->83/tcp, 0.0.0.0:10014->84/tcp, 0.0.0.0:10015->85/tcp, 0.0.0.0:10016->86/tcp, 0.0.0.0:10017->87/tcp, 0.0.0.0:10018->88/tcp, 0.0.0.0:10019->89/tcp, 0.0.0.0:10020->90/tcp   q-1
    bbb33f76794d        centos              "/bin/bash"         19 seconds ago      Up 18 seconds       0.0.0.0:10001->80/tcp                                                                                                                                                                                                                                         a-1
    1acf8de94a8e        centos              "/bin/bash"         27 seconds ago      Up 26 seconds       192.168.0.141:32769->80/tcp                                                                                                                                                                                                                                   n-1
    37a154d52dc2        centos              "/bin/bash"         39 seconds ago      Up 39 seconds       192.168.0.141:10000->80/tcp                                                                                                                                                                                                                                   c-1
    
    
    

    -v 挂载数据卷

    将本地文件/root/pan1/pan.txt 挂载到容器/etc/resolv.conf

    [root@docker ~]# docker run -d  --name web-1 -v /root/pan1/pan.txt:/etc/resolv.conf  nginx
    d01e19d1c6284a7a5dfc344c7f4ee27da5c099d7ebd95048efea3e6c7b038d55
    
    

    将本地目录/root/pan1挂载到容器/etc/pan1 下

    [root@docker ~]# docker run -d  --name web-2 -v /root/pan1:/etc/pan1  nginx
    52a1a7df2964e62a11cf53778e3d461e21090857b03d277db36509c94b3be660
    
    

    创建一个数据卷,数据卷不会随着容器被删除而被删除

    [root@docker ~]# docker create -v /shiyanloudata --name shiyan -it  centos
    46fa93471dda1814781ba57727e12e7678ca243b281ed928b64752ab6b2f6031
    [root@docker ~]# docker volume ls
    DRIVER              VOLUME NAME
    local               f8bb990062eebe25d7fdfaa76db5130d89ebacd50a18e25992e83e97ba862123
    
    

    数据卷可以被多个容器共享,容器挂载其他容器的数据卷

    [root@docker ~]# docker run --volumes-from shiyan --name web12345 -d nginx
    8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103
    
    

    查看容器的信息

    docker inspect [OPTIONS] NAME|ID [NAME|ID...]

    [root@docker ~]# docker inspect web12345
    [
        {
            "Id": "8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103",
            "Created": "2017-07-05T15:53:39.588794033Z",
            "Path": "nginx",
            "Args": [
                "-g",
                "daemon off;"
            ],
            "State": {
                "Status": "running",
                "Running": true,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 11693,
                "ExitCode": 0,
                "Error": "",
                "StartedAt": "2017-07-05T15:53:39.755359815Z",
                "FinishedAt": "0001-01-01T00:00:00Z"
            },
            "Image": "sha256:c246cd3dd41d35f9deda43609cdeaa9aaf04d3658f9c5e38aad25c4ea5efee10",
            "ResolvConfPath": "/var/lib/docker/containers/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103/resolv.conf",
            "HostnamePath": "/var/lib/docker/containers/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103/hostname",
            "HostsPath": "/var/lib/docker/containers/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103/hosts",
            "LogPath": "/var/lib/docker/containers/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103-json.log",
            "Name": "/web12345",
            "RestartCount": 0,
            "Driver": "overlay",
            "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": [
                    "shiyan"
                ],
                "CapAdd": null,
                "CapDrop": null,
                "Dns": [],
                "DnsOptions": [],
                "DnsSearch": [],
                "ExtraHosts": null,
                "GroupAdd": null,
                "IpcMode": "",
                "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": null,
                "BlkioDeviceReadBps": null,
                "BlkioDeviceWriteBps": null,
                "BlkioDeviceReadIOps": null,
                "BlkioDeviceWriteIOps": null,
                "CpuPeriod": 0,
                "CpuQuota": 0,
                "CpuRealtimePeriod": 0,
                "CpuRealtimeRuntime": 0,
                "CpusetCpus": "",
                "CpusetMems": "",
                "Devices": [],
                "DeviceCgroupRules": null,
                "DiskQuota": 0,
                "KernelMemory": 0,
                "MemoryReservation": 0,
                "MemorySwap": 0,
                "MemorySwappiness": -1,
                "OomKillDisable": false,
                "PidsLimit": 0,
                "Ulimits": null,
                "CpuCount": 0,
                "CpuPercent": 0,
                "IOMaximumIOps": 0,
                "IOMaximumBandwidth": 0
            },
            "GraphDriver": {
                "Data": {
                    "LowerDir": "/var/lib/docker/overlay/ff7668f4f80e6c01e2d669be8303b33191da439384e3212eb4c6dde337897e5d/root",
                    "MergedDir": "/var/lib/docker/overlay/f37762cd46028d515d9076e386f725a0d28ced80f16b7fc6983b7e7bcf57d85c/merged",
                    "UpperDir": "/var/lib/docker/overlay/f37762cd46028d515d9076e386f725a0d28ced80f16b7fc6983b7e7bcf57d85c/upper",
                    "WorkDir": "/var/lib/docker/overlay/f37762cd46028d515d9076e386f725a0d28ced80f16b7fc6983b7e7bcf57d85c/work"
                },
                "Name": "overlay"
            },
            "Mounts": [
                {
                    "Name": "07a47233da2320118f5fd04621bede68f178b460bf045c72b602c0f58881620e",
                    "Source": "/var/lib/docker/volumes/07a47233da2320118f5fd04621bede68f178b460bf045c72b602c0f58881620e/_data",
                    "Destination": "/shiyan",
                    "Driver": "local",
                    "Mode": "",
                    "RW": true,
                    "Propagation": ""
                }
            ],
            "Config": {
                "Hostname": "8b6cb7beed18",
                "Domainname": "",
                "User": "",
                "AttachStdin": false,
                "AttachStdout": false,
                "AttachStderr": false,
                "ExposedPorts": {
                    "80/tcp": {}
                },
                "Tty": false,
                "OpenStdin": false,
                "StdinOnce": false,
                "Env": [
                    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                    "NGINX_VERSION=1.13.1-1~stretch",
                    "NJS_VERSION=1.13.1.0.1.10-1~stretch"
                ],
                "Cmd": [
                    "nginx",
                    "-g",
                    "daemon off;"
                ],
                "ArgsEscaped": true,
                "Image": "nginx",
                "Volumes": null,
                "WorkingDir": "",
                "Entrypoint": null,
                "OnBuild": null,
                "Labels": {},
                "StopSignal": "SIGTERM"
            },
            "NetworkSettings": {
                "Bridge": "",
                "SandboxID": "9f43f43c72567aaad066ba824cf33a5349c95a5f99b5c771c558fedcdbe396f4",
                "HairpinMode": false,
                "LinkLocalIPv6Address": "",
                "LinkLocalIPv6PrefixLen": 0,
                "Ports": {
                    "80/tcp": null
                },
                "SandboxKey": "/var/run/docker/netns/9f43f43c7256",
                "SecondaryIPAddresses": null,
                "SecondaryIPv6Addresses": null,
                "EndpointID": "1c1efb2dc8b892d45dbb5a45ca1a1b7477f61fc76c7ed58f3fc71207e36fef2d",
                "Gateway": "172.17.0.1",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "IPAddress": "172.17.0.9",
                "IPPrefixLen": 16,
                "IPv6Gateway": "",
                "MacAddress": "02:42:ac:11:00:09",
                "Networks": {
                    "bridge": {
                        "IPAMConfig": null,
                        "Links": null,
                        "Aliases": null,
                        "NetworkID": "6536d99d4f08428535db0de618aa15b0ee2663c50b197ec4dca77b9a1210f9e4",
                        "EndpointID": "1c1efb2dc8b892d45dbb5a45ca1a1b7477f61fc76c7ed58f3fc71207e36fef2d",
                        "Gateway": "172.17.0.1",
                        "IPAddress": "172.17.0.9",
                        "IPPrefixLen": 16,
                        "IPv6Gateway": "",
                        "GlobalIPv6Address": "",
                        "GlobalIPv6PrefixLen": 0,
                        "MacAddress": "02:42:ac:11:00:09"
                    }
                }
            }
        }
    ]
    
    

    查看指定的信息使用-f参数:

    [root@docker ~]# docker inspect -f {{.LogPath}} web12345
    /var/lib/docker/containers/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103-json.log
    
    [root@docker ~]# docker inspect -f {{.Config.Image}} web12345
    nginx
    
    

    参考资料:https://docs.docker.com/engine/reference/commandline/inspect/#examples

    参考文档

    https://docs.docker.com/engine/reference/run

    https://docs.docker.com/engine/reference/commandline/create/

  • 相关阅读:
    LR12解决不能打开webTours服务问题
    python中join()方法介绍
    python中的sort方法和sorted方法
    如何发送最新的测试报告到目标邮箱?
    python2.7发送邮件失败之——邮箱安全问题
    python2.7发送邮件失败之——代码问题
    python2.7发送邮件失败之——SMTPAuthenticationError问题
    使用HTMLTestRunner在目标目录下并未生成HTML文件解决办法
    python标准日志模块logging及日志系统设计
    性能测试需求分析
  • 原文地址:https://www.cnblogs.com/panjunbai/p/7124179.html
Copyright © 2020-2023  润新知