5 Docker容器相关命令

1 容器启动

创建容器命令:
    docker run

参数:
    -i : 表示运行容器,让容器的标准输入保持打开

    -t : 表示容器启动后进入其命令行,加入-it后,容器创建后,即自动登录(分配一个伪终端)

    --name : 创建的容器名称

    -v : 可以挂在宿主机目录至容器目录,如-v /data:/tmp/data,左边为宿主机目录,右边为容器目录。

    -d : 容器处于守护进程运行,创建后,不自动登录

    -p : 可以映射宿主机端口至容器端口,如 -p 8080:8081(左边为宿主机端口,右边为容器端口),可使用多个 -p  做多个端口映射


容器属性:
    CONTAINER ID: 容器 ID

    IMAGE: 使用的镜像

    COMMAND: 启动容器时运行的命令

    CREATED: 容器的创建时间

    STATUS: 容器状态
        CREATED : 已创建
        RESTARTING : 重启中
        RUNNING : 运行中
        REMOVING : 迁移中
        PAUSED : 暂停
        EXITED : 停止
        DEAD : 死亡

    PORTS: 容器的端口信息和使用的连接类型(tcp\udp)

    NAMES: 自动分配的容器名称

1.1 以交互的方式启动

# 启动容器 -it(以交互的方式) gp6-mysql-5.7(自定义服务名称) /bin/bash(通过该命令交互,打开命令行) 
[root@localhost ~]# docker run -it --name  gp6-mysql-5.7 mysql:5.7 /bin/bash

# 此时已进入容器(相当于虚拟一台服务器)
root@687ce880b698:/# ls -l
total 4
drwxr-xr-x.   1 root root   19 Dec 28 23:00 bin
drwxr-xr-x.   2 root root    6 Sep  8 10:51 boot
drwxr-xr-x.   5 root root  360 Jan  6 08:48 dev
drwxr-xr-x.   2 root root    6 Dec 28 22:59 docker-entrypoint-initdb.d
lrwxrwxrwx.   1 root root   34 Dec 28 23:00 entrypoint.sh -> usr/local/bin/docker-entrypoint.sh
drwxr-xr-x.   1 root root   66 Jan  6 08:48 etc
drwxr-xr-x.   2 root root    6 Sep  8 10:51 home
drwxr-xr-x.   1 root root   45 Dec 24 00:00 lib
drwxr-xr-x.   2 root root   34 Dec 24 00:00 lib64
drwxr-xr-x.   2 root root    6 Dec 24 00:00 media
drwxr-xr-x.   2 root root    6 Dec 24 00:00 mnt
drwxr-xr-x.   2 root root    6 Dec 24 00:00 opt
dr-xr-xr-x. 108 root root    0 Jan  6 08:48 proc
drwx------.   1 root root   24 Dec 28 22:59 root
drwxr-xr-x.   1 root root   21 Jan  6 08:48 run
drwxr-xr-x.   2 root root 4096 Dec 24 00:00 sbin
drwxr-xr-x.   2 root root    6 Dec 24 00:00 srv
dr-xr-xr-x.  13 root root    0 Jan  6 08:01 sys
drwxrwxrwt.   1 root root    6 Dec 28 23:00 tmp
drwxr-xr-x.   1 root root   19 Dec 24 00:00 usr
drwxr-xr-x.   1 root root   41 Dec 24 00:00 var


# 退出容器,容器既停止
root@74a45d30f16f:/# exit         
exit 

1.2 以守护方式启动

[root@localhost ~]# docker run -di --name  gp6-mysql-5.7.2 mysql:5.7 
f8699708c78c151cf7be8c36bdf3d706e0054975f9b9b62f79e5859e75c13209

# 第一种进入容器(建议使用)
[root@localhost ~]# docker exec -it gp6-mysql-5.7 /bin/bash

# Ctrl + q将容器切到后台
root@bcceae209dd0:/# read escape sequence

# exec会在容器中启动新的进程
[root@localhost ~]# docker top bcceae209dd0
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
polkitd             1727                1711                0                   14:38               ?                   00:00:00            mysqld
root                2057                1711                0                   14:50               pts/0               00:00:00            /bin/bash

# 此时退出,容器不会停止
root@74a45d30f16f:/# exit         
exit

# 第二种进入容器(不建议使用,退出容器,容器即停止)
[root@localhost ~]# docker attach gp6-tomcat-8

# 未能看到期望输出的  Hello GP6 Docker ,输出的长字符串叫做容器 ID
[root@localhost ~]# docker run -d centos:7 /bin/echo "Hello GP6 Docker"
333aa30cc0fcd6745757752be5534287884b039a93fb47e98d29d652587cf4dc

# 宿主主使用 docker logs 命令,查看容器内的标准输出
[root@localhost ~]# docker logs 333aa30cc0fc
Hello GP6 Docker

# -t 查看日志的输出时间
[root@localhost ~]# docker logs -t 99930c323df0
2020-01-13T06:33:55.395216688Z Hello GP6 Docker

-t : 显示日志的输出时间
-f : 与linux查看日志的-f效果一直
--tail : --tail 10 只显示最新的10条日志

# 查看运行容器的进程信息
[root@localhost ~]# docker top bcceae209dd0
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
polkitd             1727                1711                3                   14:38               ?                   00:00:00            mysqld

2 查询存在的容器

# 查看启动的容器
[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
687ce880b698        mysql:5.7           "docker-entrypoint..."   5 minutes ago       Up 2 seconds        3306/tcp, 33060/tcp   gp6-mysql-5.7


# 查看所有的容器
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
f8699708c78c        mysql:5.7           "docker-entrypoint..."   38 seconds ago      Exited (1) 37 seconds ago                        gp6-mysql-5.7.2
74a45d30f16f        mysql:5.7           "docker-entrypoint..."   3 minutes ago       Exited (127) 2 minutes ago                       gp6-mysql-5.7

3 容器停止

# 容器停止
[root@localhost ~]# docker stop gp6-mysql-5.7
gp6-mysql-5.7

# 容器启动(当容器第一次启动时,被命名后,可用该命令启动)
[root@localhost ~]# docker start gp6-mysql-5.7
gp6-mysql-5.7

4 容器删除

# 容器删除(提示不能删除运行的容器)
[root@localhost ~]# docker rm gp6-mysql-5.7
Error response from daemon: You cannot remove a running container 74a45d30f16fee7f94e4499d9ba1a943f4893464d9e10d77651a367040cc0f3c. Stop the container before attempting removal or use -f

# 容器停止
[root@localhost ~]# docker stop gp6-mysql-5.7
gp6-mysql-5.7

# 容器删除
[root@localhost ~]# docker rm gp6-mysql-5.7
gp6-mysql-5.7

4 文件拷贝

# 将宿主机文件拷贝至容器中
[root@localhost ~]# docker cp anaconda-ks.cfg gp6-mysql-5.7:/usr/local


# 将容器中文件拷贝至宿主机中
[root@localhost ~]# docker cp  gp6-mysql-5.7:/usr/local/anaconda-ks.cfg new.config
[root@localhost ~]# ll
总用量 8
-rw-------. 1 root root 1258 1月   6 15:54 anaconda-ks.cfg
-rw-------. 1 root root 1258 1月   6 15:54 new.config

5 目录挂载

# 将宿主机目录与容器目录进行映射,这样修改宿主机目录中的文件会同时修改容器内目录内的文件
[root@localhost ~]# docker run -di --name gp6-tomcat-8 -p 8080:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8-jdk8-openjdk
514a7ff658332451fe3a18893e9bc519649e7a64b599292eda8188863b95067f

如果共享的是多级目录,可能会出现权限不足问题,需添加参数--privileged=true解决

6 Docker命令

# 查看docker所有命令
[root@localhost ~]# docker
Usage:  docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
......


# 命令 docker command --help 了解详细的 Docker 命令使用方法
[root@localhost ~]# docker stats --help
Usage:  docker stats [OPTIONS] [CONTAINER...]
Display a live stream of container(s) resource usage statistics
Options:
  -a, --all             Show all containers (default shows just running)
      --format string   Pretty-print images using a Go template
      --no-stream       Disable streaming stats and only pull the first result
      --no-trunc        Do not truncate output

7 查看容器ip

[root@localhost gp6]# docker inspect gp6-mysql-5.7
[
    {
        "Id": "687ce880b698aa7eb1cf53cf8949970a21e9fdce2248d3512f779570c3bdcc13",
        "Created": "2020-01-06T08:48:21.366894132Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "/bin/bash"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 12364,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-01-06T11:19:03.839227432Z",
            "FinishedAt": "2020-01-06T10:08:20.23618595Z"
        },
        "Image": "sha256:db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901a6",
        "ResolvConfPath": "/var/lib/docker/containers/687ce880b698aa7eb1cf53cf8949970a21e9fdce2248d3512f779570c3bdcc13/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/687ce880b698aa7eb1cf53cf8949970a21e9fdce2248d3512f779570c3bdcc13/hostname",
        "HostsPath": "/var/lib/docker/containers/687ce880b698aa7eb1cf53cf8949970a21e9fdce2248d3512f779570c3bdcc13/hosts",
        "LogPath": "",
        "Name": "/gp6-mysql-5.7",
        "RestartCount": 0,
        "Driver": "overlay2",
        "MountLabel": "system_u:object_r:svirt_sandbox_file_t:s0:c871,c927",
        "ProcessLabel": "system_u:system_r:svirt_lxc_net_t:s0:c871,c927",
        "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,
            "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": "overlay2",
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/9abef40215aad31d1b0971413126462f3f5c8b5c9fac9574e0bd2f077ef596a9-init/diff:/var/lib/docker/overlay2/f0fd8cb367c19e5bc889ed630112322cc3b3151de17895b82362a64f5ff7ade5/diff:/var/lib/docker/overlay2/1833ae7c9ed0dfe260149986d6c42c4280ae5577d93299d5f6ff8788c9151482/diff:/var/lib/docker/overlay2/a67e82b236c220b56fb77b6710d34c2bbcf015b9fe9201c6c9c6150e032be0ae/diff:/var/lib/docker/overlay2/13f40a71fea1351986194f2db49d8a299eab7bcb416c60f9238e722ef43586d8/diff:/var/lib/docker/overlay2/c06a15cee56132b770b164992f24b66617b13c6a9dcbefcc366b5a870cd43d38/diff:/var/lib/docker/overlay2/bfeaa31e1b156bcff82488babf215c32785022d5062e66fefcfb49bf9ddd6364/diff:/var/lib/docker/overlay2/98365f74934fa043d3ee18926949dd39e94ffecab426fde44d2d4a3b7daec840/diff:/var/lib/docker/overlay2/e731ab57e6279734052ea7e87b42edea56dcef1ee080f3a10c10c313a1b704d7/diff:/var/lib/docker/overlay2/7fc392fcc2dbefa96897105dfbec58b4b06217947d233f7be8c10317ddca7e7c/diff:/var/lib/docker/overlay2/1174e41a7eb922e0fe741134b719e562d52ad9aede667d2545ec6bd01dae5689/diff:/var/lib/docker/overlay2/1a3ed9a80c36899cd80e57eddde7ca55519ed80e773b1358bd0b8d4f0ed8bdeb/diff",
                "MergedDir": "/var/lib/docker/overlay2/9abef40215aad31d1b0971413126462f3f5c8b5c9fac9574e0bd2f077ef596a9/merged",
                "UpperDir": "/var/lib/docker/overlay2/9abef40215aad31d1b0971413126462f3f5c8b5c9fac9574e0bd2f077ef596a9/diff",
                "WorkDir": "/var/lib/docker/overlay2/9abef40215aad31d1b0971413126462f3f5c8b5c9fac9574e0bd2f077ef596a9/work"
            }
        },
        "Mounts": [
            {
                "Type": "volume",
                "Name": "990c5fcf0894d43bddf85d5f38b83c3b92056a0c09ffee2889f7743a9f51477a",
                "Source": "/var/lib/docker/volumes/990c5fcf0894d43bddf85d5f38b83c3b92056a0c09ffee2889f7743a9f51477a/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
        "Config": {
            "Hostname": "687ce880b698",
            "Domainname": "",
            "User": "",
            "AttachStdin": true,
            "AttachStdout": true,
            "AttachStderr": true,
            "ExposedPorts": {
                "3306/tcp": {},
                "33060/tcp": {}
            },
            "Tty": true,
            "OpenStdin": true,
            "StdinOnce": true,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.7",
                "MYSQL_MAJOR=5.7",
                "MYSQL_VERSION=5.7.28-1debian9"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "mysql:5.7",
            "Volumes": {
                "/var/lib/mysql": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "a84fe61a69a90cd8cb58bb18f22a5190ab18a78502cf62ce865934aa5dede222",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "3306/tcp": null,
                "33060/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/a84fe61a69a9",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "95a2dc39ca8fa6909e2e29c7ed4a89bc579b6a8c64ff219b7092d3289c7b7f82",
            "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": "bf62f97be7c1b9542ff830a6d695152e21333da0a96509b479c66bb286376b33",
                    "EndpointID": "95a2dc39ca8fa6909e2e29c7ed4a89bc579b6a8c64ff219b7092d3289c7b7f82",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02"
                }
            }
        }
    }
]



# 只查看ip地址
[root@localhost gp6]# docker inspect --format='{{.NetworkSettings.IPAddress}}' gp6-mysql-5.7
172.17.0.2

容器IP

8将容器保存为镜像

# 将将容器保存为镜像
[root@localhost gp6]# docker commit  -m="描述信息" -a="指定镜像作者" gp6-nginx gp6-nginx-image
sha256:7b228a928b93221bd513ef749b9ef9a75a747fdfd984ab9e14f32107ae010c1b


# 查看镜像列表
[root@localhost gp6]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gp6-nginx-image     latest              7b228a928b93        10 seconds ago      126MB
tomcat              8-jdk8-openjdk      ed94f55483b8        3 days ago          507MB
redis               latest              9b188f5fb1e6        4 days ago          98.2MB
nginx               latest              f7bb5701a33c        9 days ago          126MB

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。