云网牛站
所在位置:首页 > Linux教程 > 在Linux系统下使用Docker Compose管理Docker容器

在Linux系统下使用Docker Compose管理Docker容器

2019-12-10 20:44:52作者:夏俊稿源:云网牛站

本文介绍在Linux操作系统下使用Docker Compose管理Docker容器的方法,请确保系统中已安装Docker和Docker Compose,参考在Ubuntu 18.04 Server上安装Docker和Docker Compose的方法。如果您的项目/应用程序使用多个容器,则尝试分别运行各个容器然后将它们链接起来是不合理的,这个时候Docker-compose可帮助您运行多个容器,链接它们并在一个文件中定义各种容器属性,该文件称为docker-compose.yml。

 

Docker-compose文件

此文件包含所有已定义的容器属性及其要在指定项目/应用程序中使用的图像,多年来,它已从版本1更改为版本3,因此,需要在每个docker-compose.yml文件的开头指定要使用的版本,Docker-compose文件以YAML格式编写,并且格式为docker-compose.yml,一个典型的docker-compose文件如下所示:

version: "3"

services:

db:

image: postgres

environment:

POSTGRES_USER: zuri

POSTGRES_DB: zuri

POSTGRES_PASS: zuri1234

volumes:

- pgdata:/var/lib/posgresql/data

zuri:

build:

context: .

ports:

- "8000:8000"

volumes:

- ./zuri:/zuri

command: python manage.py runserver 0.0.0.0:8000

depends_on:

- db

volumes:

pgdata:

docker-compose文件由各种组件组成,我不会谈论所有这些,但是我会讲一些重要的,本质上,选写文件定义了控制容器的服务,从上面的示例中,您可以看到我有两个服务,即db和zuri。db服务是我的数据库容器,而zuri服务是我的项目,两者通过属性depends_on进行通信,这告诉docker-compose在运行zuri服务时不应该创建该服务。

在每个服务下,您都可以定义许多属性,例如要公开的端口,要使用的卷、网络等。当然,每个容器都使用一个映像,因此您可以在docker-compose文件中直接定义该映像或指定要使用的Dockerfile。在此示例中,您可以看到在zuri服务中,我已经使用定义了构建上下文。这告诉docker-compose在同一目录中查找docker文件以为服务构建映像,但是数据库服务具有直接定义的Postgres图像。

这是zuri服务dockerfile:

#base image

FROM python:3

#maintainer

LABEL Author="CodeGenes"

# The enviroment variable ensures that the python output is set straight

# to the terminal with out buffering it first

ENV PYTHONBUFFERED 1

#directory to store app source code

RUN mkdir /zuri

#switch to /app directory so that everything runs from here

WORKDIR /zuri

#copy the app code to image working directory

COPY ./zuri /zuri

#let pip install required packages

RUN pip install -r requirements.txt

 

Docker container生命周期

Docker容器是临时的,也就是说,当您删除容器时,它们会被删除,它们的状态取决于它们托管的应用程序的状态,各种状态包括:

1.创建容器$ docker create –name <container-name> <image-name>

2.运行容器$ docker run -it -d –name <container-name> <image-name>

3.暂停容器$ docker pause <container-id/name>

4.取消暂停容器$ docker unpause <container-id/name>

5.启动容器$ docker start <container-id/name>

6.停止容器$ docker stop <container-id/name>

7.重新启动容器$ docker restart <container-id/name>

8.杀死容器$docker kill <container-id/name>

9.删除/删除容器$docker rm <container-id/name>

 

Docker-compose命令

当然,它由管理容器组成,它还包含各种容器命令来管理整个容器生命周期,其中一些命令包括启动、停止、构建视图等。

要查看这些命令及其作用,请在您的终端上运行此命令:

$ docker-compose --help

Define and run multi-container applications with Docker.

Usage:

docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]

docker-compose -h|--help

其余的信息如下图:

在Linux系统下使用Docker Compose管理Docker容器

 

Docker Compose Up

当您要启动或启动docker-compose.yml文件中的所有服务时,使用此命令。Docker-compose.yml文件定义了您的服务,它们的属性、变量和依赖项:

$ docker-compose up

要查看正在运行的容器:

$ docker-compose ps

您还可以使docker-compose仅运行一项服务,例如:

$ docker-compose up zuri

 

Docker Compose Run

此命令将启动一个新容器供您使用,它通常在您需要新容器或容器未运行时使用,并且是一个一次性的过程,可避免与可能正在运行的docker-compose.yml中的其他服务发生冲突:

$ docker-compose run zuri python manage.py migrate

 

Docker Compose Exec

当您想与已经运行的容器进行交互时,使用此命令,因此,它需要与命令参数一起运行,执行之前,容器必须处于运行状态:

$ docker-compose exec zuri bash

 

相关主题

搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法

精选文章
热门文章