Docker第三篇(docker单机管理)

常用命令

1、容器版本和详细信息 

docker info

  

docker --version   #查看docker服务器版本

2、镜像查询

docker search  镜像名

  

建议大家直接去官网查看docker镜像包,看的更人性化一点。https://hub.docker.com/,在docker官网上直接搜索我们需要的镜像,如果需要该镜像里面也提供了下载方式,直接复制里面吗的docker pull 镜像名即可。

3、镜像下载

docker pull  镜像名

  下载镜像,默认后面不加版本号的话就是最新版本。

  

 

  注意,SIZE不是说这个镜像就是这么大,镜像是分层的,不确定他到底有没有公用的层级,至少我们知道这个镜像等于或者大于他显示的这个大小。

   

4、容器运行

docker run  

  下载完以后我们要使用docker run运行容器,基本如法如下

  这是非常简化的一个启动命令,run代表运行,--name就是给这个容器起一个名字,-p是指定端口映射,前面是宿主机端口,冒号后面是容器里面运行的端口, -d参数让它后台运行,最后的nginx:latest是指定使用的镜像名和版本号。

docker run --name nginx -p 80:80 -d nginx:latest

  run命令的延伸:

--restart=always   #容器的自动启动(容器服务启动后容器自动,相当于开机自启动)
-h x.xx.xx             #设置容器主机名,相当于linux的hostname命令,不同的是-h是永久设置
--dns xx.xx.xx.xx   #设置容器使用的DNS服务器,因为容器也需要上网
--dns-search          #DNS搜索设置
--add-host  hostname:IP   注入hostname<>IP解析,相当于linux改host文件,加入--add-host  www.baidu.com:127.0.0.1  当然你可以可以exec进去改。
--rm                      #服务停止是自动删除(docker服务停止后,该容器自动删除)

  

 

5、镜像删除和容器删除

docker rmi  和 docker rm

  docker rmi是删除镜像命令,最后一个i其实就是images的缩写,docker rm是删除容器命令。这里我们要清楚一个步骤,我们知道docker容器用开发的话术说,docker容器是docker镜像实例化后的一个对象。删除的时候必须要先删除容器,才能删除镜像。如果用这个镜像的容器有好几个,你要是想删除这个镜像,就得把容器都删除了,才能删除镜像。日常中的标准操作是先停止容器,然后删除容器,最后删除镜像。如下图操作:

  

 

   

6、查看运行的或运行过的容器

docker ps

  docker ps:显示当前正在运行的容器,但是通常我们会在后面再加一个-a参数,-a==ago代表过去的一起,docker ps -a

  

 

   docker ps -a和docker ps -a -q都是最常用的,加上-q只显示docker id,一般用作删除所有容器时候使用,比如 docker rm -f $(docker ps -a -q)

7、容器的启动和停止

docker start/stop/restart     #启动/关闭/重启容器

  注意,docker ps是查看当前正在运行的容器,docker ps -a是查看运行过的容器(你看到的容器有可能是正在运行的,也有可能是运行过的,所以一般两个命令结合使用)

  

8、容器的详细信息查看

docker ps --no-trunc  #查看容器完整128位id

  

docker inspect   容器id    #查看容器所有基本信息

  案例

[root@localhost docker]# docker inspect 2cf285ab4221
[
    {
        "Id": "2cf285ab4221081ebf426b5c1d4f3912e17281c9b8bb745a9d5fa4403da91330",
        "Created": "2020-04-02T03:52:09.556563387Z",
        "Path": "nginx",
        "Args": [
            "-g",
            "daemon off;"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 1948,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-04-02T03:56:23.757687935Z",
            "FinishedAt": "2020-04-02T03:56:05.279269874Z"
        },
        "Image": "sha256:ed21b7a8aee9cc677df6d7f38a641fa0e3c05f65592c592c9f28c42b3dd89291",
        "ResolvConfPath": "/var/lib/docker/containers/2cf285ab4221081ebf426b5c1d4f3912e17281c9b8bb745a9d5fa4403da91330/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/2cf285ab4221081ebf426b5c1d4f3912e17281c9b8bb745a9d5fa4403da91330/hostname",
        "HostsPath": "/var/lib/docker/containers/2cf285ab4221081ebf426b5c1d4f3912e17281c9b8bb745a9d5fa4403da91330/hosts",
        "LogPath": "/var/lib/docker/containers/2cf285ab4221081ebf426b5c1d4f3912e17281c9b8bb745a9d5fa4403da91330/2cf285ab4221081ebf426b5c1d4f3912e17281c9b8bb745a9d5fa4403da91330-json.log",
        "Name": "/nginx",
        "RestartCount": 0,
        "Driver": "overlay",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {
                "80/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "80"
                    }
                ]
            },
            "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": "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": [],
            "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": "overlay",
            "Data": {
                "LowerDir": "/var/lib/docker/overlay/c9a4cfd4eeabb5664a45c955aa766a68f54bbd6295923890e6caa7c14ee2bb1f/root",
                "MergedDir": "/var/lib/docker/overlay/2061ad2ad9458bae3d05213e37a644d28a0731dca0942b344364c78da77aab8f/merged",
                "UpperDir": "/var/lib/docker/overlay/2061ad2ad9458bae3d05213e37a644d28a0731dca0942b344364c78da77aab8f/upper",
                "WorkDir": "/var/lib/docker/overlay/2061ad2ad9458bae3d05213e37a644d28a0731dca0942b344364c78da77aab8f/work"
            }
        },
        "Mounts": [],
        "Config": {
            "Hostname": "2cf285ab4221",
            "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.17.9",
                "NJS_VERSION=0.3.9",
                "PKG_RELEASE=1~buster"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "ArgsEscaped": true,
            "Image": "nginx:latest",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGTERM"
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "50b4587d2e859c86e3b636da7d1e5d47dde275ca3e0e919120b479c3f8b0b8c8",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "80/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "80"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/50b4587d2e85",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "0a5b9470d9475edc9f3c1bc0a54056ce54f1dfa29652c317b8e164d951158d08",
            "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": "d92fddf2ac6aafbe5cb17387111c438aa6401f6c59628a01bf879cb0ce89e5e2",
                    "EndpointID": "0a5b9470d9475edc9f3c1bc0a54056ce54f1dfa29652c317b8e164d951158d08",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02"
                }
            }
        }
    }
]
docker inspect

 

9、查看容器使用的硬件资源情况,有点像top命令

docker stats  容器id 

  

 

10、容器的日志查看

docker  logs  容器id    #查看容器日志

  

 

11、容器执行命令

docker exec  容器名  容器内部执行命令
docker exec   -it  容器名  /bin/bash

  docker exec 容器名  容器内部执行命令:

     这种情况下用在就只是查看一个东西,不需要进入到容器内部去,但是有个注意点,比如下图,我们可以使用ls  -l命令,但是不能直接ll。

  

 

    docker exec -it 容器名 /bin/bash

  大家可看到圈红的地方已经变成了容器的id,相当于我们已经进入ssh到容器的内部了,退出输入exit回车既可以出去了。

  

 

  

 

posted @ 2020-04-02 12:32  Charles.L  阅读(730)  评论(0)    收藏  举报