Docker常用命令--2020年7月3日
最近在学docker,cli命令太多了,怕一时间记不清楚,写个随笔记录一下。
就只列出了常用的部分命令,并不是全部的仅供我参考。
Docker_Version-19.03.9
Docker
用法: docker [选项] 命令 [参数]
因为个人习惯,通常一个命令都是下面这种书写顺序。
#docker 命令 选项 参数
可选 可选
命令run
选项(可选) | 参数(可选) | 描述 | 示例 |
---|---|---|---|
无 | 镜像名称 | 运行容器,如果镜像名称不存在,将会自动联网去https://hub.docker.com/ 下载,如果tag不指定则默认为latest | #docker run ubuntu:15.10 |
-d | 无 | 在后台运行容器 | #docker run -d ubuntu:latest /bin/bash |
--name | 容器名称 | 指定启动的容器名称,如果不指定由docker随机词语 | #docker run -d --name one-name ubuntu:latest /bin/bash |
-i | 无 | 交互模式,配合-t一同运行 | #docker run -it ubuntu:latest /bin/bash |
-t | shell路径 | 设置终端,配合-i一同运行 | #docker run -it ubuntu:latest /bin/bash |
-P | 无 | 映射容器端口到主机,主机端口为随机高端口 | #docker run -d -P training/webapp python app.py |
-p | 参数为IP:1-65535端口号,前主机:后容器 | 指定映射的端口 | #docker run -d -p 5001:5000 training/webapp python app.py或者#docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py |
-P -p | 默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp。 | #docker run -d -p 127.0.0.1:5001:5000/udp training/webapp python app.py | |
--network | 网络名称 | 指定容器的网络 | #docker run -dit --network test-net ubuntu /bin/bash |
-h | 主机名 | 指定容器的主机名,缺省值为容器ID | #docker run -it -h host1 ubuntu:latest /bin/bash |
-v | 内外绝对目录 | 映射主机目录volume | #docker run -dit -v my-volume:/mnt/--name test1 -h host1 ubuntu:latest /bin/bash |
每次使用Run运行镜像创建的容器都会另存为一个新的容器,所以run可以理解为是创建容器的意思。
使用docker ps -a查看所有创建过的容器信息。
其他容器操作命令
容器操作:参数为容器ID或者名字
start 启动容器
stop 停止容器
restart 重启容器
stats 实时显示容器的资源占用情况
#docker start test1
\\启动名为test1的容器
其他命令
命令 | 选项 | 描述 | 参数 | 示例 |
---|---|---|---|---|
ps | -a | 列出所有创建的容器,不写选项默认列出正在运行的容器详情 | 无 | #docker ps -a |
exec | 同run | 进入正在运行的容器 | 容器id/name | #docker exec -it test /bin/bash |
export | 无 | 导出容器 | 容器id/name和文件名 | #docker export ubuntu:latest > ubuntu.tar |
import | 无 | 导入容器 | 文件名和容器id/name | #docker import ubuntu.tar ubuntu:restore |
rm | -f | 强制删除容器,不写选项无法删除正在运行的容器 | 容器id/name | #docker rm -f ubuntu:restore |
images | -a | 列出所有镜像,包括隐藏镜像,如果不添加选项则不会显示隐藏镜像。详情 | 无 | #docker images -a |
search | 无 | 从仓库中搜索镜像并列出详情 | 需要搜索的镜像名称 | #docker search httpd |
pull | 无 | 从仓库拉取镜像 | 镜像名称 | #docker pull httpd |
tag | 无 | 设置镜像标签 | 镜像id和要设置的镜像名称 | #docker tag f0f6e8d9e8d1 update/ubuntu:v2 |
rmi | 无 | 删除镜像 | 镜像名称 | #docker rmi httpd |
ps
#docker ps -a
\\列出所有容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
916b99970c5a update/ubuntu "/bin/bash" About an hour ago Exited (0) 31 minutes ago test2
f306fd5e7017 update/ubuntu "/bin/bash" About an hour ago Up 21 minutes test1
...
各列解释
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
---|---|---|---|---|---|---|
容器ID | 镜像名称 | 运行的命令 | 创建时间 | 当前状态 | 端口 | 容器名称 |
search
#docker search httpd
\\搜索镜像
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
httpd The Apache HTTP Server Project 3076 [OK]
centos/httpd-24-centos7 Platform for running Apache httpd 2.4 or bui… 33
centos/httpd 29 [OK]
arm32v7/httpd The Apache HTTP Server Project 9
polinux/httpd-php Apache with PHP in Docker (Supervisor, CentO… 4 [OK]
salim1983hoop/httpd24 Dockerfile running apache config 2 [OK]
publici/httpd httpd:latest 1 [OK]
...
各列解释
NAME | DESCRIPTION | STARS | OFFICIAL | AUTOMATED |
---|---|---|---|---|
作者/镜像名称 | 描述 | 收藏量可以理解为热度 | 官方正式版 | 是否支持自动构建 |
images
#docker images
\\镜像列表
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos8/centos 6.7 fe53dbc7b899 3 hours ago 191MB
update/ubuntu latest f0f6e8d9e8d1 3 hours ago 210MB
httpd latest ccbcea8a6757 3 weeks ago 166MB
hello-world latest bf756fb1ae65 5 months ago 13.3kB
...
各列解释
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
---|---|---|---|---|
仓库 | 标签,常用来标识版本 | 镜像ID | 创建时间 | 大小 |
volume
数据卷相关docker volume comm [value]
command:
- ls 列出所有数据卷
- create 创建数据集[name]参数为数据卷名
- inspect 显示该数据卷详细信息
- prune 清楚所有不再使用的数据卷
- rm 删除数据卷
最佳实践:
- 创建一个共享的数据卷,并挂载到容器中。
创建一个名为my-data的数据卷
docker volume create my-date
查看数据卷详情
#docker inspect my-date
[
{
"CreatedAt": "2020-08-21T14:46:29+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/my-data/_data", \\这里是本机的路径
"Name": "my-data",
"Options": {},
"Scope": "local"
}
]
将他挂载到容器mnt目录中。
#docker run -dit --name volume-test -v my-date:/mnt centos:6.7 bash
#docker exec -it volume-test bash
#df -h
Filesystem Size Used Avail Use% Mounted on
overlay 37G 26G 12G 68% /
tmpfs 64M 0 64M 0% /dev
tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
/dev/mapper/cl-root 37G 26G 12G 68% /mnt \\这里就是数据卷的挂载路径
/dev/mapper/cl-root 37G 26G 12G 68% /etc/resolv.conf
/dev/mapper/cl-root 37G 26G 12G 68% /etc/hostname
/dev/mapper/cl-root 37G 26G 12G 68% /etc/hosts
tmpfs 2.9G 0 2.9G 0% /proc/asound
tmpfs 2.9G 0 2.9G 0% /proc/acpi
tmpfs 64M 0 64M 0% /proc/kcore
tmpfs 64M 0 64M 0% /proc/keys
tmpfs 64M 0 64M 0% /proc/timer_list
tmpfs 64M 0 64M 0% /proc/sched_debug
tmpfs 2.9G 0 2.9G 0% /proc/scsi
tmpfs 2.9G 0 2.9G 0% /sys/firmware
2.使用-v挂载宿主机目录到容器中
docker run -dit --name mount -v /home:/mnt centos:6.7 bash