本文介绍在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 其余的信息如下图:
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
相关主题 |