sudo yum update -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
docker image ls # 或者 docker images
docker pull <image_name>:<tag>
docker run [options] <image_name>:<tag>
例如创建一个名为my_mysql且基于mysql镜像运行的容器,并暴露3306端口:
docker run --name my_mysql -p 3306:3306 -d mysql
docker start <container_id_or_name>
docker stop <container_id_or_name>
docker logs <container_id_or_name>
docker exec -it <container_id_or_name> /bin/bash
docker rm <container_id_or_name>
docker rmi <image_id_or_name>
# 在包含Dockerfile的目录下执行
docker build -t <image_name>:<tag> .
docker volume create <volume_name>
docker volume ls
docker run -v <volume_name>:/path/in/container <image_name>:<tag>
这里将名为<volume_name>
的数据卷挂载到容器内的 /path/in/container
路径。
docker volume rm <volume_name>
docker network ls
docker network create --driver bridge my_network
docker run --network=my_network <image_name>:<tag>
docker network rm my_network
# 对于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
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:
docker-compose up -d
通过以上操作,可以对Docker进行基础到高级的管理和配置,包括镜像、容器、数据卷和网络的创建、启动、停止、删除等常规操作,以及使用Docker Compose来部署多容器应用。实际运用时,请根据具体需求调整相关参数与命令。
在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
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"]
在构建过程中,通过执行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>
docker stats [container_name_or_id]
# 在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>
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的一些高级操作,包括如何进行镜像构建优化、容器资源管理以及数据备份与恢复等实践技巧