一、快速入门
Docker run命令中的常见参数
- -d:让容器后台运行
- --name:给容器命名(唯一)
- -e:环境变量
- -p:宿主机端口映射到容器内端口
- 镜像名称结构:Repository :TAG(镜像名:版本号)
二、Docker基础
1.常见命令
Docker最常见的命令就是操作镜像,容器的命令
2.数据卷
(1)介绍
数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁,方便我们操作容器内文件,或者方便迁移容器产生的数据
(2)数据卷常见命令
(3)如何挂载数据卷
在创建容器时,使用
docker run -v 数据卷名:容器内目录
完成挂载,在容器创建时,如果发现挂载的数据卷不存在时,会自动创建
(4)本地目录挂载
docker run -v 本地目录:容器内目录
可以完成本地目录挂载,本地目录必须以“ / ”或“ ./ ”开头,如果直接以名称开头,会被识别为数据卷而非本地目录
3.自定义镜像
镜像就是包含了应用程序,程序运行的系统函数库,运行配置等文件的文件包。构建镜像的过程其实就是把上述文件分层打包的过程。
(1)镜像结构
①层(Layer)
添加安装包,依赖,配置等,每次操作都形成新的一层
②基础镜像(BaseImage)
应用依赖的系统函数库,环境,配置,文件等
③入口(Entrypoint)
镜像运行入口,一般是程序启动的脚本和参数
(2)Dockerfile
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来描述要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像,常见指令如下:
示例:
当编写好了Dockerfile,可以利用下面命令来构建镜像:
docker build -t 镜像名 Dockerfile目录 .
其中:
- -t:是给镜像起名,格式依然是repository:tag,不指定tag时,默认为latest
- . :是指定Dockerfile所在目录,如果就在当前目录,则指定为“.”
4.容器网络互连
默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上:
加入自定义网络的容器才可以通过容器名互相访问,Docker的网络操作命令如下:
三、项目部署
1.Docker Compose
Docker Compose通过一个单独的docker-compose.yml模板文件(YAML文件)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署。
示例:
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
networks:
- hm-net
hmall:
build:
context: .
dockerfile: Dockerfile
container_name: hmall
ports:
- "8080:8080"
networks:
- hm-net
depends_on:
- mysql
nginx:
image: nginx
container_name: nginx
ports:
- "18080:18080"
- "18081:18081"
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/usr/share/nginx/html"
depends_on:
- hmall
networks:
- hm-net
networks:
hm-net:
name: hmall