docker-10分钟

一,基本概念

1,镜像、容器

镜像就是一个模版,容器就是根据这个模版生成的

2,容器和宿主主机的对应关系

2-1,端口

宿主端口:容器端口 这样一一映射 例如:-p 80:80

2-2,挂载卷

在容器删除的时候,容器内所有内容被删除,挂载卷的作用就是持久化存储,当容器删除的时候,宿主主机还存在目录;

例如: -v 宿主机目录:容器目录,这种方式叫做绑定挂载

还有一种方式是命名卷挂载:docker自动在宿主主机创建一个空间目录(命名卷)然后映射到容器目;

先创建命名卷:docker volume create 卷名,(那这个挂载卷在宿主机的真实目录可以这样查看:docker volume inspect 卷名)

然后挂载: -v 卷:容器目录

3,启动参数

docker run -d -p 宿主机端口:容器端口 -v 宿主机目录或者命名卷:容器目录 容器名称

-d 表示在后台运行

-p 表示端口映射

-v 表示挂载卷(绑定挂载)

需要注意的是绑定挂载在启动时 映射的宿主机目录会覆盖映射的容器目目,但是在命名卷挂载在启动时 docker 会将容器目录内容同步到宿主机目录

3-1 关于卷的几个操作:

列出所有命名卷:docker volume list

显示所有没有被任何容器使用的命名卷:docker volume prune -a

删除命名卷:docker volume rm 卷名

4,删除镜像或者容器

删除镜像:docker rmi 镜像名

删除容器:docker rm 容器名

5,几个重要的参数

  1. 查看所有容器:docker ps -a
  2. 查看正在运行的容器:docker ps
  3. 意外停止的会自动重启,但是手动停止的不会自动重启:--restart unless-stoped
  4. 创建并启动容器:docker run 容器名
  5. 起停容器:docker start/stop 容器名
  6. 进入容器环境并执行linux命令:docker exec 容器ID linux命令
  7. 完全进入容器内部环境,接下来所有的操作都是在容器内部:docker exec it 容器ID /bin/sh,但是注意docker容器是一个极简的操作系统,很多工具命令可能都是缺失的,比如你进入到容器后想执行vi,可能就是会报错,你需要自己安装

6,Dockerfile

一个镜像制作的描述文件。Dockerfile文件内容如下:

# 1. 指定基础镜像

FROM ubuntu:22.04

# 2. 设置工作目录

WORKDIR /app

# 4. 复制文件到镜像

COPY . .

# 第一个点表示当前目录 第二个点表示镜像内的当前目录 这里是/app

# 5. 运行命令(安装依赖)

RUN apt-get update && apt-get install -y python3

# 6. 容器启动命令(一个Dockerfile文件只能写一个cmd)

CMD ["python3", "app.py"]

----------------------------------------------------

Dockerfile文件写完后就可以构建镜像 docker build -t 镜像名 [: 版本号] 构建目录(. 表示当前目录)


7,docker compose

docker compose 使用yml文件管理多个容器,里面列出了容器是如何创建的以及如何协同工作的,yml文件可以理解为一个或者多个docker run 命令。

docker compose还可以自定义容器的启动顺序 depends_on:

docker compose up -d 按照当前目录读取 docker-compose.yml 文件,创建+启动+运行执行里面的命令;如果当前目录下不是docker-compose.yml文件而是叫其他的以yml格式的名字,docker compose -f 指定文件名 up -d 这样


2025.12.27夜晚22点

互联网行业信息家