docker-compose
容器一键化部署的工具,针对Dockerfile,可以按照定制化的模式一键部署dockerfile创建容器。
[root@docker1 opt]# rz -E rz waiting to receive. [root@docker1 opt]# ls docker-compose-linux-x86_64 [root@docker1 opt]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose[root@docker1 opt]# chmod 777 /usr//local/bin/docker-compose [root@docker1 opt]# docker-compose --version Docker Compose version v2.18.0
定制:yaml配置文件格式
#yaml是一种标记语言,直观的展示数据序列化的格式,可读性高。 #数据格式的结构是通过缩进来进行表示的。 #1、大小写严格区分 #2、通过缩进表示层级关系 #3、不能用tab缩进,不许用空格键缩进 #4、#可以注释 #5、符号后必须缩进一格 #6、特殊字符必须要用单引号,字符串用双引号 #数据结构 name: "wbl" age: 23 isStudent: 'true'/falsea #字符串,整数,布尔类型,也可以是小数点 #列表结构,表示有序的元素的集合,使用-开头 xy102: - wbl - dly - cyp #maps(映射),相当于字典或者对象,用键值对表示 man: name: wbl age: 23 #多行文本块:用| shuoming: | this is xy102 wbl this first ta 23 le
docker-compose
ps 基于docker-compose拉取的镜像生成的容器 up docker-compose 创建和启动容器 scale 创建容器的数量 top 显示容器的进程 logs 看容器的输出日志 stop start 停止、启动、重启 down 删除容器,网络,数据卷,镜像
[root@docker1 opt]# docker-compose -f docker-compose.yaml up -d docker-compose:使用docker-compose一键编排容器 -f: 使用模板文件,必须是.yml结尾 up:启动 -d:后台运行
[root@docker1 opt]# cp -r nginx/ nginx1/ [root@docker1 opt]# ls docker-compose.yaml mysql mysql1 nginx nginx1 nhtml php [root@docker1 opt]# vim docker-compose.yaml version: '3' #定义docker-compose文件的版本,2.0之后都是3,顶格写就是全局使用 services: #定义镜像和容器的配置: nginx: version: '3' #定义docker-compose文件的版本,2.0之后都是3,顶格写就是全局使用 services: #定义镜像和容器的配置: nginx: container_name: web1 #定义容器的名字,web1 hostname: nginx1 #定义创建好之后,容器的主机名 build: #构建的是dockerfile context: /opt/nginx1 #声明上下文,上文是构建dockerfile,下文是context,告诉你dockerfile的路径 dockerfile: Dockerfile ports: #声明宿主机和容器的端口映射 - 80:80 - 443:443 networks: #指定容器的ip地址 mynet: ipv4_address: 172.18.0.10 volumes: #创建容器挂载卷 - /opt/nhtml:/usr/local/nginx/html/ networks: mynet: driver: bridge ipam: config: - subnet: 172.18.0.0/16 #创建自定义网络 [root@docker1 opt]# docker-compose -f docker-compose.yaml up -d [root@docker1 opt]# ls docker-compose.yaml mysql mysql1 nginx nginx1 nhtml php [root@docker1 opt]# cd nhtml/ [root@docker1 nhtml]# ls [root@docker1 nhtml]# echo 123 > index.html [root@docker1 nhtml]# curl 192.168.65.51 123
[root@docker1 opt]# vim docker-compose.yml version: '3' services: nginx1: container_name: web1 hostname: nginx1 build: context: /opt/nginx dockerfile: Dockerfile ports: - 80:80 - 443:443 networks: mynet: ipv4_address: 172.18.0.10 volumes: - /opt/nhtml:/usr/local/nginx/nhtml/ mysql1: container_name: web2 hostname: mysql1 build: context: /opt/mysql dockerfile: Dockerfile ports: - 3306:3306 networks: mynet: ipv4_address: 172.18.0.11 volumes: - /opt/mysql1:/opt/mysql/ php1: container_name: web3 hostname: php1 build: context: /opt/php dockerfile: Dockerfile ports: - 9000:9000 networks: mynet: ipv4_address: 172.18.0.12 networks: mynet: driver: bridge ipam: config: - subnet: 172.18.0.0/16 [root@docker1 opt]# docker-compose -f docker-compose.yml up -d [+] Building 0.0s (0/0) [+] Running 4/4 ✔ Network opt_mynet Created 0.1s ✔ Container web3 Started 9.4s ✔ Container web1 Started 9.5s ✔ Container web2 Started 9.4s
1