安装
注定位置:
start /w "" "Docker Desktop Installer.exe" install --installation-dir=D:\Docker
镜像
下载
docker pull docer.io/library/nginx:latest
-
docer.io:registry:docker仓库地址注册表地址。官方仓库可省略仓库地址
-
library:namespace:命名空间。library官方仓库命名空间,官方命名空间可省略
-
latest:tag:标签(版本号)。latest最新,最新版本可省略
-
docer.io/library/nginx:repository:镜像库。存放一个镜像的不同版本
参数
--platform=:下载特定CPU架构镜像
-
linux/amd64
-
linux/arm64
-
linux/arm/v7
镜像站
修改配置文件并重启:/etc/docker/daemon.json
{
"registry-mirrors": [
]
}
管理
-
docker images:查看已下载镜像
-
docker rmi 镜像名或id:删除镜像
运行
-
dokcer run 镜像名或id:使用镜像创建容器
-
docker ps 查看正在运行的容器
-
-a:查看全部包括运行与停止的
-
docker rm id:删除容器
-
-f或--force:强制删除
运行docker run时如果docker发现没有对应容器会自动拉取
参数
docker run
-
-d:detached mode,分离模型,表示后台运行
-
-p:port,宿主机端口:容器端口:端口映射:创建与宿主机的网络映射
-
-v:volume,宿主机目录:容器目录:挂载卷映射:数据持久化保存到宿主机
-
-e:environment,传递环境变量
-
--name:定义名字:必须是唯一的
-
-it:可以让控制台进入容器来交互
-
--rm:容器停止时就删除容器
-
--restart:配置容器停止时的重启策略
-
--restart always:容器停止时就重启
-
--restart unless-stopped:除手动停止外均重启
-
--network 子网名字:加入子网
-
--network host:以host模式启动容器
端口映射
每个容器都运行在一个独立的虚拟环境里,默认情况下与宿主机的网络是隔离的,通过创建端口映射,可以从外部网络访问到容器内(比如从浏览器访问容器的nginx)
挂载映射
命名卷挂载:可创建挂载卷名字,挂载时使用卷名字代替宿主机目录
挂载
-
docker volume create 卷名字:创建命名卷
-
dokcer volume inspect 卷名字:查看命名卷相关信息(实际挂载目录)
-
docker volume list:列举命名卷
-
docker volume rm 卷名字:删除命名卷
-
docker volume prune -a:删除所有没有任何容器正在使用的卷
命名卷创建时,docker会把挂载的容器目录下的文件同步到挂载卷下初始化,绑定挂载没有
启停
-
docker stop 容器id或名字:停止容器
-
docker start 容器id或名字:启动容器
-
docker inspect 容器id或名字:启动时的配置
-
docker create 镜像名或id:只创建容器而不启动
-
docker logs 容器id或名字:查看容器日志
-
-f或--follow:滚动查看日志
交互
-
docker exec 容器id或名字 linux命令:进入容器并执行linux命令
-
docker exec -it 容器id或名字 /bin/sh(或/bin/bash):进入容器并获得交互式环境
构建
- docker build -t 镜像名称:版本号 . :版本号可省略,.表示在当前目录下构建
Dockerfile
-
选择镜像:FROM 镜像名:版本:需要构建的镜像从哪个镜像基础上构建而来
-
工作空间:WORKDIR:切换到镜像内的目录作为工作目录,作为所有命令的执行位置(作用像cd)
-
文件拷贝:COPY 需要拷贝的文件目录 工作目录:COPY . . :拷贝当前目录文件到工作目录下
-
命令执行:RUN:在镜像内执行其他命令,比如安装依赖等
-
声明端口:EXPOSE 端口:声明镜像服务端口(仅作提示,实际使用以docker run -p为准)
-
默认启动:CMD或ENTRYPOINT ["", "", ...]:容器运行时的默认启动命令,写成数组格式,中间不要有空格
构建python
FROM python:3.13-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["python3","main.py"]
网络
docker网络默认是桥接模式,所有容器默认都连接到同一个网络,可互相访问,主机隔离
-
docker network create 子网名称:创建子网,纳入该子网下的容器可直接通过容器名称互相访问而不用IP,子网与子网之间网络隔离
-
docker network list:列出所有容器使用的网络模式
-
docker network rm:删除自定义子网
通过host模式启动容器,容器直接使用宿主机的IP,而且无需-p进行端口映射
编排
通过yml文件:docker-compose.yml管理多个docker容器,同时docker-compose会自动创建子网并将所有容器纳入同一个子网下
services:
容器名1:
image: 镜像
environment: 环境变量
volumes: 挂载映射
ports: 端口映射
容器名2:
depends_on: 定义容器启动顺序
- 容器名1
-
docker compose up:通过docker-compose.yml启动编排容器,如果容器已经在运行重复执行命令没有效果
-
-d:后台运行
-
-f:file,指定名称不叫docker-compose.yml的非标准配置文件
-
docker compose down:停止并删除容器
-
docker compose stop:停止容器
-
docker compose start:启动容器