Docker 和 Docker Compose

Docker 是一种工具,用于自动在轻量级容器中部署应用程序,以便应用程序可以在不同的环境中独立高效地工作。

Docker

首先,在 macOS 上安装 Docker Desktop

$ brew install --cask docker    # 安装 Docker Desktop
$ brew install docker-compose   # 安装 Docker Compose
$ docker run -p 3000:3000 -d get-started:latest     # --restart=always --name get-started-test --rm -it

Docker Compose

Docker Compose 是一种用于定义和运行多容器应用程序的工具。它是解锁简化且高效的开发和部署体验的关键。

Compose 简化了对整个应用程序堆栈的控制,使您可以轻松地在单个易懂的 YAML 配置文件中管理服务、网络和卷。然后,使用单个命令,您可以从配置文件中创建和启动所有服务。

Compose 适用于所有环境;生产、准备、开发、测试以及 CI 工作流。它还具有用于管理应用程序整个生命周期的命令:

$ docker compose build app
$ docker compose up -d
$ docker compose down

停止容器并删除 up 创建的容器、网络、卷和映像。默认情况下,仅删除以下内容:

默认情况下不会删除匿名卷。但是,由于它们没有稳定的名称,因此不会由后续 up 自动安装。对于需要在更新之间保留的数据,请使用显式路径作为绑定安装或命名卷。

常用命令

$ docker volume ls
$ docker volume prune
$ docker volume inspect delivery_storage
$ sudo chown 33:33 -R /var/lib/docker/volumes/delivery_storage

# docker cp .env delivery_fpm_1:/var/www/html/
# docker exec -u root delivery_fpm_1 chown www-data:www-data .env

# 容器编排
$ docker compose up -d            # 启动所有服务
$ docker compose down -v          # 关闭所有服务。-v, 同时删除所有卷
$ docker compose restart          # 重启所有服务
$ docker compose restart app      # 重启某个服务
$ docker compose logs -f          # 查看所有服务的日志
$ docker compose logs app -f      # 查看某个服务的日志
$ docker-compose up -d --scale worker=3 --no-recreate

# 容器内运行命令
$ docker compose exec redis redis-cli FLUSHALL              # 在现有的容器内,执行命令
$ docker compose run --rm django python manage.py migrate   # 复制一个新容器,执行命令。--rm, 随后删除该临时容器
$ docker compose run --rm django python manage.py createsuperuser --noinput