Docker常见用法
Published in:2024-01-16 | category: 兴趣 工具

Docker 常见用法

安装 Docker

在不同的操作系统上安装 Docker 的方法会有所不同。在大多数 Linux 发行版中,Docker 可以通过包管理器安装。

1
2
3
4
5
6
7
8
9
10
11
12
# Ubuntu/Debian  
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# CentOS
sudo yum install docker-ce docker-ce-cli containerd.io

# 设置 Docker 开机自启动
sudo systemctl enable docker

# 启动 Docker 服务
sudo systemctl start docker

运行容器

1
2
3
4
5
6
7
8
# 从 Docker Hub 拉取一个镜像并运行一个容器  
docker run hello-world

# 运行一个交互式的容器(例如,Ubuntu)
docker run -it ubuntu /bin/bash

# 在后台运行一个容器,并设置重启策略
docker run -d --restart=always nginx

容器管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 列出所有正在运行的容器  
docker ps

# 列出所有容器,包括停止的
docker ps -a

# 停止一个运行中的容器
docker stop container_name_or_id

# 启动一个已经停止的容器
docker start container_name_or_id

# 重启一个容器
docker restart container_name_or_id

# 删除一个停止的容器
docker rm container_name_or_id

# 强制删除一个运行中的容器
docker rm -f container_name_or_id

镜像管理

1
2
3
4
5
6
7
8
9
10
11
# 列出所有本地镜像  
docker images

# 拉取一个镜像
docker pull image_name

# 删除一个镜像
docker rmi image_name

# 为镜像创建一个新的标签(相当于重命名或复制)
docker tag original_image:tag new_image:tag

与容器交互

1
2
3
4
5
6
7
8
# 进入正在运行的容器  
docker exec -it container_name_or_id /bin/bash

# 拷贝文件从容器到主机
docker cp container_name_or_id:/path/in/container /path/on/host

# 拷贝文件从主机到容器
docker cp /path/on/host container_name_or_id:/path/in/container

网络管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 列出网络  
docker network ls

# 创建一个网络
docker network create my_network

# 将容器连接到网络
docker network connect my_network container_name_or_id

# 断开容器与网络的连接
docker network disconnect my_network container_name_or_id

# 删除网络
docker network rm my_network

数据卷和持久化存储

1
2
3
4
5
6
7
8
9
10
11
# 创建一个数据卷  
docker volume create my_volume

# 使用数据卷运行容器
docker run -d -v my_volume:/path/in/container nginx

# 列出所有数据卷
docker volume ls

# 删除数据卷
docker volume rm my_volume

构建镜像

使用 Dockerfile 定义应用环境,然后使用 docker build 命令来创建镜像。

1
2
3
4
5
# 在 Dockerfile 所在的目录下构建镜像,并给它打上标签  
docker build -t my_image:tag .

# 使用指定的 Dockerfile 构建镜像
docker build -f /path/to/a/Dockerfile -t my_image:tag .

Dockerfile 示例

Dockerfile 是一个文本文件,用于自动化 Docker 镜像的构建过程。它包含了一系列的指令和参数,用于定义镜像的内容和特性。以下是一个简单的 Dockerfile 示例,用于创建一个运行简单 Python 应用的 Docker 镜像。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 使用官方 Python 运行时作为父镜像  
FROM python:3.8-slim

# 设置工作目录
WORKDIR /app

# 将当前目录内容复制到工作目录中
COPY . /app

# 安装 requirements.txt 中指定的所有必需的包
RUN pip install --no-cache-dir -r requirements.txt

# 使端口 80 可供此容器外的环境使用
EXPOSE 80

# 定义环境变量
ENV NAME World

# 在容器启动时运行 app.py
CMD ["python", "app.py"]

构建并运行使用这个 Dockerfile 的镜像:

1
2
3
4
5
# 构建镜像  
docker build -t my_python_app .

# 运行容器
docker run -p 4000:80 my_python_app

推送镜像到 Docker Hub

1
2
3
4
5
# 登录到 Docker Hub  
docker login

# 推送镜像到你的 Docker Hub 仓库
docker push my_username/my_image:tag

Docker Compose

Docker Compose 是一个工具,用于定义和运行多容器 Docker 应用。通过一个 YAML 文件来配置应用服务,可以使用一个单独的命令来启动和停止所有服务。

1
2
3
4
5
6
7
8
9
10
# docker-compose.yml 示例  

version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"

使用 Docker Compose 命令:

1
2
3
4
5
6
7
8
9
10
11
# 启动所有服务  
docker-compose up

# 在后台启动所有服务
docker-compose up -d

# 停止所有服务
docker-compose down

# 构建或重新构建服务
docker-compose build
Prev:
Shell命令汇总
Next:
Git常见命令