Docker 基础

Updated on with 0 views and 0 comments

Docker 基础

image.png

一、 基础生命周期命令

# 查看本地镜像
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(默认)
  • host
  • none

bridge 桥接模式

  • 容器有独立 独立 IP
  • 通过 docker 网桥上互联网
  • 端口需要 -p 映射 才能外部访问
  • 同一 bridge 下容器可通过 容器名 / IP 互相访问

host 主机模式

  • 容器共享宿主机网络
  • 没有独立 IP,直接用宿主机 IP 和端口
  • 不用 -p,性能最好
  • 缺点:端口冲突风险大

none 无网络模式

  • 完全隔离,没有网卡、没有 IP
  • 不能联网,也不能互相访问
  • 用于极高安全要求场景
# 创建自定义网络
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

七、配置管理(daemon.json)

Docker 配置文件

/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 常见排错

容器启动就退出

→ 前台进程退出,docker 认为服务结束

→ 解决:确保程序

前台运行

端口映射失败

→ 宿主机端口被占用

ss -tulnp | grep 端口

挂载后权限异常

→ 宿主机与容器 UID/GID 不一致

→ chmod 或改用户运行

容器访问不了外网

→ DNS 或防火墙问题

→ 重启 docker、检查 firewalld /iptables

九、 Docker 安装

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

image.png

彻底卸载

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

标题:Docker 基础
作者:zhongts
地址:http://zhongts.cc:8080/articles/2026/04/05/1775382578862.html