Docker的常用命令

帮助命令

docker version			#显示docker的版本信息
docker info				#显示docker的版本信息,包括镜像和容器的数量
docker 命令 --help		#帮助命令

镜像命令

docker images 查看镜像
[root@localhost docker]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   9 months ago   13.3kB

#解释
REPOSITORY	镜像的仓库源
TAG			镜像的标签
IMAGE ID	镜像的ID
CREATED		镜像的创建时间
SIZE		镜像的大小

#可选项
-a,	--all			#列出所有镜像
-q,	--quiet			#只显示镜像的id
docker serch 搜索镜像
root@localhost docker]# docker search mysql
NAME                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                          MySQL is a widely used, open-source relation…   12875     [OK]
mariadb                        MariaDB Server is a high performing open sou…   4933      [OK]
percona                        Percona Server is a fork of the MySQL relati…   582       [OK]
phpmyadmin                     phpMyAdmin - A web interface for MySQL and M…   574       [OK]


#可选项,通过收藏来过滤
--filter=STARS=3000		#搜索STARS大于3000
[root@localhost docker]# docker search mysql --filter=STARS=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   12875     [OK]
mariadb   MariaDB Server is a high performing open sou…   4933      [OK]

docker pull 下载镜像

#docker pull 镜像名[:tag]
[root@localhost /]# docker pull mysql		#如果不写tag,默认是latest
Using default tag: latest
latest: Pulling from library/mysql
72a69066d2fe: Pull complete					#分层下载
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

#指定版本下载
[root@localhost /]# 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

image-20220715231449503

docker rmi 删除镜像
[root@localhost /]# docker rmi -f 镜像id			   	  	#删除指定的镜像id
[root@localhost /]# docker rmi -f 镜像id 镜像id				#删除多个镜像
[root@localhost /]# docker rmi -f $(docker images -aq)		#删除全部镜像

容器命令

说明:我们有镜像才可以创建容器,Linux,下载一个centos镜像来测试学习

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

#参数说明
--name="Name"		容器名字	tomcat01 tomcat02,用来区分容器的
-d					后台方式运行
-it					使用交互方式运行,进入容器的查看内容
-p					指定容器的端口 -p 8080:8080
	-p 主机端口:容器端口
	-p 主机端口:容器端口(常用)
	-p 容器端口
	容器端口
-p					随机端口

#测试,启动并进入容器
[root@localhost /]# docker run -it centos /bin/bash
[root@28946746c504 /]#ls		#查看容器内的centos,基础版本
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
#退出容器
[root@28946746c504 /]#exit		
列出所有的运行的容器
#docker ps 命令
		#列出正在运行的容器
-a		#列出正在运行的容器,历史运行过的容器
-n=?	#显示最新创建的容器
-q		#只显示容器的编号

[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
28946746c504   centos         "/bin/bash"   3 minutes ago       Exited (127) About a minute ago             strange_bassi
2d00c700d294   feb5d9fea6a5   "/hello"      About an hour ago   Exited (0) About an hour ago                infallible_newton
467eeaa75c9c   feb5d9fea6a5   "/hello"      About an hour ago   Exited (0) About an hour ago                sleepy_goldwasser
退出容器
exit		#退出容器
Ctrl p q	#容器不停止退出
删除容器
docker rm 容器id					#删除容器id,不能删除正在运行的容器,需要rm -f
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		#强制停止当前容器

其他常用命令

后台启动容器
#命令 docker run -d 镜像名
[root@localhost ~]# docker run -d centos
528e593d373fa7c723b0fba0178cfde9c7dea819405ed1d20a0b3ced9c0ffdfd

#问题docker ps 发现centos停止了

#常见的坑,docker容器使用后台运行,必须要有前台的进程,docker发现没有应用,就会停止
#nginx,容器启动后,发现自己没有提供服务,就会立刻停止,没有程序
查看日志
docker logs -f -t --tail 13 #容器日志

#自己编写shell脚本
[root@localhost ~]# docker run -d centos /bin/sh -c "while true;do echo tqh;sleep 5;done;"
553b48e760a9c818dffe9ecff9639a10e7d23fc86a8e47f7b9b0ac71ed455203
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
553b48e760a9   centos    "/bin/sh -c 'while t…"   3 seconds ago   Up 2 seconds             intelligent_panini

#显示日志参数
-tf		#显示日志
--tail	#日志条数

[root@localhost ~]# docker logs -f -t --tail 10 553b48e760a9
2022-07-16T03:03:01.570196511Z tqh
2022-07-16T03:03:06.572125026Z tqh
2022-07-16T03:03:11.574423814Z tqh
2022-07-16T03:03:16.576667104Z tqh
2022-07-16T03:03:21.578922488Z tqh
2022-07-16T03:03:26.581462208Z tqh
2022-07-16T03:03:31.583857818Z tqh
2022-07-16T03:03:36.586635166Z tqh
2022-07-16T03:03:41.589569893Z tqh
2022-07-16T03:03:46.592217958Z tqh
2022-07-16T03:03:51.594539348Z tqh
停止容器
#命令docker top 容器id
[root@localhost ~]# docker top 139c54bbdb02
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                5710                5691                0                   20:06               ?                   00:00:00            /bin/sh -c while true;do echo tqh;sleep 5;done;
root                5774                5710                0                   20:07               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 5
查看容器源文件
#命令
docker inspect 容器id

#测试
[root@localhost ~]# docker inspect 139c54bbdb02
[
    {
        "Id": "139c54bbdb023cf96ae59ad7da45d9de09543c0ed8b8a7dd11e4b2ab4c43fa7f",
        "Created": "2022-07-16T03:06:22.069864608Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo tqh;sleep 5;done;"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 5710,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-07-16T03:06:22.267798065Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
        "ResolvConfPath": "/var/lib/docker/containers/139c54bbdb023cf96ae59ad7da45d9de09543c0ed8b8a7dd11e4b2ab4c43fa7f/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/139c54bbdb023cf96ae59ad7da45d9de09543c0ed8b8a7dd11e4b2ab4c43fa7f/hostname",
        "HostsPath": "/var/lib/docker/containers/139c54bbdb023cf96ae59ad7da45d9de09543c0ed8b8a7dd11e4b2ab4c43fa7f/hosts",
        "LogPath": "/var/lib/docker/containers/139c54bbdb023cf96ae59ad7da45d9de09543c0ed8b8a7dd11e4b2ab4c43fa7f/139c54bbdb023cf96ae59ad7da45d9de09543c0ed8b8a7dd11e4b2ab4c43fa7f-json.log",
        "Name": "/vigorous_babbage",
        "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/b5b29f6f302d18508341135a8555b9582a7a97b08578db429c6e39fb9eee75f7-init/diff:/var/lib/docker/overlay2/b0c84a98b3cefa7c8a61cc73080cd96ed321e143b65d844d5a5d60607dd75a61/diff",
                "MergedDir": "/var/lib/docker/overlay2/b5b29f6f302d18508341135a8555b9582a7a97b08578db429c6e39fb9eee75f7/merged",
                "UpperDir": "/var/lib/docker/overlay2/b5b29f6f302d18508341135a8555b9582a7a97b08578db429c6e39fb9eee75f7/diff",
                "WorkDir": "/var/lib/docker/overlay2/b5b29f6f302d18508341135a8555b9582a7a97b08578db429c6e39fb9eee75f7/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "139c54bbdb02",
            "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 tqh;sleep 5;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": "42a13f5431e83033947a8b232ef26e4c53ef30cebd20c9b99c66658bddacc163",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/42a13f5431e8",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "41a9c934764214430677e92523b6b219fa982382d09844544e4e5dfa205dd19f",
            "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": "fa6256ae9c0595af3ba30743934b4748a4b47bce2d6886544b80e9908bba4ff6",
                    "EndpointID": "41a9c934764214430677e92523b6b219fa982382d09844544e4e5dfa205dd19f",
                    "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
139c54bbdb02   centos    "/bin/sh -c 'while t…"   5 minutes ago   Up 5 minutes             vigorous_babbage
[root@localhost ~]# docker exec -it 139c54bbdb02 /bin/bash
[root@139c54bbdb02 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@139c54bbdb02 /]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 03:06 ?        00:00:00 /bin/sh -c while true;do echo tqh;sleep 5;done;
root         76      0  0 03:12 pts/0    00:00:00 /bin/bash
root         96      1  0 03:12 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 5
root         97     76  0 03:12 pts/0    00:00:00 ps -ef

#方式二
docker attach 容器id
#测试
[root@localhost ~]# docker attach 139c54bbdb02
正在执行的代码...

#docker exec	#进入容器后开启一个新的终端
#docker attach	#进入正在执行的终端,不会开启新进程
容器拷贝文件到主机上
docker cp 容器id:容器内路径 目的主机

#查看当前主机目录下的文件
[root@localhost home]# ls
tqh  tqh.java

#查看docker运行的容器
[root@localhost home]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
c7e97bb5cee6   centos    "/bin/bash"   2 minutes ago   Up 2 minutes             boring_burnell

#进入docker的容器
[root@localhost home]# docker attach c7e97bb5cee6
[root@c7e97bb5cee6 home]# cd /home/

#容器内新建文件
[root@c7e97bb5cee6 home]# touch test.java
[root@c7e97bb5cee6 home]# ls
test.java
[root@c7e97bb5cee6 home]# exit
exit
[root@localhost home]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost home]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                        PORTS     NAMES
c7e97bb5cee6   centos         "/bin/bash"              4 minutes ago    Exited (0) 5 seconds ago                boring_burnell
139c54bbdb02   centos         "/bin/sh -c 'while t…"   21 minutes ago   Exited (137) 5 minutes ago              vigorous_babbage
553b48e760a9   centos         "/bin/sh -c 'while t…"   25 minutes ago   Exited (137) 23 minutes ago             intelligent_panini
1b9665ad87b8   centos         "/bin/sh -C 'while t…"   26 minutes ago   Exited (127) 26 minutes ago             serene_ganguly
05ba5b7f9bef   centos         "/bin/bash"              31 minutes ago   Exited (127) 27 minutes ago             trusting_elgamal
6609f1e60e8c   centos         "/bin/bash"              32 minutes ago   Exited (0) 32 minutes ago               youthful_ganguly
240a644e12b4   centos         "/bin/bash"              35 minutes ago   Exited (0) 35 minutes ago               xenodochial_mccarthy
f699d05b3118   centos         "-it /bin/bash"          35 minutes ago   Created                                 hopeful_sanderson
528e593d373f   centos         "/bin/bash"              38 minutes ago   Exited (0) 37 minutes ago               sad_banach
28946746c504   centos         "/bin/bash"              12 hours ago     Exited (127) 12 hours ago               strange_bassi
2d00c700d294   feb5d9fea6a5   "/hello"                 13 hours ago     Exited (0) 13 hours ago                 infallible_newton
467eeaa75c9c   feb5d9fea6a5   "/hello"                 13 hours ago     Exited (0) 13 hours ago                 sleepy_goldwasser

#将文件拷贝出来到主机上
[root@localhost home]# docker cp c7e97bb5cee6:/home/test.java /home
[root@localhost home]# ls
test.java  tqh  tqh.java

#拷贝是手动过程,后面使用-v 卷的技术实现,自动同步
posted @ 2022-11-16 10:58  Fanslyx  阅读(67)  评论(0)    收藏  举报