Docker
Docker
Docker快速入门
用Docker下载应用时 会自动搜索下载镜像(image) 镜像不止包含本身 还包含应用所需的环境 配置 系统函数库 并且Docker会在运行的时候创建一个隔离环境 称为容器(container)
这些镜像都放在了镜像仓库里

命令解读
docker run 创建并运行一个容器 -d是让容器在后台运行
--name mysql 给容器起个名字 必须唯一
-p 3306:3306 设置端口映射 就是让容器内的端口映射到外部主机的端口
-e KEY=VALUE 设置环境变量
mysql 指定运行的镜像的名字
镜像命名规范
一般由两部分组成 [repository]:[tag]
repository是镜像名 tag是版本名 mysql:5.7
不指定tag默认就是latest 自动代表最新版本
Docker基础
常见命令
- docker pull 从镜像仓库拉取到本地仓库
- docker push 从本地推到镜像仓库
- docker build 创建自定义镜像
- docker save 把镜像保存成压缩包
docker save -o nginx.tar nginx:latest - docker load 拷取压缩包到本地镜像仓库
docker load -i nginx.tar -qq是指不输出内容拷取 - docker images 查看本地镜像
- docker rmi 删除本地镜像
- docker run 创建一个容器并启动镜像 不要重复创建容器
- docker stop 停掉一个镜像 注意 所有的镜像是实质都是一个进程 只是停掉了这个进程 容器还在
- docker start 开启一个镜像进程
- docker ps 查看容器内的镜像状态
- docker rm 删除容器内的镜像
- docker exec 进入到容器内部
docker exec -it mysql bash-it是可交互的运行方式 bash是以命令行方式显示 - docker log 查看容器日志
docker log -f nginx持续查看日志
docker数据卷挂载
数据卷(volume)是一个虚拟目录 是容器内目录和宿主机目录之间的桥梁

数据卷就是一个逻辑上的文件 然后创建之后可以跟宿主机也就是虚拟机下的volumes内的文件进行映射 数据卷是逻辑虚拟的 但是虚拟机下的是真实的 然后让容器内的文件和数据卷中的文件进行挂载
也就是相关联 然后docker就会执行双向映射 改动任意一方 都会映射到另一方

挂载
- 执行docker run时 使用-v 数据卷:容器内目录 就可以完成挂载 必须在run命令挂载 如果容器存在 要删掉重新创建
- 创建容器时 数据卷不存在会自动创建数据卷
本地目录挂载
由容器创建时就自动挂载的卷叫做匿名卷 名字会很长
因此可以做本地挂载
- 本地挂载同样在docker run命令时 加上-v 本地目录:容器内目录 完成本地目录挂载
- 需要注意的是一定要用绝对路径 相对路径会放在volume中当作数据卷
自定义镜像
镜像就是包含了应用程序 程序运行函数库 运行配置的文件包 构建镜像就是把上述文件打包

上述的并不会全部打成一个包 而是会分成一层一层去打包 然后依赖的基础函数库 环境称为基础镜像

Dockerfile
dockerfile就是一个文本文件 包含各种来构建镜像的指令

编好了dockerfile就可以来构建镜像
docker build -t myImage:1.0 .
- -t给镜像起名
- "." 是指定dockerfile所在目录 当前目录就是.
网络
默认情况下 所有容器都是以bridge方式连接到docker的一个虚拟网桥上

但是ip有可能会随着重启或者关机变化 因此就要自定义网络 而加入自定义网络就可以直接通过容器名互相访问

项目部署 DockerCompose
Docker Compose
docker compose通过一个单独的docker-compose.yaml模板文件 来定义一组相关联的应用容器 来实现多个相关联的docker容器快速部署

想要完成部署写好yaml模板之后 docker compose命令格式如下
docker compose [OPTIONS] [COMMAND]

docker compose up -d启动docker compose
docker compose down 关闭docker compose

浙公网安备 33010602011771号