一,基本概念
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,几个重要的参数
- 查看所有容器:docker ps -a
- 查看正在运行的容器:docker ps
- 意外停止的会自动重启,但是手动停止的不会自动重启:--restart unless-stoped
- 创建并启动容器:docker run 容器名
- 起停容器:docker start/stop 容器名
- 进入容器环境并执行linux命令:docker exec 容器ID linux命令
- 完全进入容器内部环境,接下来所有的操作都是在容器内部: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点
互联网行业信息家