25 04 2021

前言

本节主要学习Docker-Compose。

Compose简介

Compose 是用于单宿主机定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

Compose安装

官方文档:https://docs.docker.com/compose/install/

WIN/MAC默认提供Docker Compose,Linux需安装

1、运行以下命令以下载Docker Compose的当前稳定版本:

  1. sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. ————————————————————————————————
  3. % Total % Received % Xferd Average Speed Time Time Time Current
  4. Dload Upload Total Spent Left Speed
  5. 100 633 100 633 0 0 1100 0 --:--:-- --:--:-- --:--:-- 1098
  6. 100 12.1M 100 12.1M 0 0 1993k 0 0:00:06 0:00:06 --:--:-- 2643k

2、将可执行权限应用于二进制文件:

  1. sudo chmod +x /usr/local/bin/docker-compose

3、测试安装结果:

  1. docker-compose --version
  2. ————————————————————————————————
  3. docker-compose version 1.29.1, build c34c88b2

这样docker-compose就安装好了~

通过Docker-Compose安装Wordpress

1、创建一个空的项目目录my-wordpress,切换至该目录。

  1. cd /usr/local/projectes
  2. mkdir my-wordpress
  3. cd my-wordpress

2、创建一个docker-compose.yml文件来启动WordPress博客,并创建一个单独的MySQL实例,该实例具有用于数据持久性的卷挂载:

  1. vim docker-compose.yml
  2. #内容如下:
  3. version: "3.9"
  4. services:
  5. db:
  6. image: mysql:5.7
  7. volumes:
  8. - db_data:/var/lib/mysql
  9. restart: always
  10. environment:
  11. MYSQL_ROOT_PASSWORD: somewordpress
  12. MYSQL_DATABASE: wordpress
  13. MYSQL_USER: wordpress
  14. MYSQL_PASSWORD: wordpress
  15. wordpress:
  16. depends_on:
  17. - db
  18. image: wordpress:latest
  19. ports:
  20. - "9999:80"
  21. restart: always
  22. environment:
  23. WORDPRESS_DB_HOST: db:3306
  24. WORDPRESS_DB_USER: wordpress
  25. WORDPRESS_DB_PASSWORD: wordpress
  26. WORDPRESS_DB_NAME: wordpress
  27. volumes:
  28. db_data: {}

3、运行项目

  1. docker-compose up -d
  2. ——————————————————————————————————
  3. Creating network "my-wordpress_default" with the default driver
  4. Creating volume "my-wordpress_db_data" with default driver
  5. Pulling db (mysql:5.7)...
  6. 5.7: Pulling from library/mysql
  7. f7ec5a41d630: Pull complete
  8. 9444bb562699: Pull complete
  9. 6a4207b96940: Pull complete
  10. 181cefd361ce: Pull complete
  11. 8a2090759d8a: Pull complete
  12. 15f235e0d7ee: Pull complete
  13. d870539cd9db: Pull complete
  14. cb7af63cbefa: Pull complete
  15. 151f1721bdbf: Pull complete
  16. fcd19c3dd488: Pull complete
  17. 415af2aa5ddc: Pull complete
  18. Digest: sha256:a655529fdfcbaf0ef28984d68a3e21778e061c886ff458b677391924f62fb457
  19. Status: Downloaded newer image for mysql:5.7
  20. Pulling wordpress (wordpress:latest)...
  21. latest: Pulling from library/wordpress
  22. f7ec5a41d630: Already exists
  23. 941223b59841: Pulling fs layer
  24. a5f2415e5a0c: Pulling fs layer
  25. b9844b87f0e3: Pulling fs layer
  26. 5a07de50525b: Pull complete
  27. caeca1337a66: Pull complete
  28. 5dbe0d7f8481: Pull complete
  29. b5287b60e185: Pull complete
  30. a3bdca77fbaf: Pull complete
  31. e3edcade6aa2: Pull complete
  32. 703ba034e6f0: Pull complete
  33. 36ef47972442: Pull complete
  34. 4acb239a9263: Pull complete
  35. e74d610ba693: Pull complete
  36. 97f505d02f6f: Pull complete
  37. d6dd6701aaec: Pull complete
  38. 43ef3ceb4f4b: Pull complete
  39. a59b940a007f: Pull complete
  40. 714359ef8f41: Pull complete
  41. 24b7e9a8c62d: Pull complete
  42. b400ea29ad59: Pull complete
  43. Digest: sha256:208def35d7fcbbfd76df18997ce6cd5a5221c0256221b7fdaba41c575882d4f0
  44. Status: Downloaded newer image for wordpress:latest
  45. Creating my-wordpress_db_1 ... done
  46. Creating my-wordpress_wordpress_1 ... done

至此WordPress安装完成~

4、查看容器

  1. docker ps
  2. ——————————————————————————————————
  3. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  4. 36188bfa4e7d wordpress:latest "docker-entrypoint.s…" 30 minutes ago Up 30 minutes 0.0.0.0:9999->80/tcp, :::9999->80/tcp my-wordpress_wordpress_1
  5. cc0bb8d128fe mysql:5.7 "docker-entrypoint.s…" 30 minutes ago Up 30 minutes 3306/tcp, 33060/tcp my-wordpress_db_1

我们看到它构建两个容器,一个wordpress,一个mysql。

总结

本节我们学习了Docker-Compose,并用其构建了一个WordPress项目。

但是Docker-Compose仅限于单宿主机使用,在多主机集群中我们还是得采用Swarm、K8S等。

延伸阅读
  1. Windows下IIS搭建Ftp服务器
  2. Nginx开启Gzip压缩提升页面加载速度
  3. Nginx安装及配置(linux)
  4. Docker(10):Docker-Compose简介及安装
  5. Docker(5):docker镜像分层(layer)
发表评论