Docker使用记录
Docker操作速查与踩坑记录
Docker使用记录
参考链接
Runoob Docker教程 Docker 中文文档 Docker 官方文档 Docker 命令文档
基础概念
Docker 架构模式: 客户端/服务器模式(C/S),使用远程API来管理和创建Docker容器。
Docker 镜像Images: Docker 镜像是用于创建 Docker 容器的模板。Docker 镜像是一个只读的模板,包含了运行 Docker 容器的必要信息。类比面向对象编程中的类。
Docker 容器Containers: 容器是镜像的运行实例。类比面向对象编程中的实例。
Docker 仓库: Docker 仓库用来保存镜像,可以理解为代码仓库。Docker Hub 是一个默认的公共 Docker 仓库,可以在其中找到大量的 Docker 镜像。
Dockerfile: Dockerfile 是一个文本文件,用来配置镜像的内容。
安装Docker
- Ubuntu
使用官方脚本安装:
1
2
curl -fsSL https://test.docker.com -o test-docker.sh
sudo sh test-docker.sh
常用命令
帮助命令
1
2
3
docker version # 查看版本信息
docker info # 查看系统信息, 包括镜像和容器数量
docker [command] --help # 查看帮助信息
镜像命令
1
2
3
4
5
6
7
8
9
10
docker images # 列出本地所有镜像
docker search <image-name> # 搜索镜像, 例如: docker search ubuntu
docker pull <image-name> # 从仓库拉取镜像(使用默认tag), 例如: docker pull ubuntu 等价于 docker pull ubuntu:latest
docker pull <image-name>:<tag> # 拉取指定Tag的镜像, 例如: docker pull ubuntu:18.04
docker rmi <image-name> # 删除本地镜像
docker rmi -f <image-name> # 强制删除本地镜像
docker rmi <image-name1> <image-name2> # 删除多个本地镜像
docker rmi $(docker images -q) # 删除所有本地镜像
容器命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
docker ps # 列出所有**运行中**的容器
docker ps -a # 列出所有容器
docker ps -l # 列出最近一次运行的容器
docker ps -n 5 # 列出最近5个容器
docker ps -q # 只显示容器ID
docker run [options] <image-name> # 运行一个容器 options具体查阅 docker run --help
[options]:
-d: 后台运行容器
-it: 交互式容器:进入容器查看运行状态
-p: 端口映射 例如-p 8080:80 将容器的80端口映射到主机的8080端口
-v --volume: 挂载目录 例如-v /data:/data 将主机的/data目录挂载到容器的/data目录
--name: 容器名 例如--name="mycontainer"
--rm: 容器退出后自动删除
--network: 指定网络模式 例如--network=host
--restart: 容器退出后自动重启 例如--restart=always
docker run -it [image-name] /bin/bash # 运行容器并进入交互式shell
docker run -d [image-name] /bin/bash -c "while true; do echo hello world; sleep 1; done" # 后台运行容器并执行bash命令
docker rm <container-id> # 删除容器
docker rm -f <container-id> # 强制删除容器
docker rm $(docker ps -a -q) # 删除所有容器
docker cp <src-path> <container-id>:<dest-path> # 从主机拷贝文件到容器
docker cp <container-id>:<src-path> <dest-path> # 从容器拷贝文件到主机
docker start <container-id> # 启动容器
docker stop <container-id> # 停止容器
docker restart <container-id> # 重启容器
docker kill <container-id> # 强制停止容器
docker exec -it <container-id> /bin/bash # 进入容器,启动新的进程
docker attach <container-id> # 进入容器正在运行的进程,不会启动新的进程
exit # 退出容器
Ctrl+P+Q # 退出容器,容器继续运行(挂起,后台运行) 再次进入容器使用docker attach <container-id>
docker logs <container-id> # 查看容器日志
镜像构建
1
2
docker build -t <image-name> <Dockerfile-path> # 从Dockerfile构建镜像
docker build -t <image-name>:<tag> <Dockerfile-path> # 从Dockerfile构建镜像
其它命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
docker logs <container-id> # 查看容器日志
docker top <container-id> # 查看容器进程
docker inspect <container-id> # 查看容器详细信息
docker diff <container-id> # 查看容器文件系统的改动
docker cp <container-id>:<src-path> <dest-path> # 从容器中拷贝文件到主机
docker cp <src-path> <container-id>:<dest-path> # 从主机拷贝文件到容器
docker commit <container-id> <image-name> # 提交容器为新的镜像
docker commit -m="message" -a="author" <container-id> <image-name> # 提交容器为新的镜像
docker tag <image-name> <new-image-name> # 给镜像打标签
docker push <image-name> # 将镜像推送到仓库
docker login # 登录到Docker Hub
docker logout # 退出登录
docker compose <command> # 使用docker-compose命令, 例如: docker-compose up
基础工作流
- 拉取镜像
1
docker pull <image-name> # 从仓库拉取镜像
- 运行容器
1
docker run -it <image-name> /bin/bash # 运行容器并进入交互式shell
容器内操作
- 退出容器
1
exit
- 提交容器为镜像
1
docker commit <container-id> <image-name>
Docker Compose
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
使用
- 使用Dockerfile定义环境
- 使用docker-compose.yml定义服务,包括服务之间的依赖关系
- 运行docker-compose up启动服务
- 运行docker-compose down停止服务
本文由作者按照 CC BY 4.0 进行授权