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
附录
参考教程:
- 使用 docker-compose 替代 docker run:https://beginor.github.io/2017/06/08/use-compose-instead-of-run.html
- Kali Linux 2020.1 Release安装Docker-CE:https://zhuanlan.zhihu.com/p/110675842