官术网_书友最值得收藏!

An overview of Docker compose

Docker compose is a tool that enables us to run multiple containers with ease. It's a built-in tool in the Docker CE distribution. All it does is read docker-compose.yml (or .yaml) to run the defined containers. A docker-compose file is a YAML-based template, and it typically looks like this:

version: '3'
services:
hello-world:
image: hello-world

Launching it is pretty simple: save the template to docker-compose.yml and use the docker-compose up command to start it:

$ docker-compose up
Creating network "user_default" with the default driver
Pulling hello-world (hello-world:)...
...
Creating user_hello-world_1 ... done
Attaching to user_hello-world_1
hello-world_1 |
hello-world_1 | Hello from Docker!
hello-world_1 | This message shows that your installation appears to be working correctly.
...
user_hello-world_1 exited with code 0

Let's take a look at what docker-compose did when the up command was executed.

Docker compose is basically a medley of Docker functions for multiple containers. For example, the counterpart of docker build is docker-compose build; the former builds a Docker image and the latter builds Docker images listed in docker-compose.yml. Remember, however, that the docker-compose run command doesn't correspond to docker run; it's actually used to run a specific container from the configuration in docker-compose.yml. In fact, the closest command to docker run is docker-compose up.

The docker-compose.yml file consists of different configurations of volumes, networks, and services. There should be a version definition to indicate which version of the docker-compose format should be used. With this understanding of the template structure, what the previous hello-world example does is quite clear; it creates a service called hello-world that uses the hello-world:latest image.

Since there's no network defined, docker-compose will create a new network with a default driver and connect services to that network, as shown at the start of the output of the example.

The network name of a container will be the name of the service. You may notice that the name displayed in the console differs slightly from its original one in docker-compose.yml. This is because Docker compose tries to avoid name conflicts between containers. As a result, Docker compose runs the container with the name it generated and makes a network alias with the service name. In this example, both hello-world and user_hello-world_1 are resolvable to other containers within the same network.

Docker compose is the easiest option to run multiple containers on a single machine, but it's not designed to orchestrate containers across networks. Other major container orchestration engines such as  Kubernetes, Docker Swarm, Mesos (with Marathon or Aurora), or Nomad are better choices to run containers across multiple nodes.
主站蜘蛛池模板: 兰西县| 田东县| 广平县| 东莞市| 黄石市| 满城县| 太和县| 土默特右旗| 曲麻莱县| 澜沧| 巨鹿县| 武汉市| 枣庄市| 徐闻县| 南宫市| 沁源县| 奉节县| 奎屯市| 商河县| 祁阳县| 时尚| 漠河县| 清涧县| 五台县| 易门县| 长丰县| 噶尔县| 金堂县| 丹寨县| 玉田县| 江山市| 丹凤县| 海晏县| 太原市| 成都市| 余干县| 化德县| 马公市| 汝州市| 利津县| 新绛县|