Docker
容器网络类型4种:
桥接网络
host网络
自定义网络
macvlan网络
**▶ docker的核心概念**
**• 镜像(Image)**
镜像是docker的“安装包”,里面包含了一个完整应用环境
**• 容器(Container)**
容器是镜像的“运行实例”,就像你双击安装包后打开的程序
每个容器都是独立运行的,互不干扰
**• 仓库(Registry)**
仓库类似“应用商店”,可以从这里拉取别人做好的镜像
你也可以上传自己的镜像,方便别人使用
**• Dockerfile**
它是一个文本文件,里面写了怎么一步一步构建镜像,类似一个“菜谱”,docker会根据这个“菜谱”自动打包成镜像
**• 卷(Volume)**
容器的U盘,容器本身是临时的,关了之后数据就没了
卷 可以让数据持久化保存,即使容器删除了,数据还在。(就像把文件存到U盘里,电脑坏了文件还在)
**• 网络(Network)**
默认情况下,容器之间是隔离的,但可以通过网络让他们互相通信
**▶ Docker镜像的操作**
**• 增:**
▪ 从远程仓库拉取镜像(最常用):
docker pull 镜像名:标签
▪ 使用Dockerfile构建镜像:
1.编写Dockerfile
2.构建镜像:
docker build -t 镜像名:标签 构建路径
-t:指定镜像名和标签
--no-cache:不适用缓存
--build-arg:构建函数
构建路径:构建上下文路径(你允许docker看到的素材文件夹)
例:docker引擎=厨房厨师
dockerfile=菜谱
构建上下文文件夹=厨师能拿到食材的篮子
**• 删:**
▪ 删除指定镜像:
docker rmi 镜像名:标签
▪ 根据镜像ID删除:
docker rmi 镜像ID
▪ 强制删除(镜像被容器使用时):
docker rmi -f 镜像名:标签
▪ 删除多个镜像:
docker rmi 镜像名1 镜像名2 镜像名3
▪ 删除悬空镜像(无标签的镜像):
# 查看悬空镜像:
docker images -f dangling=true
# 删除悬空镜像
docker image prune
▪ 删除所有未使用的镜像(包含悬空):
docker image prune -a
▪ 删除所有镜像(慎用):
docker rmi -f $(docker images -q)
**• 改:**
▪ 通过Dockerfile修改(推荐):
1.修改Dockerfile
2.重新构建镜像
▪ 修改镜像名、标签:
docker tag 原镜像名:标签 新镜像名:新标签
▪ 推送修改后的镜像到仓库:
docker push 镜像名:标签
**• 查:**
▪ 查看本地所有镜像:
docker images
docker images ls
▪ 查看指定镜像详细信息:
docker inspect 镜像名:标签
▪ 查看镜像历史(分层构建记录):
docker history 镜像名:标签
▪ 搜索镜像(远程仓库):
docker search 关键字
▪ 查看镜像占用空间:
docker system df
**▶ Docker容器的操作**
**• 增:**
▪ 创建并运行容器
docker run [选项] 镜像名 [命令]
常用选项:
-d:后台运行
-it:交互式(分配终端)
-p:宿主机端口:容器端口 端口映射
-v:宿主机目录:容器目录 挂载卷
--name:容器名
--restart:重启策略
-e:环境变量
▪ 创建并进入容器(交互式):
docker -run -it --name nginx nginx:v1 bash
▪ 仅创建不启动容器:
docker create --name nginx nginx:v1
▪ 使用环境变量:
docker -run -d -e MYSQL_ROOT_PASSWORD=Aa123qwe --name mysql mysql:8.0
▪ 挂载数据卷:
docker -run -d -v /data/nginx:/usr/share/nginx/html -p 80:80 --name mynginx nginx:v1
查看数据卷:
docker volume ls
删除数据卷:
docker volume rm 卷名
**• 删:**
▪ 删除停止的容器:
docker rm 容器ID或名称
▪ 强制删除正在运行的容器:
docker rm -f 容器ID或名称
▪ 删除所有已停止的容器:
docker container prune
▪ 退出容器(不删除):
exit或ctrl+D
▪ 停止容器(不删除):
docker stop 容器ID或名称
▪ 启动已停止的容器:
docker start 容器ID或名称
▪ 重启容器:
docker restart 容器ID或名称
**• 改:**
▪ 进入正在运行的容器:
docker exec -it 容器ID或名称 bash
▪ 修改容器名称:
docker rename 旧名称 新名称
▪ 修改容器配置(重启策略等):
docker update [选项] 容器ID或名称
常用选项:
--restart always:设置为开机自启
--memory 512m:设置内存限制
--cpus 1.5:设置CPU限制
▪ 提交容器为新镜像(保存修改):
docker commit 容器ID或名称 新镜像名:标签
▪ 复制文件:
拷贝到容器:
docker cp 本地文件 容器ID:容器路径
拷贝到本地:
docker cp 容器ID:容器路径 本地文件
**• 查:**
▪ 查看正在运行的容器:
docker ps
▪ 查看所有容器(包括已停止的):
docker ps -a
▪ 查看容器详细信息:
docker inspect 容器ID或名称
▪ 查看容器内进程:
docker top 容器ID或名称
▪ 查看容器资源使用情况:
docker stats 容器ID或名称
▪ 查看容器端口映射:
docker port 容器ID或名称
▪ 查看容器日志:
docker logs [容器名或ID]
常用选项:
-f:实时跟踪日志
--tail N:显示最后N行日志
-t:显示时间戳
许可协议:
CC BY 4.0