镜像命令
docker images 查看本地主机全部镜像信息
[root@iZ2dklwe9xll8lZ /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 2 months ago 13.3kB
REPOSITORY # 镜像的仓库源
TAG # 镜像的标签
IMAGE ID # 镜像的id
CREATED # 镜像的创建时间
SIZE # 镜像的大小
Options:
-a, --all Show all images (default hides intermediate images)
# 列出全部镜像
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show image IDs
# 只显示镜像的id
docker search 搜索镜像
# 搜索 mysql 镜像
[root@iZ2dklwe9xll8lZ /]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10940 [OK]
...
Options:
-f, --filter filter Filter output based on conditions provided
# 过滤,例如:docker search mysql --filter=STARS=10000
--format string Pretty-print search using a Go template
--limit int Max number of search results (default 25)
--no-trunc Don't truncate output
# 过滤 STARS 小于 10000 的数据
[root@iZ2dklwe9xll8lZ /]# docker search mysql --filter=STARS=10000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10940 [OK]
docker pull 拉取镜像
# 拉取镜像
docker pull mysql:[tag]
[root@iZ2dklwe9xll8lZ /]# docker pull mysql
Using default tag: latest # 不加tag则拉取最后一个版本
latest: Pulling from library/mysql # 分层下载
69692152171a: Pull complete
1651b0be3df3: Pull complete
951da7386bc8: Pull complete
0f86c95aa242: Pull complete
37ba2d8bd4fe: Pull complete
6d278bb05e94: Pull complete
497efbd93a3e: Pull complete
f7fddf10c2c2: Pull complete
16415d159dfb: Pull complete
0e530ffc6b73: Pull complete
b0a4a1a77178: Pull complete
cd90f92aa9ef: Pull complete
Digest: sha256:d50098d7fcb25b1fcb24e2d3247cae3fc55815d64fec640dc395840f8fa80969
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 #版本号不能乱写,不知道就去官网查询一下。
[root@iZ2dklwe9xll8lZ /]# docker pull mysql:5.7
5.7: Pulling from library/mysql
69692152171a: Already exists # 镜像共用,上面已经下载了,这里提示存在就不会在下载了。
1651b0be3df3: Already exists
951da7386bc8: Already exists
0f86c95aa242: Already exists
37ba2d8bd4fe: Already exists
6d278bb05e94: Already exists
497efbd93a3e: Already exists
a023ae82eef5: Pull complete
e76c35f20ee7: Pull complete
e887524d2ef9: Pull complete
ccb65627e1c3: Pull complete
Digest: sha256:a682e3c78fc5bd941e9db080b4796c75f69a28a8cad65677c23f7a9f18ba21fa
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
docker rmi 删除镜像
Options:
-f, --force Force removal of the image
# 全部删除
--no-prune Do not delete untagged parents
# 可以通过镜像源或镜像id进行删除,这里是通过镜像id进行删除的。
[root@iZ2dklwe9xll8lZ /]# docker rmi -f c0cdc95609f1
Untagged: mysql:latest
Untagged: mysql@sha256:d50098d7fcb25b1fcb24e2d3247cae3fc55815d64fec640dc395840f8fa80969
Deleted: sha256:c0cdc95609f1fc1daf2c7cae05ebd6adcf7b5c614b4f424949554a24012e3c09
Deleted: sha256:137bebc5ea278e61127e13cc7312fd83874cd19e392ee87252b532f0162fbd56
Deleted: sha256:7ed0de2ad4e43c97f58fa9e81fba73700167ef9f8a9970685059e0109749a56b
Deleted: sha256:9375660fbff871cd29c86b8643be60e376bfc96e99a3d7e8f93d74cd61500705
Deleted: sha256:d8a47065d005ac34d81017677330ce096eb5562eeb971e2db12b0e200fdb1cb6
Deleted: sha256:ca13c8ad9df5d824d5a259a927eaa6c04a60f022bc2abe8fc7866cf4b2b366f4
# 删除全部的镜像
[root@iZ2dklwe9xll8lZ /]# docker rmi -f $(docker images -aq
Untagged: mysql:5.7
Untagged: mysql@sha256:a682e3c78fc5bd941e9db080b4796c75f69a28a8cad65677c23f7a9f18ba21fa
Deleted: sha256:2c9028880e5814e8923c278d7e2059f9066d56608a21cd3f83a01e3337bacd68
Deleted: sha256:c49c5c776f1bc87cdfff451ef39ce16a1ef45829e10203f4d9a153a6889ec15e
Deleted: sha256:8345316eca77700e62470611446529113579712a787d356e5c8656a41c244aee
Deleted: sha256:8ae51b87111404bd3e3bde4115ea2fe3fd2bb2cf67158460423c361a24df156b
Deleted: sha256:9d5afda6f6dcf8dd59aef5c02099f1d3b3b0c9ae4f2bb7a61627613e8cdfe562
Deleted: sha256:7af1865d5c19316c3dc0829a2ee2b3a744ae756f7fec9c213d3afc5f1f6ed306
Deleted: sha256:f205c8f3c8aaa6376442b34c0c2062738461d37e0aa16ba021cd7e09c67213c2
Deleted: sha256:d690e8a8242cf13cbe98c5b2faffdd0fc7e6c4c13425b5da31de991aa1f89a76
Deleted: sha256:24efeee958e9f3d859fe15540e9296d5aaa6d3eb3b5f5494a2e8370608a4cfaa
Deleted: sha256:654f2ffede3bb536fd62d04c9c7b7826e890828bec92182634e38684959b2498
Deleted: sha256:de478a06eaa676052e665faa0b07d86a007f4b87cf82eb46a258742dc2d32260
Deleted: sha256:02c055ef67f5904019f43a41ea5f099996d8e7633749b6e606c400526b2c4b33
Untagged: hello-world:latest
Untagged: hello-world@sha256:5122f6204b6a3596e048758cabba3c46b1c937a46b5be6225b835d091b90e46c
Deleted: sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726
# 参数讲解:
docker rmi -f $( docker images -aq
docker iamges -aq# 列表全部镜像的id,把结果作为参数传递。
$(...)# 用作与传递参数
# 总结
docker rmi -f 镜像id # 删除一个镜像
docker rmi -f 镜像id 镜像id 镜像id # 删除多个镜像
docker rmi -f $(docker images -aq# 删除全部镜像
容器命令
创建容器的前提条件是必须有镜像,容器是根据镜像来创建的。
新建容器并启动
docker run [可选参数] images
# 常用参数说明
--name="Name" # 容器名称,该名称由自己定义,目的是用于区分容器。
-d # 后台方式运行
-it # 使用交互方式运行,方便进入容器查看内容。
-p(小写) # 指定容器端口 -p 8080:8080
-p # ip:主机端口:容器端口
-p # 主机端口:容器端口(常用)
-p # 容器端口
容器端口 # 指定指定端口
-P(大写) # 随机指定端口
# 运行容器
docker run -d -it centos /bin/bash
docker ps 列出所有运行的容器
# 参数
docker ps # 列出当前正在运行的容器
docker ps -a # 列出全部运行和运行过的容器
docker ps -n # 设置显示数量
docker ps -q # 只显示容器的id
# 列出当前正在运行的容器
[root@iZ2dklwe9xll8lZ /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
402612da63da centos "/bin/bash" 26 seconds ago Up 25 seconds musing_nobel
# 列出全部运行和运行过的容器
[root@iZ2dklwe9xll8lZ /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
402612da63da centos "/bin/bash" 2 minutes ago Up 2 minutes musing_nobel
1e125042a197 centos "/bin/bash -d" 3 minutes ago Exited (2) 3 minutes ago gallant_sutherland
16e572b8f807 centos "-d" 4 minutes ago Created serene_khorana
d177a69aecc6 centos "/bin/bash" 6 minutes ago Exited (0) 5 minutes ago ppppp
a9ba01c48cca centos "/bin/bash" 8 minutes ago Exited (127) 6 minutes ago agitated_fermat
1db137146423 hello-world "/hello" About an hour ago Exited (0) About an hour ago vibrant_thompson
d6605f4aed4a hello-world "/hello" 2 days ago Exited (0) 2 days ago epic_poitras
5902c0b1016b hello-world "/hello" 2 days ago Exited (0) 2 days ago eloquent_goldberg
# 列表全部运行和运行过的容器并只显示一个结果
[root@iZ2dklwe9xll8lZ /]# docker ps -a -n=1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
402612da63da centos "/bin/bash" 6 minutes ago Up 6 minutes musing_nobel
# 列出全部运行和运行过的容器并只显示id
[root@iZ2dklwe9xll8lZ /]# docker ps -aq
402612da63da
1e125042a197
16e572b8f807
d177a69aecc6
a9ba01c48cca
1db137146423
d6605f4aed4a
5902c0b1016b
退出容器
exit # 直接退出容器并退出
Ctrl + P + Q # 容器不停止退出,退出以后容器会继续运行。
删除容器
docker rm 容器id #删除指定容器,无法删除正在运行中的容器,如需强制删除使用 -f,例:docker rm -f 容器id
docker rm -f $(docker ps -aq) # 删除全部容器
# 通过管道删除全部容器
docker ps -a -q|xargs docker rm
容器的启动与停止
# 启动一个未运行的容器
docker start 容器id
# 重启容器
docker restrt 容器id
# 停止容器
docker stop
# 强制停止容器
docker kill
常用其他命令
进入容器
# 开启一个新的进程进入容器
docker exec -it 容器id /bin/bash
# 不会打开新的进程,直接进入到当前容器进程
docker attach 容器id
查看容器日志
docker logs 容器id
Options:
--details Show extra details provided to logs
-f, --follow Follow log output
--since string Show logs since timestamp (e.g.
2013-01-02T13:23:37Z) or relative (e.g. 42m for 42
minutes)
-n, --tail string Number of lines to show from the end of the logs
(default "all")
-t, --timestamps Show timestamps
--until string Show logs before a timestamp (e.g.
2013-01-02T13:23:37Z) or relative (e.g. 42m for 42
minutes)
# 查看最近10日志
docker logs -t -f -n 10 容器id
-t 显示时间长
-f 实时输出
-n 显示条数
查看容器进程
docker top 容器id
# 输出信息
UID PID PPID C STIME TTY
TIME CMD
root 3198 3171 0 15:05 ?
00:00:00 /bin/sh -c while true;do echo ...; sleep 1;done
root 3355 3198 0 15:07 ?
00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
UID # 执行用户
PID # 进程ID
PPID # 父进程ID
C # 命令
查看容器信息
docker inspect 容器id
[
{
"Id": "a7287e4fa845c5c083785825f5b28239d0d6a6aeb6fa070b732c7da655fd2943", // 容器id
"Created": "2021-06-05T14:58:35.6733124Z",
"Path": "/bin/sh", //控制台
"Args": [ // 当前执行的参数
"-c",
"while true;do echo ...; sleep 1;done"
],
"State": {
"Status": "running", // 运行状态
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 3569, // 进程id
"ExitCode": 0,
"Error": "",
"StartedAt": "2021-06-05T15:09:53.9363926Z",
"FinishedAt": "2021-06-05T15:09:49.8179335Z"
},
"Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55", // 镜像id
"ResolvConfPath": "/var/lib/docker/containers/a7287e4fa845c5c083785825f5b28239d0d6a6aeb6fa070b732c7da655fd2943/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/a7287e4fa845c5c083785825f5b28239d0d6a6aeb6fa070b732c7da655fd2943/hostname",
"HostsPath": "/var/lib/docker/containers/a7287e4fa845c5c083785825f5b28239d0d6a6aeb6fa070b732c7da655fd2943/hosts",
"LogPath": "/var/lib/docker/containers/a7287e4fa845c5c083785825f5b28239d0d6a6aeb6fa070b732c7da655fd2943/a7287e4fa845c5c083785825f5b28239d0d6a6aeb6fa070b732c7da655fd2943-json.log",
"Name": "/hungry_payne",
"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": [
30,
120
],
"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/21c28bef37f1344781a4b9bb58c5386fabdd837f764eaf9a2602179d2d4d4484-init/diff:/var/lib/docker/overlay2/791f65e1368f8cbb9524475a11d5f8f26096cb1138be94e7f51f3d2928d24543/diff",
"MergedDir": "/var/lib/docker/overlay2/21c28bef37f1344781a4b9bb58c5386fabdd837f764eaf9a2602179d2d4d4484/merged",
"UpperDir": "/var/lib/docker/overlay2/21c28bef37f1344781a4b9bb58c5386fabdd837f764eaf9a2602179d2d4d4484/diff",
"WorkDir": "/var/lib/docker/overlay2/21c28bef37f1344781a4b9bb58c5386fabdd837f764eaf9a2602179d2d4d4484/work"
},
"Name": "overlay2"
},
"Mounts": [],
"Config": {
"Hostname": "a7287e4fa845",
"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 ...; sleep 1;done"
],
"Image": "centos",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.label-schema.build-date": "20201204",
"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": "45eb006e27ddfefccfef176c0e1494475439fe17a260ab07c22d2104c2a4e307",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/45eb006e27dd",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "2b9f689ea061b0a6da2cf39a4951e9e2f45746c4094617551d7fd8bfee5ad8c0",
"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": "6a941e3b17b42fd8812ec525ba08c88f06e2206bcc8c30fe0e2e08ae419f9ed0",
"EndpointID": "2b9f689ea061b0a6da2cf39a4951e9e2f45746c4094617551d7fd8bfee5ad8c0",
"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
}
}
}
}
]
从容器中复制文件到主机
# 小提示: 就算容器未运行也能执行cp命令,因为容器文件是存在的。
docker cp 容器id:容器文件路径 主机文件路径
示例
docker cp 57f240fb1f74:/home/admin/index.html c:/home/admin
# 注:我这里是使用的windows系统
# 把文件复制到了c:/home/admin目录下面,因为没输入文件名所以默认就算复制的文件名,也可以输入文件名
docker cp 57f240fb1f74:/home/admin/index.html c:/home/admin/new.html
从主机中复制文件到容器
docker cp 主机文件路径 容器id:容器文件路径
示例
docker cp C:\home\admin\inde.hml 57f240fb1f74:/home/admin/