
# 查看本地镜像
docker images
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx
docker pull nginx:1.24
# 运行容器(最常用模板)
docker run -d \
--name mynginx \
-p 80:80 \
-v /host/path:/container/path \
--restart=always \
nginx
# 停止/启动/重启容器
docker stop 容器名/ID
docker start 容器名/ID
docker restart 容器名/ID
# 删除容器(必须先停)
docker rm 容器名
# 删除镜像
docker rmi 镜像名/ID
# 查看运行中的容器
docker ps
# 查看所有容器(包括停止的)
docker ps -a
# 进入容器交互终端
docker exec -it 容器名 /bin/bash
# 有些镜像用 sh
docker exec -it 容器名 sh
# 查看容器日志
docker logs 容器名
# 实时跟踪日志
docker logs -f 容器名
# 查看最近100行
docker logs --tail=100 容器名
# 端口映射 -p 宿主机:容器
-p 8080:80
目录操作****
# 目录挂载 -v 宿主机:容器
-v /opt/nginx/conf:/etc/nginx/conf.d
卷操作
# 查看卷
docker volume ls
# 创建卷
docker volume create myvol
# 查看卷详情
docker volume inspect myvol
# 卷挂载
docker run -d -v myvol:/data nginx
# 删除卷
docker volume rm myvol
# 清理无用卷
docker volume prune
# 卷存放位置
/var/lib/docker/volumes/卷名/\_data
/var/lib/docker/volumes/myvol/\_data
Docker 自带 3 种网络模式
bridge 桥接模式
-p 映射 才能外部访问host 主机模式
-p,性能最好none 无网络模式
# 创建自定义网络
docker network create 网络名称
docker network create web --subnet=10.10.0.0/16 --gateway=10.10.0.1
# 加入指定网络
docker run --network my-net ...
# 查看所有网络
docker network ls
# 查看网络详情(里面有哪些容器)
docker network inspect bridge
# 容器连接到某个网络
docker network connect my-net 容器名
# 断开网络
docker network disconnect my-net 容器名
# 删除不用的网络
docker network prune
构建命令
docker build -t 名字:标签 -f Dockerfile .
-t:给镜像打标签(名字 + 版本)
-f:指定 Dockerfile 文件
--no-cache:不使用缓存,重新构建
.:构建上下文(当前目录)
Dockerfile 核心指令
FROM 基础镜像,必须第一条
WORKDIR 设定容器内工作目录
COPY / ADD 把文件拷进镜像* COPY:普通复制ADD:可解压、可下载
RUN 构建时执行(装软件、编译)
ENV 设置环境变量
EXPOSE 声明暴露端口(仅声明)
CMD / ENTRYPOINT 容器启动时运行的命令
例:
FROM nginx:alpine
WORKDIR /app
COPY . .
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
docker save -o 文件名.tar 镜像名:标签 # 导出
docker save -o nginx.tar nginx:alpine # 单个镜像
docker save -o images.tar nginx redis mysql # 多镜像
docker load -i 文件名.tar # 导入
# 查看容器资源占用
docker stats
# 查看容器详细信息(IP、挂载、端口)
docker inspect 容器名
# 批量清理停止的容器
docker container prune
# 清理无用镜像
docker image prune
# 一键清理闲置资源
docker system prune
/etc/docker/daemon.json
{
"registry-mirrors": [
"https://xxx.mirror.aliyuncs.com"
],
"insecure-registries": [
"192.168.1.100:5000"
],
"data-root": "/data/docker",
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
registry-mirrors:镜像加速地址
insecure-registries:私有 HTTP 仓库(不安全仓库)
data-root:Docker 数据存放目录(镜像、容器、卷)
log-opts:容器日志切割,防止占满磁盘
storage-driver:存储驱动,默认 overlay2
systemctl daemon-reload
systemctl restart docker
docker info
容器启动就退出
→ 前台进程退出,docker 认为服务结束
→ 解决:确保程序
前台运行
端口映射失败
→ 宿主机端口被占用
→ss -tulnp | grep 端口
挂载后权限异常
→ 宿主机与容器 UID/GID 不一致
→ chmod 或改用户运行
容器访问不了外网
→ DNS 或防火墙问题
→ 重启 docker、检查 firewalld /iptables
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker
docker --version

彻底卸载
systemctl stop docker
systemctl disable docker
yum remove -y docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
rm -rf /etc/docker
rm -rf /run/docker.sock
docker --version