dockercompose的简单使用

author author     2022-10-14     407

关键词:

笔记内容:docker compose的简单使用
笔记日期:2018-02-08

  • 25.17 安装docker compose
  • 25.18 docker compose示例

安装docker compose

docker compose可以方便我们快捷高效地管理容器的启动、停止以及重启等操作,和批量管理容器,它类似于linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比如用什么镜像、数据卷、网络模式、监听端口等信息。我们可以在一个compose文件中定义一个多容器的应用(比如jumpserver),然后通过该compose来启动这个应用。

安装compose的方法如下,下载docker-compose然后放到/usr/local/bin/目录下,再更改一下权限即可:

[[email protected] ~]# curl -L https://github.com/docker/compose/releases/download/1.17.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
[[email protected] ~]# chmod 755 !$  # 指定权限
chmod 755 /usr/local/bin/docker-compose
[[email protected] ~]# 

docker compose的安装就这么简单,安装完后,我们来查看一下版本信息:

[[email protected] ~]# docker-compose version
docker-compose version 1.17.0-rc1, build a0f95af
docker-py version: 2.5.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016
[[email protected] ~]# 

说明:Compose区分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。Version 2支持更多的指令。Version 1没有声明版本默认是"version 1"。Version 1将来会被弃用。


docker compose示例

以上我们已经安装好了docker compose ,下面用一个简单的示例演示一下如何使用docker compose,编辑.yml文件,内容如下:

[[email protected] ~]# vim docker-compose.yml
version: "2"  # 使用Version 2
services:  # 包含需要操作的容器
  app1: # 容器的名称
    image: centos_nginx  # 指定基于哪个镜像
    ports:  # 指定映射的端口
      - "8080:80"
    networks:  # 指定使用哪个网络模式
      - "net1"
    volumes:  # 指定挂载的的目录
      - /data/:/data
  app2:
    image: test_centos
    networks:
      - "net2"
    volumes:
      - /data/:/data1
    entrypoint: tail -f /etc/passwd  # 这一句是为了让这个容器不会被关闭
networks:
  net1:
    driver: bridge
  net2:
    driver: bridge

编辑完之后就可以启动了:

[[email protected] ~]# docker-compose up -d  # -d是丢到后台运行
Creating network "root_net2" with driver "bridge"
Creating network "root_net1" with driver "bridge"
Creating root_app2_1 ... 
Creating root_app1_1 ... 
Creating root_app2_1
Creating root_app1_1 ... done
[[email protected] ~]# 

然后docker ps看一下是否已启动成功:
技术分享图片

如果你没有加 entrypoint: tail -f /etc/passwd 这样的语句的话,那么app2被启动之后就会马上关闭了,所以加这一句没别的作用,就是为了不被马上关闭。不信的话,我现在删除掉那两个容器,然后再把 docker-compose.yml 文件里的那句命令给注释掉,再启动:

[[email protected] ~]# docker rm -f df21c6ec7
df21c6ec7
[[email protected] ~]# docker rm -f c2dda49
c2dda49
[[email protected] ~]# vim docker-compose.yml
[[email protected] ~]# docker-compose up -d
Creating root_app2_1 ... 
Creating root_app1_1 ... 
Creating root_app2_1
Creating root_app1_1 ... done
[[email protected] ~]# 

如上,可以看到,启动是成功的,但是我dicker ps -a查看却只有app1是在启动状态,而app2是在Exited状态:
技术分享图片

所以要加上 entrypoint: tail -f /etc/passwd 的原因就在这,这个语句的唯一作用就是防止容器被关闭,这是docker的一个特性,说实话我也不知道为嘛要加这样的一句话,但是不加的话末尾启动的那个容器就会被关闭,不过不一定非要写 tail -f /etc/passwd ,也可以是其他可正常执行的命令。

docker-compose --help 可以查看该命令的文档,下面介绍几个常用的命令参数:

停止已有的容器:

[[email protected] ~]# docker-compose stop
Stopping root_app1_1 ... done
Stopping root_app2_1 ... done
[[email protected] ~]# 

启动已有的容器:

[[email protected] ~]# docker-compose start
Starting app2 ... done
Starting app1 ... done
[[email protected] ~]# 

查看容器的状态:

[[email protected] ~]# docker-compose ps
   Name                  Command                State     Ports
---------------------------------------------------------------
root_app1_1   /bin/sh -c /usr/local/ngin ...   Exit 137        
root_app2_1   tail -f /etc/passwd              Exit 137        
[[email protected] ~]# 

删除容器:

[[email protected] ~]# docker-compose rm -f
Going to remove root_app1_1, root_app2_1
Removing root_app1_1 ... done
Removing root_app2_1 ... done
[[email protected] ~]# 

停止并删除运行中的容器:

[[email protected] ~]# docker-compose down
Stopping root_app1_1 ... done
Stopping root_app2_1 ... done
Removing root_app1_1 ... done
Removing root_app2_1 ... done
Removing network root_net2
Removing network root_net1
[[email protected] ~]# docker-compose ps
Name   Command   State   Ports
------------------------------
[[email protected] ~]# 

关于docker-compose语法的参考文档:

http://www.web3.xin/index/article/182.html

dockercompose线下安装

 Compose是一个用户定义和运行多个容器的Docker应用程序。在Compose中你可以使用YAML文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。使用GitHub的地址找到最新的compose的最新版本... 查看详情

dockercompose的使用--在线安装未完成

 Compose是一个用户定义和运行多个容器的Docker应用程序。在Compose中你可以使用YAML文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。使用GitHub的地址找到最新的compose的最新版本... 查看详情

dockercompose创建yml简单试例(代码片段)

DockerCompose创建yml简单试例DockerCompose文件使用格式版本需要与Docker版本对应可在官网内查找查找地址:https://docs.docker.com/compose/compose-file/compose-file-v2/#compose-and-docker-compatibility-matrix 1、创建compose-test目录,进入目录再改 查看详情

dockercompose

...排部署基于docker的应用。本身与docker/swarm配合度很高。DockerCompose是Docker编排服务的一部分,可以让用户在其它平台快速安装Docker,Swarm可以让Docker容器在集群中高效运转,而Compose可以让用户在集群中部署分布式应用。简单的说... 查看详情

dockercompose安装(代码片段)

...用,而这些docker容器可能运行在多个不同的宿主机上。2.DockerCompose是一个比较简单的docker容器的编配工具,以前的名称叫Fig,由Orchard团队开发的开源Docker编配工具,在2014年被Docker公司收购,DockerCompose是使用 查看详情

构建dockercompose服务堆栈(代码片段)

1.安装了docker-compose,现在我们要使用docker-compose来运行容器栈。这个地方会有两个容器,一个容器中使用Flask搭建的简单应用,另一个容器是Redis,Flash会向redis写入数据。因此设计到容器之间的通信。之前我们讲到了,容器之间... 查看详情

dockercompose

使用DockerCompose管理多个容器DockerCompose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。-github.com/docker/compose一个使用Dock... 查看详情

dockercompose(代码片段)

1、什么是dockercomposeCompose是一个定义和管理多容器的工具,使用Python语言编写。使用Compose配置文件描述多个容器应用的架构,比如使用什么镜像、数据卷、网络、映射端口等;然后一条命令管理所有服务,比如启动、停止、重... 查看详情

dockercompose配置文件常用指令

DockerCompose配置文件常用指令YAML文件格式及编写注意事项YAML是一种标记语言很直观的数据序列化格式,可读性高。类似于XML数据描述语言,语法比XML简单的很多。YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值... 查看详情

docker基础知识和命令使用入门(代码片段)

...ocker的用途和意义,Docker的镜像、容器、仓库、Dockerfile和DockerCompose的理解,以及Docker图形管理工具Portainer的基础功能。Docker命令的使用包括镜像使用、容器使用、网络使用以及Docker本身的信息显示的方法,DockerCompose使用的原理... 查看详情

云原生容器编排技术dockercompose(代码片段)

为什么需要DockerComposeDockerCompose介绍DockerCompose安装DockerCompose版本介绍DockerCompose基本命令介绍DockerCompose实战DockerComposeYml文件介绍总结为什么需要DockerComposeDocker帮助我们解决服务的打包安装的问题,随着而来的问题就是服务... 查看详情

dockercompose编排(写法格式及实验)(代码片段)

目录一、DockerCompose前言二、Dockercompose的文件结构1、dockercompose配置常用字段2、dockercompose常用命令三、使用compose编排1、使用compose编排安装运行tomcat容器2、使用compose编排创建容器(以tomcat为例)一、DockerCompose前言DockerCo... 查看详情

使用dockercompose部署服务

...署与管理。Docker有三个主要的作用:Build,Ship和Run。使用dockercompose我们可以在Run的层面解决很多实际问题,如:通过创建compose(基于YUML语法)文件,在这个文件上面描述应用的架构,如使用什么镜像、数据卷、网络、绑定服务端口... 查看详情

详解dockercompose,consul!!(代码片段)

DockerCompose的前身是Fig,它是一个定义及运行多个Docker容器的工具。使用DockerCompose不再需要使用ShellI脚本来启动容器DockerCompose非常适合组合使用多个容器进行开发的场景。Consul是HashiCor公司推出的开源工具,用于实现分布式系... 查看详情

dockercompose的使用(代码片段)

...跑kubernetes但是我也觉得麻烦啊…怎么搞重新捡起来一下dockercompose的使用吧,犹记得上次使用dockercompose还是2016年测试跑一个gitlab。从此以后基本就跟dockercompose无缘了dockercompose的使用windows安装dockerdockercompose就略过了…我的wi... 查看详情

dockercompose多容器应用

DockerCompose是一个用来定义并运行复杂应用程序的工具。用Compose,你可以在一个文件中定义多个容器应用程序,然后只需一条命令就可以完成使其运行所需的所有操作。一个使用Docker容器的应用程序通常是由多个容器组成的。使... 查看详情

企业——dockercompose的搭建

...和运行多容器的应用,可以一条命令启动多个容器,使用DockerCompose不再需要使用shell脚本来启动容器。   Compose通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚... 查看详情

docke及dockercompose于微服务的实践

DockerCompose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用DockerCompose不再需要使用shell脚本来启动容器。?Compose通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容... 查看详情