目录
Docker Compose概述
compose特点
单个主机上的多个隔离环境
创建容器时保留卷数据
仅重新创建已更改的容器
变量和在环境之间移动组合
yml文件格式
docker compose配置常用字段
docker compose常用命令
Docker compose部署Nginx服务
总结
Docker Compose概述
根据官方文档,大概翻译了一些
Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,可以使用 YAML 文件来配置应用程序的服务。然后,使用一个命令,可以从你的配置中创建并启动所有服务
Compose 适用于所有环境:生产、登台、开发、测试以及 CI 工作流程。
使用 Compose 基本上是一个三步过程:
使用 a 定义您的应用程序的环境,Dockerfile以便可以在任何地方复制它。
定义构成您的应用程序的服务,docker-compose.yml 以便它们可以在隔离环境中一起运行。
运行docker compose up,Docker compose 命令启动并运行整个应用程序。也可以docker-compose up使用 docker-compose 二进制文件运行。
Compose 具有用于管理应用程序整个生命周期的命令:
启动、停止和重建服务查看运行服务的状态流式传输正在运行的服务的日志输出在服务上运行一次性命令 compose特点
Compose 使其有效的特点是:
单个主机上多个隔离环境创建容器时保留数据卷数据仅重新创建已更改的容器变量和环境之间移动组合 单个主机上的多个隔离环境
Compose 使用项目名称将环境彼此隔离。您可以在几个不同的上下文中使用此项目名称:
在开发主机上,创建单个环境的多个副本,例如当您想要为项目的每个功能分支运行稳定副本时在 CI 服务器上,为了防止构建相互干扰,您可以将项目名称设置为唯一的构建号在共享主机或开发主机上,以防止可能使用相同服务名称的不同项目相互干扰
默认项目名称是项目目录的基本名称。您可以使用-p命令行选项或 COMPOSE_PROJECT_NAME环境变量设置自定义项目名称。
默认项目目录是 Compose 文件的基本目录。可以使用--project-directory命令行选项定义它的自定义值。
创建容器时保留卷数据Compose 会保留您的服务使用的所有卷。运行时docker-compose up ,如果它找到以前运行的任何容器,它会将卷从旧容器复制到新容器。此过程可确保您在卷中创建的任何数据都不会丢失。
仅重新创建已更改的容器Compose 缓存用于创建容器的配置。当您重新启动未更改的服务时,Compose 会重新使用现有容器。重复使用容器意味着您可以非常快速地更改您的环境。
变量和在环境之间移动组合Compose 支持 Compose 文件中的变量。您可以使用这些变量为不同的环境或不同的用户定制自己的组合。
可以使用该字段或通过创建多个 Compose 文件来扩展Compose 文件
yml文件格式YAML是一种标记语言很直观的数据序列化格式文件格式及编写注意事项
●不支持制表符tab键缩进,需要使用空格缩进·
●通常开头缩进2个空格
●字符后缩进1个空格,如冒号、逗号、横杆
●用#号注释
●如果包含特殊字符用单引号引起来
●布尔值必须用引号括起来
docker compose配置常用字段下载compose
[root@localhost ~]# curl -L "https://github.com/docker/compose/releases/download/1.21.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
创建一个测试目录
[root@localhost ~]# mkdir test
结构大体如下
[root@localhost ~/test]# tree . └── compose_nginx ├── docker-compose.yml ├── nginx │ ├── Dockerfile │ └── nginx-1.15.9.tar.gz └── wwwroot └── index.html 3 directories, 4 files
编写yml文件
[root@localhost ~/test/compose_nginx]# cat docker-compose.yml version: '3' services: nginx: hostname: nginx build: context: ./nginx dockerfile: Dockerfile ports: - 1314:80 - 2580:443 networks: - cluster volumes: - ./wwwroot:/usr/local/nginx/html networks: cluster:
Dockerfile文件
[root@localhost ~/test/compose_nginx/nginx]# cat Dockerfile FROM centos:7 as build ADD nginx-1.15.9.tar.gz /mnt WORKDIR /mnt/nginx-1.15.9 RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &>/dev/null && yum clean all && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx &>/dev/nuil && make &>/dev/null && make install &>/dev/null && rm -rf /mnt/nginx-1.15.9 FROM centos:7 EXPOSE 80 VOLUME ["/usr/local/nginx/html"] COPY --from=build /usr/local/nginx /usr/local/nginx CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;"]
index.html文件
[root@localhost ~/test/compose_nginx/wwwroot]# cat index.html this is xiaobin first docker compose
运行
[root@localhost ~/test/compose_nginx]# docker-compose -f docker-compose.yml up -d Building nginx Step 1/9 : FROM centos:7 as build ---> eeb6ee3f44bd Step 2/9 : ADD nginx-1.15.9.tar.gz /mnt ---> 250ae0c6dec2 Step 3/9 : WORKDIR /mnt/nginx-1.15.9 ---> Running in 111652508c7f Removing intermediate container 111652508c7f ---> 50c455161330 Step 4/9 : RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &>/dev/null && yum clean all && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/lo cal/nginx &>/dev/nuil && make &>/dev/null && make install &>/dev/null && rm -rf /mn t/nginx-1.15.9 ---> Running in c78e0cd749c3 Loaded plugins: fastestmirror, ovl Cleaning repos: base extras updates Cleaning up list of fastest mirrors Removing intermediate container c78e0cd749c3 ---> a7d34a938fe2 Step 5/9 : FROM centos:7 ---> eeb6ee3f44bd Step 6/9 : EXPOSE 80 ---> Running in 452a82532ac7 Removing intermediate container 452a82532ac7 ---> 58351b0aaeb6 Step 7/9 : VOLUME ["/usr/local/nginx/html"] ---> Running in 43ec47184966 Removing intermediate container 43ec47184966 ---> 81786e63ec57 Step 8/9 : COPY --from=build /usr/local/nginx /usr/local/nginx ---> 5d31587f9dad Step 9/9 : CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;"] ---> Running in f10c92bb8449 Removing intermediate container f10c92bb8449 ---> 5cb6aef432c2 Successfully built 5cb6aef432c2 Successfully tagged compose_nginx_nginx:latest WARNING: Image for service nginx was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`. Creating compose_nginx_nginx_1 ... done
查看容器
测试
[root@localhost ~/test/compose_nginx/wwwroot]# curl 192.168.37.107:1314 this is xiaobin first docker compose
那么我们怎么知道哪些容器是docker-compose创建的
使用docker-compose ps命令
[root@localhost ~/test/compose_nginx]# docker-compose ps Name Command State Ports -------------------------------------------------------------------------------------------------------------------------------------- compose_nginx_nginx_1 /usr/local/nginx/sbin/ngin ... Up 0.0.0.0:2580->443/tcp,:::2580->443/tcp, 0.0.0.0:1314->80/tcp,:::1314->80/tcp
需要注意,必须在有yml目录下才能使用,不然会提示你找不到........
[root@localhost ~]# docker-compose ps ERROR: Can't find a suitable configuration file in this directory or any parent. Are you in the right directory? Supported filenames: docker-compose.yml, docker-compose.yaml总结
docker compose是docker的一个应用程序工具,通过YAML 文件来配置应用程序的服务
注意yml书写格式,scale副本集在之后的Kubernetes中有很大用处。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)