核心概念
- 镜像: 容器的模板 (模具)
- 容器: 镜像的实例 (糕点)
- 镜像仓库: 存储镜像的中心仓库 (模具库)
相关命令行
1 | docker --version # 查看docker 版本 安装成功 |
dockerfile

dockerfile 是一个文件,用于描述如何构建一个镜像
制作镜像步骤
实际脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18docker_test/main.py
# 启动一个fastapi服务,默认端口为8000
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
docker_test/requirements.txt
fastapi
uvicorn创建Dockerfile
1 | docker_test/Dockerfile |
- 构建镜像
1 | docker build -t docker_test . # 在docker_test 目录下,构建镜像,镜像名称为docker_test |
- 查找使用
在https://hub.docker.com/ 查找yoohannah/docker_test
1 | docker pull yoohannah/docker_test |
其他人即可以使用刚刚创建的镜像
docker 网络
默认bridge ,桥接模式
容器内部有容器网络,容器可以根据分配的IP 地址进行通信
容器网络和宿主机网路隔离
1 | docker network create network1 # 创建一个子网network1, 属于bridge 模式一种 |
可以指定容器加入不同子网,
在不同子网的容器之间不能直接通信,
在相同子网的容器之间可以相互通信,docker 子网内部有一个dns机制,可以把名字转成IP地址
因此,同一个子网的容器,可以直接使用容器名字互相访问,而不必使用IP地址
1 | docker run -d --name docker_test --network network1 docker_test |
host 模式
docker 容器直接共享宿主机的网络
容器直接使用宿主机的IP地址,无-p 映射端口,容器服务直接运行在宿主机的端口上
通过宿主机的IP地址和端口,可以直接访问到容器的服务
mac 需要开启设置
开启路径是:Settings → Resources → Network → Enable host networking。1
2
3
4
5
6
7docker run -d --network host nginx
# 进入容器内部 产看ip 信息
docker exec -it ae2a9a90a075 /bin/sh
apt-get update
apt-get install iproute2 -y
ip addr show# 查看容器内ip 信息
直接用宿主机的IP地址和端口,可以直接访问到容器的服务1
http://127.0.0.1:80
none 模式
容器不联网
查看docker 网络
1 | docker network list # 展示所有docker网络 |
docker compose
容器编排技术
使用yml文件管理多个容器,里面列出了容器之间是如何创建以及如何协同工作的
docker compose 文件可以被理解成一个多个docker run 命令 按照特定格式列到了一个文件中
docker 为每一个 compose 文件会自动创建子网,同一个 compose 文件中定义的所有容器自动加入同一个子网,所以在文件中不用二外写入网络创建和指定子网
compose 文件 可以自定义容器启动顺序

1 | # 当前目录下有docker-compose.yaml 文件 |