docker-compose介绍以及简单使用

1 安装

1.1 docker

按照下面的步骤进行安装:

# 更新现有的包
sudo apt update

# 添加Docker PGP公钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

# 配置Docker APT库
echo 'deb [arch=amd64] https://download.docker.com/linux/debian buster stable' | sudo tee /etc/apt/sources.list.d/docker.list

# 更新一下APT列表
sudo apt-get update

# 安装Docker,在安装前先删除原来系统中可能自带的Docker:
sudo apt-get remove docker docker-engine docker.io

# 安装Docker:
sudo apt-get install docker-ce

# 看看安装成功了没:
sudo docker run hello-world

# 设置启动
sudo systemctl start docker
sudo systemctl enable docker

1.2 docker-compose

获取执行文件到本地(可能需要sudo)

curl -L https://github.com/docker/compose/releases/download/1.25.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

为可执行文件设置权限

chmod +x /usr/local/bin/docker-compose

确定是否安装成功

docker-compose version

最后的效果:

2 docker-compose介绍

首先需要知道 docker-compose 是为了解决什么场景而出现的。

运行 docker 需要使用长而繁杂的命令。如:

docker run \
  --detach \
  --name registry \
  --hostname registry \
  --volume $(pwd)/app/registry:/var/lib/registry \
  --publish 5000:5000 \
  --restart unless-stopped \
  registry:latest

为了方便运行,可以将这种docker run写成shell文件。

web 镜像确比这更为复杂,一个简单的 docker run 命令不足以开启一个 Web 服务,通常需要多个镜像,镜像之间还会有一些优先关系。这种关系的编排就叫做 docker 的编排。

docker 提供一个命令行工具 docker-compose 来帮助完成 docker 的编排,要使用 docker-compose 需要编写一个 docker-compose.yml 文件(配置文件)。
例如:

version: "3"
services:
  web:
    image: beginor/geoserver:2.11.1
    container_name: geoserver-web
    hostname: geoserver-web
    ports:
      - 8080:8080
    volumes:
      - ./web/data_dir:/geoserver/data_dir
      - ./web/logs:/geoserver/logs
    restart: unless-stopped
    links:
      - database:database
  database:
    image: beginor/postgis:9.3
    container_name: postgis
    hostname: postgis
    ports:
      - 5432:5432
    volumes:
      - ./database/data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: 1q2w3e4R
    restart: unless-stopped

上面的yml文件定义了两个服务web和database,一个服务在运行时对应一个容器的实例,上面的文件表示要启动两个实例。

在部署时,通常需要将 docker-compose.yml 文件放到一个目录下,表示一个应用,docker 会为这个应用创建独立的网络。

可以使用 docker-compose up -d 来启动这个程序。

~/Desktop/source » docker-compose up -d                                                                                                                       255 ↵ littlechieh6@MacBook-Pro
Creating network "source_app1" with the default driver
Building server
Step 1/6 : FROM ubuntu:16.04
16.04: Pulling from library/ubuntu
be8ec4e48d7f: Pull complete
33b8b485aff0: Pull complete
d887158cc58c: Pull complete
05895bb28c18: Pull complete
Digest: sha256:3355b6e4ba1b12071ba5fe9742042a2f10b257c908fbdfac81912a16eb463879
Status: Downloaded newer image for ubuntu:16.04
……

要停止上面的容器,只需要输入 docker-compose down 即可。

从上面的命令可以看出,docker-compose 不仅可以根据配置文件 docker-compose.yml 自动创建网络,启动响应的容器实例,也可以根据配置删除容器实例。

3 docker-compose使用

常用的命令:

# 启动 docker-compose 的实例
docker-compose up -d

# 关闭 docker-compose 的实例
docker-compose down

# 列出本机正在运行的容器
docker container ls
docker ps

# 用来查看 docker 容器的输出,即容器里面 Shell 的标准输出。
$ docker container logs [containerID]

# 进入容器
$ docker container exec -it [containerID] /bin/bash

附录

参考教程:

  1. 使用 docker-compose 替代 docker run:https://beginor.github.io/2017/06/08/use-compose-instead-of-run.html
  2. Kali Linux 2020.1 Release安装Docker-CE:https://zhuanlan.zhihu.com/p/110675842

猜你喜欢

转载自blog.csdn.net/qq_43085611/article/details/112994515