您当前的位置: 首页 >  docker

Bulut0907

暂无认证

  • 4浏览

    0关注

    346博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Docker容器相关命令

Bulut0907 发布时间:2022-05-31 09:31:19 ,浏览量:4

目录
  • 1. docker run---初始化运行一个容器,并退出容器
  • 2. docker ps---查看有哪些容器
  • 3. docker stop---停止容器
  • 4. docker kill---强制停止容器
  • 5. docker start---启动已经停止的容器
  • 6. docker restart---重启容器
  • 7. docker rm---删除容器
  • 8. docker logs---查看容器内部的标准控制台输出的日志
  • 9. docker top---查看容器内进程
  • 10. docker insepect---查看容器信息
  • 11. docker exec和docker attch
  • 12. docker cp---容器和宿主机之间的文件拷贝
  • 13. docker export---将容器的内容导出成一个tar归档文件【对应import】
  • 14. docker import---从tar归档文件创建一个新的文件系统再导入为镜像【对应export】
  • 15. docker stats---查看容器的cpu、内存使用情况
  • 16. 其它命令

1. docker run—初始化运行一个容器,并退出容器

语法如下:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
[root@docker ~]# docker run --name="my-centos" -it centos /bin/bash
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
a1d0c7532777: Pull complete 
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
[root@d2006a693bda /]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 02:41 pts/0    00:00:00 /bin/bash
root         15      1  0 02:43 pts/0    00:00:00 ps -ef
[root@d2006a693bda /]# [root@docker ~]# 
[root@docker ~]#

参数说明:

  • -name: 为容器指定一个名字,默认自动生成一个名字
  • -i: 以交互模型运行容器,通常和-t配合使用
  • -t: 为容器重新分配一个伪输入终端,通常和-i配合使用
  • -d: 后台运行容器并返回容器ID。如果容器内部没有一个一直挂着的前台进程(比如top、tail),则容器启动后会直接退出
  • -P: 大写P, 随机端口映射
  • -p: 小写p, 指定端口映射。一般使用小写p
  • /bin/bash:在容器内执行的命令,使用该shell进行交互式操作。也可以使用bash; 也可以省略
    • 对于centos默认就是bash,且进入容器的目录是根目录
    • 对于redis默认进入的是前台挂起的进程日志页面
    • 如果redis使用bash命令,进入容器的目录是/data目录

小写p端口映射规则如下:

指定参数说明-p hostPort:containerPort端口映射:-p 8080:80-p ip:hostPort:containerPort配置监听地址: -p 10.0.0.100:8080:80-p ip::containerPort随机分配端口:-p 10.0.0.100::80-p hostPort:containerPort:tcp指定协议:-p 8080:80:udp-p 81:80 -p 443:443指定多个

退出容器说明:

  • exit:使用run运行的容器,exit退出,容器直接停止
  • ctrl + p + q: 使用run运行的容器,ctrl + p + q退出,容器不停止
2. docker ps—查看有哪些容器
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED         STATUS                    PORTS     NAMES
d2006a693bda   centos        "/bin/bash"   6 minutes ago   Up 6 minutes                        my-centos
9599602023b5   hello-world   "/hello"      16 hours ago    Exited (0) 16 hours ago             nice_gates
[root@docker ~]#

参数说明:

  • -a: 列出所有容器,包含运行的和退出的
  • -l: 列出最近创建的一个容器
  • -n: 列出最近创建的n个容器
  • -q: 只列出容器ID
3. docker stop—停止容器
[root@docker ~]# docker stop my-centos
my-centos
[root@docker ~]#
4. docker kill—强制停止容器
[root@docker ~]# docker kill d2006a693bda
d2006a693bda
[root@docker ~]#
5. docker start—启动已经停止的容器
[root@docker ~]# docker start d2006a693bda
d2006a693bda
[root@docker ~]#
6. docker restart—重启容器
[root@docker ~]# docker restart d2006a693bda
d2006a693bda
[root@docker ~]#
7. docker rm—删除容器

方式一:

[root@docker ~]# docker rm -f $(docker ps -qa)
d2006a693bda
9599602023b5
[root@docker ~]#

方式二:

[root@docker ~]# docker ps -qa | xargs docker rm -f
bac246f1235e
c65e14ccc6c4
[root@docker ~]#
8. docker logs—查看容器内部的标准控制台输出的日志

这里我们以redis为列进行讲解。我们先以交互式模式运行第一个redis,之后按ctrl + p + q退出

[root@docker ~]# docker run -it redis
Unable to find image 'redis:latest' locally
latest: Pulling from library/redis
a2abf6c4d29d: Pull complete 
c7a4e4382001: Pull complete 
4044b9ba67c9: Pull complete 
c8388a79482f: Pull complete 
413c8bb60be2: Pull complete 
1abfd3011519: Pull complete 
Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Status: Downloaded newer image for redis:latest
1:C 26 Apr 2022 04:48:52.215 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 26 Apr 2022 04:48:52.215 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 26 Apr 2022 04:48:52.215 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1:M 26 Apr 2022 04:48:52.216 * monotonic clock: POSIX clock_gettime
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 6.2.6 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                  
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           https://redis.io       
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

1:M 26 Apr 2022 04:48:52.218 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 26 Apr 2022 04:48:52.218 # Server initialized
1:M 26 Apr 2022 04:48:52.218 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:M 26 Apr 2022 04:48:52.218 * Ready to accept connections
[root@docker ~]#

接着以后台模式运行第二个redis,然后使用docker logs 容器ID查看容器内部标准控制台打印的日志

[root@docker ~]# docker run -d redis
11fba37fbb4d0e8882a0fa644eaca3e710fc4c881c819fe1f733f3d086759393
[root@docker ~]#
[root@docker ~]# docker logs 11fba37fbb4d
1:C 26 Apr 2022 04:50:32.168 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 26 Apr 2022 04:50:32.168 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 26 Apr 2022 04:50:32.168 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1:M 26 Apr 2022 04:50:32.169 * monotonic clock: POSIX clock_gettime
1:M 26 Apr 2022 04:50:32.170 * Running mode=standalone, port=6379.
1:M 26 Apr 2022 04:50:32.170 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 26 Apr 2022 04:50:32.170 # Server initialized
1:M 26 Apr 2022 04:50:32.170 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:M 26 Apr 2022 04:50:32.170 * Ready to accept connections
[root@docker ~]# 

如果使用docker run -it redis bash启动容器,再使用docker logs 容器ID是查看不到日志的,因为对于该容器来说,redis的启动日志并没有通过标准控制台进行输出

9. docker top—查看容器内进程
[root@docker ~]# docker top 86d45d8209ec
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
polkitd             14593               14573               0                   12:59               ?                   00:00:00            redis-server *:6379
[root@docker ~]#
10. docker insepect—查看容器信息
[root@docker ~]# docker inspect b6ee89d23b1f
[
    {
        "Id": "b6ee89d23b1f762603126b8ba53ee8b934c3f002f41193b3a693413064849225",
        "Created": "2022-04-26T05:01:04.532844359Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 14698,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-04-26T05:01:04.758802369Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
        "ResolvConfPath": "/var/lib/docker/containers/b6ee89d23b1f762603126b8ba53ee8b934c3f002f41193b3a693413064849225/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/b6ee89d23b1f762603126b8ba53ee8b934c3f002f41193b3a693413064849225/hostname",
        "HostsPath": "/var/lib/docker/containers/b6ee89d23b1f762603126b8ba53ee8b934c3f002f41193b3a693413064849225/hosts",
        "LogPath": "/var/lib/docker/containers/b6ee89d23b1f762603126b8ba53ee8b934c3f002f41193b3a693413064849225/b6ee89d23b1f762603126b8ba53ee8b934c3f002f41193b3a693413064849225-json.log",
        "Name": "/cool_goldstine",
        "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,
            "CgroupnsMode": "host",
            "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/29e69afc77c1d80c1d986bf1f9447bf391e07881424ab3291a3b5ebbe0c4c532-init/diff:/var/lib/docker/overlay2/03347db72813a597e9cb514cf7c0930087669a19f316a823867a166a38969bf8/diff",
                "MergedDir": "/var/lib/docker/overlay2/29e69afc77c1d80c1d986bf1f9447bf391e07881424ab3291a3b5ebbe0c4c532/merged",
                "UpperDir": "/var/lib/docker/overlay2/29e69afc77c1d80c1d986bf1f9447bf391e07881424ab3291a3b5ebbe0c4c532/diff",
                "WorkDir": "/var/lib/docker/overlay2/29e69afc77c1d80c1d986bf1f9447bf391e07881424ab3291a3b5ebbe0c4c532/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "b6ee89d23b1f",
            "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": "20210915",
                "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": "f6ba5d13cad3d32c5d0b1adb94f40aab8e277bcb5a8448eccbd805d6bfb29c9a",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/f6ba5d13cad3",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "4934990df63f0c636b2be5a6e8671a9c4aef4e73f3e8bf0e3d75b6b4e90b63d1",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.3",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:03",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "3f3f5aea8b21be3aa6f084c852b9f488f1794e2d016ac9e59660720290948bdd",
                    "EndpointID": "4934990df63f0c636b2be5a6e8671a9c4aef4e73f3e8bf0e3d75b6b4e90b63d1",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
]
[root@docker ~]#
11. docker exec和docker attch

docker exec进入容器会启动一个新的进程和终端,使用exit退出不会停止容器 语法如下:

[root@docker ~]# docker exec --help

Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container

Options:
  -d, --detach               Detached mode: run command in the background
      --detach-keys string   Override the key sequence for detaching a container
  -e, --env list             Set environment variables
      --env-file list        Read in a file of environment variables
  -i, --interactive          Keep STDIN open even if not attached
      --privileged           Give extended privileges to the command
  -t, --tty                  Allocate a pseudo-TTY
  -u, --user string          Username or UID (format: [:])
  -w, --workdir string       Working directory inside the container
[root@docker ~]# 
  • -d: 后台的方式运行一个命令

使用如下:

[root@docker ~]# docker exec -it 37b8b4b5cf95 redis-cli
127.0.0.1:6379> exit
[root@docker ~]#

如果是docker run -it redis bash运行的redis是连接不上的

docker attach 容器ID进入redis容器不会启动新的进程

  • 如果是docker run -it redis启动的容器,进入的是标准控制台输出的那个页面,但是没有之前的日志。可以使用ctrl + p +q退出。也可以使用ctrl + c强制退出,但是会停止容器。不能使用exit退出
  • 如果是docker run -it redis bash启动的容器,进入的是shell交互式命令行。可以使用ctrl + p + q退出。也可以使用exit退出,但是会停止容器
[root@docker ~]# docker attach f397009bce0c
^C1:signal-handler (1650955094) Received SIGINT scheduling shutdown...
1:M 26 Apr 2022 06:38:14.672 # User requested shutdown...
1:M 26 Apr 2022 06:38:14.672 * Saving the final RDB snapshot before exiting.
1:M 26 Apr 2022 06:38:14.674 * DB saved on disk
1:M 26 Apr 2022 06:38:14.674 # Redis is now ready to exit, bye bye...
[root@docker ~]#
12. docker cp—容器和宿主机之间的文件拷贝

拷贝宿主机的文件到容器

[root@docker ~]# docker cp test.txt b4c453f3dde4:/opt
[root@docker ~]# 

拷贝容器的文件到宿主机

[root@docker ~]# docker cp b4c453f3dde4:/opt/test.txt .
[root@docker ~]#
13. docker export—将容器的内容导出成一个tar归档文件【对应import】
[root@docker ~]# docker export b4c453f3dde4 > my-centos.tar.gz
[root@docker ~]# ls
anaconda-ks.cfg  my-centos.tar.gz
[root@docker ~]# 
14. docker import—从tar归档文件创建一个新的文件系统再导入为镜像【对应export】
[root@docker ~]# cat my-centos.tar.gz | docker import - bulut/my-centos:8.8
sha256:0eacfd2d9f2138284195f5caebdf5447b57c6e6bf5162ea04ff0c0828f512b5b
[root@docker ~]# 
[root@docker ~]# docker images | grep my-centos
bulut/my-centos   8.8       0eacfd2d9f21   11 seconds ago   231MB
[root@docker ~]# 
15. docker stats—查看容器的cpu、内存使用情况
[root@docker ~]# docker stats
CONTAINER ID   NAME                CPU %     MEM USAGE / LIMIT    MEM %     NET I/O     BLOCK I/O     PIDS
6c9481f64359   agitated_brattain   0.00%     1.41MiB / 972.3MiB   0.15%     656B / 0B   0B / 15.4kB   2
16. 其它命令 命令英文描述中文描述buildBuild an image from a Dockerfile通过Dockerfile构建镜像commitCreate a new image from a container changes将容器打包成镜像createCreate a new container创建一个新的容器,同run,但不启动容器diffInspect changes on a container’s filesystem查看docker容器的filesystem变化eventsGet real time events from the server从docker服务获取容器实时事件historyShow the history of an image展示一个镜像的形成历史loadLoad an image from a tar archive从一个tar包中加载一个镜像【对应save】loginRegister or Login to the docker registry server注册或者登陆一个docker镜像服务器logoutLog out from a Docker registry server从当前Docker registry登出portLookup the public-facing port which is NAT-ed to PRIVATE_PORT查看映射端口对应的容器内部源端口pausePause all processes within a container暂停容器pullPull an image or a repository from the docker registry server从docker镜像源服务器拉取指定镜像或者库镜像pushPush an image or a repository to the docker registry server推送指定镜像或者库镜像至docker镜像源服务器saveSave an image to a tar archive保存一个镜像为一个tar包【对应load】tagTag an image into a repository给镜像源中镜像打标签unpauseUnpause a paused container取消暂停容器waitBlock until a container stops, then print its exit code一直等待,指定容器停止,然后打印exit code
关注
打赏
1664501120
查看更多评论
立即登录/注册

微信扫码登录

0.0418s