Docker Compose基础

Docker Compose

官方下载连接:https://docs.docker.com/compose/install/compose-plugin/#installing-compose-on-linux-systems

docker-compose是docker官方的开源项目,负责实现对docker容器集群的快速编排,可以管理多个docker容器组成一个应用,你需要定义一个YAML格式的配置文件,例:docker-compose.yml 写好多个容器之间的调用关系,然后,只要一个命令,就能同时启动、关闭这些容器

  • 单机容器编排工具
  • docker composr+docker swarm实现集群管理,未来我们通过k8s实现集群管理
  • docker三剑客之一:docker machine(管理虚拟机) , docker compose(容器编排),docker swarm(集群)
  • docker compose需要单独安装(epel源就有,版本低)语法yaml格式

1. compose极速上手指南

#课上使用yum安装的
[root@docker01 /]# yum install -y docker-compose
[root@docker01 /docker]# mkdir -p /server/compose/run-nginx
  • 官方
#第一步
curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
#第二步
[root@harbor ~]# chmod +x /usr/local/bin/docker-compose
[root@harbor ~]# docker-compose --version
#要是卸载的话
rm /usr/local/bin/docker-compose
  • 支持的文件格式

compose.yaml

compose.yml

docker-compose.yaml

docker-compose.yml

默认支持的compose.yml

  • 格式
#使用compose版本型号
version: "3.3"
#开头--注意有s 服务名
services:
#自定义容器名--最后会显示当前文件名加上这个容器名
web_ngx:
#起一个容器名,与上面保持一致
build: .
#构建镜像
container_name: web_ngx
#镜像
image: "nginx:1.20.2-alpine"
#指定管理的容器名(容器互联)
links:
- web_php
#映射的端口
ports:
- "8000:80"
#数据卷挂载,左边宿主机右边容器
volumes:
- /app/service:/data
#设置网络(网络互联)
networks:
- 网络名
#依赖于哪个容器,先启动哪个后启动哪个
depends_on:
- 第一个容器名
- 第二容器名
#被管理容器+镜像
web_php:
image: "php:7-fpm"
#设置网络(网络互联)
networks:
- 网络名
#这个相当于创建一个网络(定格写)
networks:
网络名
## 2. 启动命令
docker-compose up -d
  • redis参考写法

  • 数据库参考写法

!

docker-compose命令格式 这个命令包含了docker container 和 docker image 命令
容器命令
up -d up == run 创建并运行容器启动的时候后台运行类似于 docker run -d
stop/start/restart 关闭、开启、重启容器
ps 查看容器运行情况 只有-q选项
top 容器进程信息
logs 容器日志
rm 删除容器(需要容器已经关闭)
镜像命令
image 查看镜像
  • 修改docker-compose与生效

如果都docker-compose简单修改端口、数据卷、docker-compose up -d 会自动识别,重新创建容器

如果容器的名字也改了、会造成新旧容器的端口冲突,会失败,可以 up -d --remove-orphans 删除之前容器或失效容器 最后这个命令报错会提示命令复制即可

#管理指定的容器
version: "3.3"
services:
web_nginx:
image: "nginx:1.20.2-alpine"
links:
- "web_php"
ports:
- "8082:80"
web_php:
image: "php:7-fpm"
#启动运行
[root@docker01 /server/compose/run-nginx]# docker-compose up -d
#查看进程状态
[root@docker01 /server/compose/run-nginx]# docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------------------------
runnginx_web_nginx_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8082->80/tcp,:::8082->80/tcp
runnginx_web_php_1 docker-php-entrypoint php-fpm Up 9000/tcp

3. compose文件的常用指令

#depends_on:依赖,先启动指定的容器然后在启动当前容器
volumes: 数据卷

4. 案例-docker-compose与dockerfile

  • ubuntu
  • php
  • 配置文件
  • 代码目录

学习搭建思路:

  1. 先准备宿主机上一个ubuntu系统,进入到容器先手动搭建一遍
  2. 另起一个窗口在宿主机上准备好nginx相关配置文件,之后传送过去
#docker-compose调用dockerfile
#通过调用这个compose可以执行Dockerfile
version: "3.3"
services:
compose:
build: .
ports:
- "80:80"
expose:
- "9000"
#这个可以compose,可以dockefile--标记区分
FROM ubuntu:20.04
LABEL auther=quyi sys_version=20.04 php_version=php-7.4-fpm
RUN sed -i 's#archive.ubuntu.com|security.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list\
&& apt update\
&& apt install -y nginx\
&& apt install -y php7.4-fpm\
&& mkdir -p /app/code/kode/\
&& mkdir -p /app/scripts/
ADD kodexp.tar.gz /app/code/kode/
COPY nginx.conf /etc/nginx/nginx.conf
COPY fg.conf /etc/nginx/conf.d/fg.conf
COPY www.conf /etc/php/7.4/fpm/pool.d/www.conf
COPY entrypoint.sh /app/scripts/
RUN chown -R www-data.www-data /app/code/kode/\
&& chmod 755 /app/scripts/entrypoint.sh
CMD ["/app/scripts/entrypoint.sh"]
[root@docker01 /docker/Dockerfile-ubuntu-php]# ll
total 13752
-rw-r--r-- 1 root root 113 May 26 23:56 docker-compose.yml
-rw-r--r-- 1 root root 638 May 26 23:36 Dockerfile
-rw-r--r-- 1 root root 62 May 26 23:00 entrypoint.sh
-rw-r--r-- 1 root root 330 May 26 23:31 fg.conf
-rw-r--r-- 1 root root 118 May 17 06:13 index.php
-rw-r--r-- 1 root root 14035010 May 25 17:10 kodexp.tar.gz
-rw-r--r-- 1 root root 1490 May 26 22:30 nginx.conf
-rw-r--r-- 1 root root 19595 May 26 23:31 www.conf
WARNING: Image for service compose was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
#重复的执行的镜像已生成,因为它不存在,要重建镜像,可以使用如下命令

5. 小结

6. docker-compose图解

posted @   YIDADA-SRE  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示