首页 > 其他分享 >Docker Compose基础

Docker Compose基础

时间:2022-11-20 19:33:09浏览次数:58  
标签:容器 compose -- 基础 Compose Docker php root docker

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图解

标签:容器,compose,--,基础,Compose,Docker,php,root,docker
From: https://www.cnblogs.com/yidadasre/p/16909280.html

相关文章