Docker命令

110 阅读10分钟

三、Docker 命令

1、帮助命令

docker version #显示docker版本信息
docker info    #显示doker的系统信息,包括镜像和容器命令
docker 命令 --hlep #帮助命令

2、帮助文档

Reference documentation | Docker Docs

3、镜像命令

①docker images #查看所有镜像
#docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    9c7a54a9a43c   4 months ago   13.3kB
#解释
REPOSIRORY  镜像的仓库源
TAG         镜像标签
IMAGE ID    镜像id
CREATED     镜像创建的时间
SIZE        镜像大小
#可选项
-a, --all             Show all images (default hides intermediate images) #显示全部镜像源
-q, --quiet           Only show image IDs #只显示id

②docker search 搜索镜像
#docker search mysql
NAME                            DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
mysql                           MySQL is a widely used, open-source relation14424     [OK]       
mariadb                         MariaDB Server is a high performing open sou5507      [OK]       
percona                         Percona Server is a fork of the MySQL relati619       [OK]       
phpmyadmin                      phpMyAdmin - A web interface for MySQL and M856       [OK]       
bitnami/mysql                   Bitnami MySQL Docker Image                       96                   [OK]

#可选项
Options:
 -f, --filter filter   Filter output based on conditions provided
     --format string   Pretty-print search using a Go template
     --limit int       Max number of search results
     --no-trunc        Don't truncate output
--filter=STARS=3000 #搜索镜像源收藏值大于3000
#docker search mysql  --filter=STARS=3000
NAME      DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation14424     [OK]       
mariadb   MariaDB Server is a high performing open sou5507      [OK] 
③docker pull 下载镜像
#下载镜像 docker pull  镜像名[:tag] 
#docker pull mysql
Using default tag: latest #如果不写tag,默认就是最新版本
72a69066d2fe: Pull complete  #分层下载:docker image的核心 联合文件系统
93619dbc5b36: Pull complete 
99da31dd6142: Pull complete 
626033c43d70: Pull complete 
37d5d7efb64e: Pull complete 
ac563158d721: Pull complete 
d2ba16033dad: Pull complete 
688ba7d5c01a: Pull complete 
00e060b6d11d: Pull complete 
1c04857f594f: Pull complete 
4d7cfa90e6ea: Pull complete 
e0431212d27d: Pull complete 
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址

docker pull mysql 等价于 docker pull docker.io/library/mysql:latest

#指定版本下载
# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Already exists 
93619dbc5b36: Already exists 
99da31dd6142: Already exists 
626033c43d70: Already exists 
37d5d7efb64e: Already exists 
ac563158d721: Already exists 
d2ba16033dad: Already exists 
0ceb82207cd7: Pull complete 
37f2405cae96: Pull complete 
e2482e017e53: Pull complete 
70deed891d42: Pull complete 
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
④docker rmi 删除镜像
# docker rmi -f c20987f18b13  删除单个镜像
Untagged: mysql:5.7
Untagged: mysql@sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Deleted: sha256:c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76
Deleted: sha256:6567396b065ee734fb2dbb80c8923324a778426dfd01969f091f1ab2d52c7989
Deleted: sha256:0910f12649d514b471f1583a16f672ab67e3d29d9833a15dc2df50dd5536e40f
Deleted: sha256:6682af2fb40555c448b84711c7302d0f86fc716bbe9c7dc7dbd739ef9d757150
Deleted: sha256:5c062c3ac20f576d24454e74781511a5f96739f289edaadf2de934d06e910b92

# docker rmi -f $(docker images -aq) #删除全部镜像命令
Untagged: hello-world:latest
Untagged: hello-world@sha256:dcba6daec718f547568c562956fa47e1b03673dd010fe6ee58ca806767031d1c
Deleted: sha256:9c7a54a9a43cca047013b82af109fe963fde787f63f9e016fdc3384500c2823d
Untagged: mysql:latest
Untagged: mysql@sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Deleted: sha256:3218b38490cec8d31976a40b92e09d61377359eab878db49f025e5d464367f3b
Deleted: sha256:aa81ca46575069829fe1b3c654d9e8feb43b4373932159fe2cad1ac13524a2f5
Deleted: sha256:0558823b9fbe967ea6d7174999be3cc9250b3423036370dc1a6888168cbd224d
Deleted: sha256:a46013db1d31231a0e1bac7eeda5ad4786dea0b1773927b45f92ea352a6d7ff9
Deleted: sha256:af161a47bb22852e9e3caf39f1dcd590b64bb8fae54315f9c2e7dc35b025e4e3
Deleted: sha256:feff1495e6982a7e91edc59b96ea74fd80e03674d92c7ec8a502b417268822ff
Deleted: sha256:8805862fcb6ef9deb32d4218e9e6377f35fb351a8be7abafdf1da358b2b287ba
Deleted: sha256:872d2f24c4c64a6795e86958fde075a273c35c82815f0a5025cce41edfef50c7
Deleted: sha256:6fdb3143b79e1be7181d32748dd9d4a845056dfe16ee4c827410e0edef5ad3da
Deleted: sha256:b0527c827c82a8f8f37f706fcb86c420819bb7d707a8de7b664b9ca491c96838
Deleted: sha256:75147f61f29796d6528486d8b1f9fb5d122709ea35620f8ffcea0e0ad2ab0cd0
Deleted: sha256:2938c71ddf01643685879bf182b626f0a53b1356138ef73c40496182e84548aa
Deleted: sha256:ad6b69b549193f81b039a1d478bc896f6e460c77c1849a4374ab95f9a3d2cea2

4、容器命令

说明:有了镜像才可以创建容器,linux,下载一个centos系统镜像测试学习

docker pull centos
① 新建容器并创建启动
docker run [可选参数] image

#参数说明
    --name="Name" #容器名字 区分容器
    -d 后台运行
    -it 交互方式运行,进入容器查看内容
    -p 指定容器端口 
        -p ip:主机端口:容器端口
        -p 主机端口:容器端口 (常用)
        -p 容器端口
        容器端口
    -P 随机指定端口
    
#测试,启动并进入容器
# docker run -it centos /bin/bash
[root@1c808aef7e20 /]# ls 查看容器内的centos,基础版本,很多命令是不完善的
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
#从容器退出到主机
#exit
exit
[root@localhost /]# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
②列出所有运行的容器
[root@localhost /]# docker ps 列出正在运行的容器
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[root@localhost /]# docker ps -a 列出曾经运行的容器
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                     PORTS     NAMES
1c808aef7e20   centos         "/bin/bash"   4 minutes ago   Exited (0) 2 minutes ago             interesting_heyrovsky
95cd6a6b503f   9c7a54a9a43c   "/hello"      2 hours ago     Exited (0) 2 hours ago               zen_benz

-n=  #显示最近创建的容器
-q #只显示容器的编号
  
③退出容器
exit #直接退出并停止
Ctrl + p + q
[root@localhost /]# docker run -it centos /bin/bash
[root@5979a18fe589 /]# [root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
5979a18fe589   centos    "/bin/bash"   35 seconds ago   Up 34 seconds             angry_hermann
④删除容器
docker rm 容器id #删除指定容器 ,不能直接删除正在运行的容器,可以通过删除全部容器去删除
docker rm -f $(docker ps -aq) #删除全部容器
docker ps -a -q|xargs docker rm #删除全部容器
⑤启动和停止容器的操作
docker start 容器id #启动
docker restart 容器id #重启
docker stop 容器id #停止
docker kill 容器id #杀死
⑥常用的其他命令

后台启动命令

[root@localhost /]# docker run -d centos 
f8827323c421352cf56ae70fe86e2d2511ba362605217680eff4f2b483aab163
#问题docker ps 发现centos停止了
#常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
#nginx,容器启动后,会发现,自己没有提供服务就停止了

查看日志

docker logs -f -t --tail 容器
#显示日志
-tf 显示日志
--tail numble #要显示日志条数
#自己编写shell脚本 看日志
[root@localhost /]# docker run -d centos /bin/sh -c "while true;do echo yang;sleep 1;done"
[root@localhost /]# docker logs -f -t --tail 10  93687b37047c 
2023-09-05T13:13:34.918066639Z yang
2023-09-05T13:13:35.920491612Z yang
2023-09-05T13:13:36.922566943Z yang
2023-09-05T13:13:37.924663167Z yang
2023-09-05T13:13:38.927232711Z yang
2023-09-05T13:13:39.929725832Z yang
2023-09-05T13:13:40.932565669Z yang
2023-09-05T13:13:41.935026144Z yang
2023-09-05T13:13:42.938028101Z yang
2023-09-05T13:13:43.941016022Z yang
2023-09-05T13:13:44.943148741Z yang
2023-09-05T13:13:45.945288231Z yang
2023-09-05T13:13:46.947436210Z yang
···

查看docker进程信息

#命令 docker top 容器id
[root@localhost /]# docker top 93687b37047c
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                79029               79011               0                   21:12               ?                   00:00:00            /bin/sh -c while true;do echo yang;sleep 1;done
root                79436               79029               0                   21:17               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

查看镜像的元数据

#docker inspect 容器id
[root@localhost /]# docker inspect 93687b37047c
[
   {
       "Id": "93687b37047cd33eeeab9b15acc6fee104e1ef0b8f90a33b4a1b1719acfdca57",
       "Created": "2023-09-05T13:12:43.147813942Z",
       "Path": "/bin/sh",
       "Args": [
           "-c",
           "while true;do echo yang;sleep 1;done"
       ],
       "State": {
           "Status": "running",
           "Running": true,
           "Paused": false,
           "Restarting": false,
           "OOMKilled": false,
           "Dead": false,
           "Pid": 79029,
           "ExitCode": 0,
           "Error": "",
           "StartedAt": "2023-09-05T13:12:43.704139563Z",
           "FinishedAt": "0001-01-01T00:00:00Z"
       },
       "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
       "ResolvConfPath": "/var/lib/docker/containers/93687b37047cd33eeeab9b15acc6fee104e1ef0b8f90a33b4a1b1719acfdca57/resolv.conf",
       "HostnamePath": "/var/lib/docker/containers/93687b37047cd33eeeab9b15acc6fee104e1ef0b8f90a33b4a1b1719acfdca57/hostname",
       "HostsPath": "/var/lib/docker/containers/93687b37047cd33eeeab9b15acc6fee104e1ef0b8f90a33b4a1b1719acfdca57/hosts",
       "LogPath": "/var/lib/docker/containers/93687b37047cd33eeeab9b15acc6fee104e1ef0b8f90a33b4a1b1719acfdca57/93687b37047cd33eeeab9b15acc6fee104e1ef0b8f90a33b4a1b1719acfdca57-json.log",
       "Name": "/unruffled_bhaskara",
       "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,
           "ConsoleSize": [
               24,
               116
           ],
           "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",
           "Isolation": "",
           "CpuShares": 0,
           "Memory": 0,
           "NanoCpus": 0,
           "CgroupParent": "",
           "BlkioWeight": 0,
           "BlkioWeightDevice": [],
           "BlkioDeviceReadBps": [],
           "BlkioDeviceWriteBps": [],
           "BlkioDeviceReadIOps": [],
           "BlkioDeviceWriteIOps": [],
           "CpuPeriod": 0,
           "CpuQuota": 0,
           "CpuRealtimePeriod": 0,
           "CpuRealtimeRuntime": 0,
           "CpusetCpus": "",
           "CpusetMems": "",
           "Devices": [],
           "DeviceCgroupRules": null,
           "DeviceRequests": null,
           "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/cf7c18307adef077b63b65e9b6cc30987032d69a5bc3fdf7281bc21552f6eb50-init/diff:/var/lib/docker/overlay2/090106f456caf6b4ea482fba7861e704cb805034bde5eae7477fcc397f30279d/diff",
               "MergedDir": "/var/lib/docker/overlay2/cf7c18307adef077b63b65e9b6cc30987032d69a5bc3fdf7281bc21552f6eb50/merged",
               "UpperDir": "/var/lib/docker/overlay2/cf7c18307adef077b63b65e9b6cc30987032d69a5bc3fdf7281bc21552f6eb50/diff",
               "WorkDir": "/var/lib/docker/overlay2/cf7c18307adef077b63b65e9b6cc30987032d69a5bc3fdf7281bc21552f6eb50/work"
           },
           "Name": "overlay2"
       },
       "Mounts": [],
       "Config": {
           "Hostname": "93687b37047c",
           "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 yang;sleep 1;done"
           ],
           "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": "cd9c443ef9a3b26cd75a8cefbdc6df30e5486a0d8e30e75f05fbc14213af07df",
           "HairpinMode": false,
           "LinkLocalIPv6Address": "",
           "LinkLocalIPv6PrefixLen": 0,
           "Ports": {},
           "SandboxKey": "/var/run/docker/netns/cd9c443ef9a3",
           "SecondaryIPAddresses": null,
           "SecondaryIPv6Addresses": null,
           "EndpointID": "380717333bc5e2e4bf1592858633a66399253e91539e10d1477af1514c54b9c2",
           "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": "b9a2d9428291d292b0a99b72f2e1015d5d8ce9164bf2d4f8feb2f88a5111e043",
                   "EndpointID": "380717333bc5e2e4bf1592858633a66399253e91539e10d1477af1514c54b9c2",
                   "Gateway": "172.17.0.1",
                   "IPAddress": "172.17.0.2",
                   "IPPrefixLen": 16,
                   "IPv6Gateway": "",
                   "GlobalIPv6Address": "",
                   "GlobalIPv6PrefixLen": 0,
                   "MacAddress": "02:42:ac:11:00:02",
                   "DriverOpts": null
               }
           }
       }
   }
]

进入当前正在运行的容器

#我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
#命令
docker exec -it 容器id bashshell
#测试
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS     NAMES
93687b37047c   centos    "/bin/sh -c 'while t…"   11 minutes ago   Up 11 minutes             unruffled_bhaskara
[root@localhost /]# docker exec -it 93687b37047c  /bin/bash
[root@93687b37047c /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@93687b37047c /]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 13:12 ?        00:00:00 /bin/sh -c while true;do echo yang;sleep 1;done
root        748      0  0 13:25 pts/0    00:00:00 /bin/bash
root        783      1  0 13:25 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root        784    748  0 13:25 pts/0    00:00:00 ps -ef

#方式二
docker attach 容器id
[root@localhost /]# docker attach  93687b37047c 
#正在执行的代码
yang
yang
yang
yang
yang

# docker exec #进入容器后开启一个新的终端,可以在里面操作
# docker attact #进入容器正在执行的终端,不会启动新的进程

从容器拷贝到主机中

docker cp 容器id:容器内路径 目的的主机路径
[root@localhost home]# docker cp bbe97f897449:/home/test.java /home/
Successfully copied 1.54kB to /home/
[root@localhost home]# ll
总用量 4
-rw-r--r--.  1 root     root        0 9月   5 21:35 test.java
drwx------. 15 yanghang yanghang 4096 9月   5 21:28 yanghang
-rw-r--r--.  1 root     root        0 9月   5 21:34 yang.java

#拷贝是一个手动过程,未来我们可以使用 -v卷使用