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
| FROM python:3.8-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 80
ENV NAME World
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
| 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
|