常用参数

1
2
3
4
5
6
7
8
--name:        设置容器名称
--volume: (简写 -v) 设置挂载的目录
--workdir: (简写 -w) 指定容器工作目录
--publish: (简写 -p) 映射端口
--env: (简写 -e) 设置容器环境变量
--hostname: (简写 -h) 设置容器内hostname
--tty: (简写 -t) 分配一个伪终端
--interactive: (简写 -i) 保持容器内的标准输入 (STDIN) 进行交互

命令帮助

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 ☁  ~  docker --help 

Usage: docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Common Commands:
run Create and run a new container from an image
exec Execute a command in a running container
ps List containers
build Build an image from a Dockerfile
pull Download an image from a registry
push Upload an image to a registry
images List images
login Log in to a registry
logout Log out from a registry
search Search Docker Hub for images
version Show the Docker version information
info Display system-wide information

子命令帮助

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 ☁  ~  docker run --help                          

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Create and run a new container from an image

Aliases:
docker container run, docker run

Options:
--add-host list Add a custom host-to-IP mapping (host:ip)
--annotation map Add an annotation to the container (passed through to the OCI runtime) (default map[])
-a, --attach list Attach to STDIN, STDOUT or STDERR
--blkio-weight uint16 Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
--blkio-weight-device list Block IO weight (relative device weight) (default [])
--cap-add list Add Linux capabilities
--cap-drop list Drop Linux capabilities
--cgroup-parent string Optional parent cgroup for the container
--cgroupns string Cgroup namespace to use (host|private)
......

nginx容器示例

1
2
3
4
5
6
7
8
9
echo "111" > /data/nginx/index.html

docker run --name nginx -v /data/nginx/:/usr/share/nginx/html -p 8001:80 -d nginx

--name: 设置容器名称为nginx
-v :将宿主机目录/data/nginx与容器目录/usr/share/nginx/html映射
-p :将容器内80端口映射到宿主机8001端口上
-d : 后台运行
nginx : 使用nginx:latest最新镜像版本,tag为latest,在创建时可省略
1
2
3
4
5
6
7
8
☁  ~  docker ps                                  
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
956d0e3e5f3e nginx "/docker-entrypoint.…" 2 seconds ago Up 1 second 0.0.0.0:8888->80/tcp, :::8888->80/tcp nginx



此时在浏览器或者终端curl访问:
http://宿主机IP:8888 即可看到111的返回内容

常见用法

1.修改正在运行的容器名称

1
docker rename [容器ID] [新的容器名称]

2.更新容器参数

1
docker update --restart=always [容器ID]

3.复制宿主机文件(夹)到容器内

1
2
3
4
5
# docker cp file [容器名称或容器ID]:[容器内目录]
# docker cp -r folder [容器名称或容器ID]:[容器内目录]

# 复制test文件到nginx容器内的/tmp目录
docker cp test nginx:/tmp

4.复制容器内文件(夹)到宿主机

1
2
3
# docker cp [容器名称或容器ID]:[容器内目录文件] [宿主机目录]
# docker cp -r [容器名称或容器ID]:[容器内目录] [宿主机目录]
docker cp nginx:/tmp/test /data/nginx/

5.镜像的导入导出

1
2
3
4
5
6
7
# docker save -o [镜像名称].tar 镜像名称:tag  
# 导出到宿主机/data/目录
docker save -o /data/nginx.tar nginx:latest

# docker load -i [镜像名称].tar
# 导入镜像
docker load -i nginx.tar

6.打包容器成镜像

1
2
3
# docker commmit [容器ID] [镜像名称]:[tag]
# 打包以后可在镜像列表中查看 docker images
docker commit 956d0e3e5f3e mynginx:v1

7.查看日志

1
2
# 查看容器滚动日志 ,可配合grep筛选日志
docker logs -f [容器名称]

8.执行容器内部命令

1
2
☁  ~  docker exec -it nginx bash -c "echo 111"
111

9.[定时任务场景] 容器执行一次就删除

1
2
3
4
5
6
7
8
9
10
11
12
13
docker run --rm -v /etc/hosts:/etc/hosts \
-v /data/www/test/:/app/test \
-w /app/test alpine-python-3.8.10 \
python scripts/test.py


命令详解:
-v /etc/hosts:/etc/hosts # 映射宿主机host到容器内
-v /data/www/test/:/app/test # 代码目录映射
-w /app/test # 指定容器内工作目录
python scripts/test.py # 使用容器内python解释器执行脚本
alpine-python-3.8.10 # 容器使用的镜像
--rm # 在命令执行完以后就删除容器所有信息