docker 服务相关指令其实就是 systemctl / services(centos6) 指令
启动 docker 服务
systemctl start docker
停止 docker 服务
systemctl stop docker
重启 docker 服务
systemctl restart docker
查看 docker 服务状态
systemctl statusdocker
开机自启 docker 服务
systemctl enable docker
查看概要信息
docker info
查看帮助文档
docker --help
查看指令帮助文档
docker [commond] --help
docker images

字段说明
REPOSITORY:镜像仓库源
TAG:镜像标签,同一个仓库源中可能有多个标签,相当于版本,若不指定,默认使用 lastest 版
IMAGE ID:镜像 ID
CREATED:镜像创建时间
SIZE:镜像大小
参数说明
docker search image_name

字段说明
NAME:镜像名
DESCRIPTION:镜像描述
STARS:星数,相当于点赞
OFFICIAL:是否是官方镜像
AUTOMATED:是否自动构建
参数说明
--limit n,只查看前 n 个查询结果
docker search redis --limit 3
docker pull image_name
docker pull image_name:TAG
TAG 是镜像的版本号,省略默认使用最新版,即 image_name:lastest
docker system df

字段说明
TYPE:docker 对象类型
TOTAL:总数
ACTIVE:运行数量
SIZE:大小
RECLAIMABVLE:可回收的大小和百分比,正在被使用的无法回收
docker rmi 仓库名 / 镜像 id
可以批量删除,多个仓库名或镜像 id 之间用空格间隔
镜像删除前必须停止由它启动的容器
镜像可以强制删除,需使用参数 -f
参数说明
-f 强制删除
虚悬镜像
虚悬镜像(danglign image) 仓库(REPOSITORY)和标签(TAG)都是
可以使用下面命令删除虚悬镜像
docker rmi $(docker images -q -f dangling=true)
参考 容器的导入
参考 提交新镜像
docker run 镜像名
参数说明
--name
重命名容器
-d ( detach,分离 )
后台(守护式)运行 容器并返回容器 ID
-i ( interactive,交互式的 )
交互式运行容器
-t ( tty )
为容器分配模拟终端
-p ( port )
指定 端口映射
参数格式 主机端口:容器端口
-p 5000:5000
-P
随机端口映射
-v ( volum )
挂载 数据卷
参数格式 主机挂载路径:容器路径
-v /docker_registry:/tmp/registry
通常配合参数以 打开数据卷权限
--privileged=true
docker ps
参数说明
无参数
查看当前正在运行的容器
-a
查看所有容器
-l
查看最近创建的容器
-n
查看最近创建的 n 个容器
-q
查看容器 id
exit
使用 exit 命令退出容器,容器会停止
详情查看 docker 容器的退出机制
docker start 容器 id / 容器名
需要容器已经存在
docker restart 容器 id / 容器名
需要容器已经存在
docker stop 容器 id / 容器名
需要容器已经存在、
docker kill 容器 id / 容器名
需要容器已经存在
docker rm 容器 id / 容器名
参数说明
无参数
删除已存在并且已停止的容器
-f
强制删除容器
示例
删除所有运行的容器
docker rm -f $(docker ps -a -q)
删除所有状态为 exited 的容器
docker rm $(docker ps -qf status=exited)
docker logs 容器 id
docker top 容器 id
docker inspect 容器 id
输出类似
[
{
"Id": "cf426c231d50d2f134323daf91d65b959425751d5c72f08359bfa1211a930b5e",
"Created": "2022-08-09T07:36:23.165295141Z",
"Path": "docker-entrypoint.sh",
"Args": [
"redis-server"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 37511,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-08-09T07:36:23.971877345Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:7614ae9453d1d87e740a2056257a6de7135c84037c367e1fffa92ae922784631",
"ResolvConfPath": "/var/lib/docker/containers/cf426c231d50d2f134323daf91d65b959425751d5c72f08359bfa1211a930b5e/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/cf426c231d50d2f134323daf91d65b959425751d5c72f08359bfa1211a930b5e/hostname",
"HostsPath": "/var/lib/docker/containers/cf426c231d50d2f134323daf91d65b959425751d5c72f08359bfa1211a930b5e/hosts",
"LogPath": "/var/lib/docker/containers/cf426c231d50d2f134323daf91d65b959425751d5c72f08359bfa1211a930b5e/cf426c231d50d2f134323daf91d65b959425751d5c72f08359bfa1211a930b5e-json.log",
"Name": "/intelligent_turing",
"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/bd6044bb08219fb4f973d4bfb4a9d6cfe0d973b6084b326db5eacbbe751bf383-init/diff:/var/lib/docker/overlay2/74e7276324c4944736e8b7afcddf427eeb7baabb370192d23e3187ef46eb073e/diff:/var/lib/docker/overlay2/0139b73183f9009e54c44743e53898fa7cf170d7c1ab31a6c04018f47c6c4e31/diff:/var/lib/docker/overlay2/d268b7e9669ecacaea6c964753f2e2dea4cb181e6d68796ff0b05eb80c9793ec/diff:/var/lib/docker/overlay2/0e5908be525c58ffc9f23c6468ee2ea34a0c3578bbf1409d91e25c3d381a1225/diff:/var/lib/docker/overlay2/1f621f01d512b031485da9d30cbb80423fc92f5b4f4e4475ff1382000f7e95af/diff:/var/lib/docker/overlay2/ef0e10883d6f6fb6afad6010781dde4ef75b0f6997cf30b37cd0468705457b9d/diff",
"MergedDir": "/var/lib/docker/overlay2/bd6044bb08219fb4f973d4bfb4a9d6cfe0d973b6084b326db5eacbbe751bf383/merged",
"UpperDir": "/var/lib/docker/overlay2/bd6044bb08219fb4f973d4bfb4a9d6cfe0d973b6084b326db5eacbbe751bf383/diff",
"WorkDir": "/var/lib/docker/overlay2/bd6044bb08219fb4f973d4bfb4a9d6cfe0d973b6084b326db5eacbbe751bf383/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "volume",
"Name": "b06a421968771e3003bcc414dd1a3efe30b742782d32232f512533b65d6e8ac7",
"Source": "/var/lib/docker/volumes/b06a421968771e3003bcc414dd1a3efe30b742782d32232f512533b65d6e8ac7/_data",
"Destination": "/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "cf426c231d50",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"6379/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOSU_VERSION=1.12",
"REDIS_VERSION=6.2.6",
"REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-6.2.6.tar.gz",
"REDIS_DOWNLOAD_SHA=5b2b8b7a50111ef395bf1c1d5be11e6e167ac018125055daa8b5c2317ae131ab"
],
"Cmd": [
"redis-server"
],
"Image": "redis",
"Volumes": {
"/data": {}
},
"WorkingDir": "/data",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "6f9b8573f20c11c0864d7cd878cca8267c9176ca94b86c1006aadd64e1db582d",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"6379/tcp": null
},
"SandboxKey": "/var/run/docker/netns/6f9b8573f20c",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "b87e27785ed39d7c6f161e0837f9119b9d3f8b7f59cd7471ef3399d3b23036db",
"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": "238a5418d55eff5243394b05575a46f36b1dbeecf201b8b656d13a8646d47667",
"EndpointID": "b87e27785ed39d7c6f161e0837f9119b9d3f8b7f59cd7471ef3399d3b23036db",
"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 容器 id
参数说明
与 docker attache 区别
示例
进入运行中的 ubuntu 容器,并以新的 bash 命令行终端交互
docker exec -it ubuntu /bin/bash
docker attache 容器 id
示例
容器 b7bb2cf0efd5 下根目录的 a 文件,复制到主机根目录
docker cp b7bb2cf0efd5:/a /

docker cp 容器 id:容器内路径 主机目录
docker export 容器 id > 文件名
导出的容器会形成 tar 文件
参数说明
-o
输出字符串,容器导出后输出的文件的路径和名字
可以用 “> 文件名” 代替
不指定时输出到 STDOUT,但可能报
cowardly refusing to save to a terminal. Use the -o flag or redirect
示例
容器 b7bb2cf0efd5 导出为 1123.tar 和 1124.tar
docker export b7bb2cf0efd5 > 1123.tar
docker export -o 1124.tar b7bb2cf0efd5
先读取容器导出的文件,然后交由 docker import 导入
cat tar文件 | docker import - 库名/镜像名:TAG
示例
用 1124.tar 导入镜像
cat 1124.tar| docker import - ubuntu/ubuntu:1.0

参考 提交新镜像
docker commit 容器 ID 新镜像名:新镜像标签
参数说明
示例
基于基本的 ubuntu 安装 vim 并提交新镜像
更新 apt
apt-get update
安装 vim
apt-get -y install vim

docker push 仓库标签
流程和示例
使用公有云仓库
需要先准备公有云仓库,可参考 创建阿里云仓库
可以参考 阿里云仓库相关指令 从目的仓库的基本信息中快速获取指令模板
登录
docker login --username=用户名 仓库
创建仓库标签
docker tag 镜像id registry.cn-hangzhou.aliyuncs.com/命名空间名/仓库名:镜像版本号
推送
docker push 仓库标签
示例

使用私有仓库
需要先准备私有仓库,可参考 创建私有仓库
创建仓库标签
docker tag 镜像:TAG 私有仓库IP:私有仓库端口/仓库名:TAG
推送
docker push 仓库标签
示例

docker pull 仓库标签
流程和示例
使用公有云仓库
需要先具备目的仓库,可参考 创建阿里云仓库
可以参考 阿里云仓库相关指令 从目的仓库的基本信息中快速获取指令模板
登录
docker login --username=用户名 仓库
拉取
docker pull registry.cn-hangzhou.aliyuncs.com/fc-learning/ubuntu:镜像版本号
使用私有仓库
需要先准备私有仓库,可参考 创建私有仓库
拉取
docker pull 私有仓库IP:私有仓库端口/仓库名:TAG