wangshouchang

docker 入门之基本命令解释

3 Docker 入门

  1. 首先确保docker 已成功安装在Linux 或windows 系统中
    我们可以使用

    docker info

查看docker是否成功安装和正常运行

  1. 运行我们第一个docker 容器
  • 我们使用docker run 命令启动一个容器

    sudo docker run -i -t ubuntu /bin/bash 
    
    docker pull registry.docker-cn.com/library/ubuntu:16.04 

其实上面两种方式都是一样的,只不过第一种是先在在本机获取,要是本机没有直接去Docker hub 的镜像源去获取,而第二种方法是去我们指定的镜像源去获取,推荐使用第二种,因为第一种方法获取的,有时候会超时因为是有GFW

随后docker 在文件系统内部用这个镜像创建了一个容器

  1. 使用这个容器
  • 在我们创建一个容器之后,我们将会有一个交互的shell

    [root@localhost ~]# sudo docker run -i -t ubuntu /bin/bash
    root@90580bd2674a:/#

    我们就成功的创建了一个Linux 容器了,我们可以向操作普通Linux 一样操作这个容器的内容

    1 hostname
    2 cat /etc/hosts
    3 ip a
    4 ps -aux
    5 vim a
    6 apt-get update && apt-get install vim

** 当我们想结束容器的时候 输入 exit 就退出这个容器了**

docker ps -a//所有容器
docker ps //当前运行的容器
  1. 容器的命名
  • 给 容器命名

    sudo run --name wsc_container -i -t ubuntu /bin

这样我么就成功的创建可一个我们命名的容器,容器命名的好处有很多,例如一个容器名称只有一个,我们可以通过容器的名称来判断容器的功能。要是创建的容器名称重名的话会创建失败

  1. 重启已经停止的容器

    docker start wsc_container //根据名称
    
    docker start e691305b1375 //根据ID
  2. 附着到容器上

    简单来说就是连接到一个已经正在运行的容器中,相当于重新创建一个SHell连接

    docker attach wsc_container //根据名称
    docker attach e691305b1375 //根据ID

7.创建守护式容器

守护容器就是一个运行在后台的容器,用于长期的运行。就像我们系统的中的服务一样,在后台默默无闻的工作

 sudo docker run --name daemon_dave -d ubuntu /bin/sh -c "while true : do echo hello world: sleep 1 : done"

-d 参数表示 守护容器 ,我们在容器中运行了一个 while 循环 用于一直打印 hello word

  1. 容器内部都在干什么

获取守护式容器的日志

sudo docker logs daemon_dave

跟踪守护式容器

  docker logs -f daemon_dave

跟踪守护式容器 并输出时间

 docker logs -f daemon_dave
 
  1. Docker 日志驱动
    可以将docker 容器的日志输出到别的地方

    sudo docker run --log-driver="syslog" --name daemon_dwayne -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

上面的这个会将容器的日志输出到Syslog 中,

  1. 查看容器内的进程

    查看内部的进程
    docker top daemon_dave

11.Docker 统计消息

使用docker status 显示一个或者多个容器的统计信息,并动态显示

docker top daemon_dwayne

12.在容器内部运行进程
我们可以通过命令在容器外部向容器的内部运行程序

sudo docker exec -d daemon_dave touch /etc/new_config_file

获取运行交互式命令

docker exec -t -i daemon_dave /bin/bash 

-t 和 -i 表示进程创建TTY 并捕捉到STDIN 
  1. 停止守护进程

    docker stop daemon_dave

    docker stop e691305b1375

  2. 自动重启容器

    因为容器会各种原因重启,我们可以通过在创建的时候添加命令,然后使容器在关闭之后任然能重启

    sudo docker run --restart=on-failure:5 --name daemon_restart -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

上面的参数中 --restart=on-failure:5 是指 在容器重启最多5次 我们也可以将标志设置为--restart=always 指 无论docker 怎样 ,容器都会重启

  1. 深入容器

    通过命令 inspect 查看更多容器的信息

    docker inspect daemon_dave

将会显示下面的这些信息

[root@localhost ~]# docker inspect daemon_dave
[
    {
        "Id": "6aab43d6f55ad8531329917623d26a1b00139ee9589ce23f84943cb2282a502a",
        "Created": "2018-01-14T08:41:49.345208872Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true; do echo hello world; sleep 1; done"
        ],
        "State": {
            "Status": "exited",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-01-14T08:41:50.053852791Z",
            "FinishedAt": "2018-01-14T08:51:52.032411018Z"
        },
        "Image": "sha256:00fd29ccc6f167fa991580690a00e844664cb2381c74cd14d539e36ca014f043",
        "ResolvConfPath": "/var/lib/docker/containers/6aab43d6f55ad8531329917623d26a1b00139ee9589ce23f84943cb2282a502a/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/6aab43d6f55ad8531329917623d26a1b00139ee9589ce23f84943cb2282a502a/hostname",
        "HostsPath": "/var/lib/docker/containers/6aab43d6f55ad8531329917623d26a1b00139ee9589ce23f84943cb2282a502a/hosts",
        "LogPath": "",
        "Name": "/daemon_dave",
        "RestartCount": 0,
        "Driver": "devicemapper",
        "MountLabel": "system_u:object_r:svirt_sandbox_file_t:s0:c857,c907",
        "ProcessLabel": "system_u:system_r:svirt_lxc_net_t:s0:c857,c907",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "journald",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "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": "docker-runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "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": {
            "Name": "devicemapper",
            "Data": {
                "DeviceId": "25",
                "DeviceName": "docker-253:0-8727-e5801ce40b05766564430ed8b938a404cbacd96d4a9f2ed70e134e2e2ba408b6",
                "DeviceSize": "10737418240"
            }
        },
        "Mounts": [],
        "Config": {
            "Hostname": "6aab43d6f55a",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "while true; do echo hello world; sleep 1; done"
            ],
            "Image": "ubuntu",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "42290d6bf35d0bb0aa0e483f2581c4da8f915071f06b4f316d195cf30ecbc087",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": null,
            "SandboxKey": "/var/run/docker/netns/42290d6bf35d",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "c14208a2c1e7fd8e0dd0a8ad05cda943249becbc842857160494222340160c92",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": ""
                }
            }
        }
    }
]

我们也可以单独的查看容器中的内容信息

         docker inspect  --format='{{.State.Running }}'   daemon_dave

   docker inspect  --format='{{.Name}}  {{.State.Running }}'   daemon_dave
  1. 删除容器

    docker rm stoic_pike

    docker rm thirsty_varahamihira

posted on 2018-01-18 23:30 王守昌 阅读(...) 评论(...) 编辑 收藏

相关文章: