Docker 常规操作指南
1. 安装Docker
Windows环境下的安装流程(简要)
- 通过官网下载:访问Docker官方网站下载适用于Windows系统的Docker Desktop安装包。
- 安装过程:
- 运行下载的安装程序,按照向导进行安装配置。
- 安装完成后启动Docker Desktop应用。
Linux环境下的安装流程(以CentOS 7为例)
- 更新系统并安装必要工具:
sudo yum update -y sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 添加Docker CE仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装Docker CE:
sudo yum makecache fast sudo yum install docker-ce docker-ce-cli containerd.io
- 启动和设置开机启动Docker服务:
sudo systemctl start docker sudo systemctl enable docker
2. 基本操作命令
(1)列出已下载镜像
docker image ls # 或者 docker images
(2)拉取镜像
docker pull <image_name>:<tag>
(3)创建容器
docker run [options] <image_name>:<tag>
例如创建一个名为my_mysql且基于mysql镜像运行的容器,并暴露3306端口:
docker run --name my_mysql -p 3306:3306 -d mysql
(4)启动与停止容器
docker start <container_id_or_name>
docker stop <container_id_or_name>
(5)查看容器运行日志
docker logs <container_id_or_name>
(6)进入容器内部
docker exec -it <container_id_or_name> /bin/bash
(7)删除容器或镜像
docker rm <container_id_or_name>
docker rmi <image_id_or_name>
(8)从Dockerfile生成镜像
# 在包含Dockerfile的目录下执行
docker build -t <image_name>:<tag> .
3. 高级操作及注意事项
- 在Docker Desktop图形界面中也可以直接执行许多常规操作,如打开命令窗口等。
- 确保在运行容器前配置好相关的环境变量、数据卷挂载以及网络模式等参数。
4. 数据卷管理
(1)创建数据卷
docker volume create <volume_name>
(2)查看所有数据卷
docker volume ls
(3)挂载数据卷到容器
docker run -v <volume_name>:/path/in/container <image_name>:<tag>
这里将名为<volume_name>
的数据卷挂载到容器内的 /path/in/container
路径。
(4)删除数据卷
docker volume rm <volume_name>
5. 网络管理
(1)列出所有网络
docker network ls
(2)创建新的网络(例如,创建一个桥接网络)
docker network create --driver bridge my_network
(3)在启动容器时连接到网络
docker run --network=my_network <image_name>:<tag>
(4)从容器中移除网络连接
- 需要先停止容器,然后重新启动并指定新的网络。
(5)删除网络
docker network rm my_network
6. Docker Compose 使用
(1)安装 Docker Compose
# 对于Linux用户(如Ubuntu)
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 对于Windows和Mac用户,直接下载Docker Desktop会自带Compose
(2)编写 Docker Compose YAML 文件
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: postgres:latest
volumes:
- my_postgres_data:/var/lib/postgresql/data
volumes:
my_postgres_data:
(3)使用 Docker Compose 启动项目
docker-compose up -d
通过以上操作,可以对Docker进行基础到高级的管理和配置,包括镜像、容器、数据卷和网络的创建、启动、停止、删除等常规操作,以及使用Docker Compose来部署多容器应用。实际运用时,请根据具体需求调整相关参数与命令。
7. Docker镜像构建优化
(1)使用多阶段构建(Multi-Stage Builds)
在Dockerfile中,可以利用FROM
指令多次指定基础镜像,实现多阶段构建。这样可以将编译环境和运行环境分离,减少最终镜像的大小。
# 第一阶段:构建环境
FROM node:14 AS build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# 第二阶段:生产环境
FROM nginx:alpine
COPY --from=build-stage /app/dist /usr/share/nginx/html
(2)缓存层复用
Docker在构建镜像时会缓存每一层的结果以加速后续构建。因此,在编写Dockerfile时应尽量将改变频率较低的操作放在前面,如安装依赖等,而将经常变动的步骤(如COPY源代码)放在后面。
# 利用缓存
FROM python:3.8-slim AS base
RUN pip install --no-cache-dir -r requirements.txt
# 变动频繁的内容放在后面
COPY . /app
WORKDIR /app
CMD ["python", "app.py"]
(3)清理无用文件
在构建过程中,通过执行RUN
命令清理临时文件、无用包或者不必要的日志文件,以减小最终镜像的体积。
# 清理无用文件
RUN apt-get update && \
apt-get install -y --no-install-recommends <package> && \
rm -rf /var/lib/apt/lists/* && \
apt-get purge -y --auto-remove <package>
8. Docker容器管理进阶
(1)查看容器资源占用情况
docker stats [container_name_or_id]
(2)限制容器资源使用
# 在Dockerfile中设置资源限制
RUN echo "fs.inotify.max_user_watches=524288" | tee -a /etc/sysctl.conf && sysctl -p
# 启动容器时指定资源限制
docker run -it --cpus=".5" --memory="200m" --name my_container <image_name>:<tag>
(3)备份与恢复容器数据
- 备份数据卷:
docker run --rm --volumes-from <container_name> -v $(pwd):/backup busybox tar cvf /backup/backup.tar /path/to/data
- 恢复数据卷:
docker run --rm --volumes-from <new_container_name> -v $(pwd):/backup busybox tar xvf /backup/backup.tar
以上内容涵盖了Docker的一些高级操作,包括如何进行镜像构建优化、容器资源管理以及数据备份与恢复等实践技巧