Docker

1051 字
5 分钟
Docker

实例系统:CentOS7

Docker基础命令#

Terminal window
# 拉取镜像(如官方Nginx镜像)
docker pull nginx
# 运行容器(-d 后台运行,-p 映射端口)
docker run -d -p 80:80 nginx
# 查看运行中的容器
docker ps
# 构建镜像(基于当前目录的Dockerfile)
docker build -t my-app .
# 进入容器内部
docker exec -it <容器ID> /bin/bash

安装docker#

  1. 卸载旧版本(可选,如果之前安装过,建议先清理干净)
Terminal window
sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  1. 安装依赖工具
Terminal window
sudo yum install -y yum-utils
  1. 添加Docker官方仓库(使用清华源)
Terminal window
sudo yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
  1. 安装 Docker 引擎
Terminal window
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 启动 Docker 并设置开机自启动
Terminal window
sudo systemctl start docker
sudo systemctl enable docker
  1. 配置国内镜像加速
Terminal window
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.xuanyuan.me",
"https://docker.m.daocloud.io",
"https://docker.mirrors.ustc.edu.cn/",
"https://hub-mirror.c.163.com/"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
  1. 重启Docker
Terminal window
sudo systemctl daemon-reload
sudo systemctl restart docker

Dockerfile 编写指南#

Dockerfile 是用于定义镜像构建过程的脚本,常用指令如下:

指令用途示例
FROM指定基础镜像FROM node:18-alpine
WORKDIR设置工作目录WORKDIR /app
COPY复制文件到镜像COPY . .
RUN在构建时执行命令RUN npm install
EXPOSE声明容器运行时监听的端口EXPOSE 3000
ENV设置环境变量ENV NODE_ENV=production
CMD设置容器启动时的默认命令CMD ["node", "server.js"]
ENTRYPOINT设置容器启动入口(可覆盖性不同)ENTRYPOINT ["python", "app.py"]
ARG构建时变量ARG VERSION=1.0
VOLUME创建挂载点VOLUME /data

Node.js 项目示例#

FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

Python 项目示例#

FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["gunicorn", "app:app", "-b", "0.0.0.0:8000"]

多阶段构建示例#

# 第一阶段:编译
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o server .
# 第二阶段:运行(极小镜像)
FROM alpine:3.19
RUN apk --no-cache add ca-certificates
COPY --from=builder /app/server /server
EXPOSE 8080
CMD ["/server"]

Docker Compose 使用指南#

Docker Compose 通过 docker-compose.yml 文件定义和运行多容器应用。

基础示例:Web + 数据库#

version: "3.8"
services:
web:
build: .
ports:
- "3000:3000"
environment:
- DB_HOST=db
- DB_USER=root
- DB_PASSWORD=secret
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: myapp
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306"
volumes:
db_data:

常用 Compose 命令#

命令说明
docker compose up -d后台启动所有服务
docker compose down停止并删除容器和网络
docker compose logs -f实时查看日志
docker compose ps查看服务状态
docker compose exec web bash进入指定容器
docker compose build重新构建镜像
docker compose restart重启所有服务

卸载 docker#

删除安装包:

Terminal window
yum remove docker-ce

删除镜像、容器、配置文件等内容:

Terminal window
rm -rf /var/lib/docker

常用的 Docker 客户端命令:#

命令功能示例
docker run启动一个新的容器并运行命令docker run -d ubuntu
docker ps列出当前正在运行的容器docker ps
docker ps -a列出所有容器(包括已停止的容器)docker ps -a
docker build使用 Dockerfile 构建镜像docker build -t my-image .
docker images列出本地存储的所有镜像docker images
docker pull从 Docker 仓库拉取镜像docker pull ubuntu
docker push将镜像推送到 Docker 仓库docker push my-image
docker exec在运行的容器中执行命令docker exec -it container_name bash
docker stop停止一个或多个容器docker stop container_name
docker start启动已停止的容器docker start container_name
docker restart重启一个容器docker restart container_name
docker rm删除一个或多个容器docker rm container_name
docker rmi删除一个或多个镜像docker rmi my-image
docker logs查看容器的日志docker logs container_name
docker inspect获取容器或镜像的详细信息docker inspect container_name
docker exec -it进入容器的交互式终端docker exec -it container_name /bin/bash
docker network ls列出所有 Docker 网络docker network ls
docker volume ls列出所有 Docker 卷docker volume ls
docker-compose up启动多容器应用(从 docker-compose.yml 文件)docker-compose up
docker-compose down停止并删除由 docker-compose 启动的容器、网络等docker-compose down
docker info显示 Docker 系统的详细信息docker info
docker version显示 Docker 客户端和守护进程的版本信息docker version
docker stats显示容器的实时资源使用情况docker stats
docker login登录 Docker 仓库docker login
docker logout登出 Docker 仓库docker logout

常用选项说明:

  • -d:后台运行容器,例如 docker run -d ubuntu
  • -it:以交互式终端运行容器,例如 docker exec -it container_name bash
  • -t:为镜像指定标签,例如 docker build -t my-image .

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Docker
https://binghen.cn/posts/docker/
作者
冰痕
发布于
2026-04-20
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
冰痕
这个人很懒什么都没有留下······
公告
欢迎来到我的博客!
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
13
分类
7
标签
16
总字数
43,207
运行时长
0
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.12.1
文章许可
CC BY-NC-SA 4.0

文章目录