Docker-Compose安装和使用
Docker-Compose是什么?
- Docker-Compose是单机容器编排工具。单机也就是说只能在一台机器上使用。如果是集群,则需要使用k8s这样的技术。
- 通过yml文件定义多容器如何部署。yml文件定义了容器的先后顺序,彼此的依赖关系,存储方式等内容。
- Windows/Mac系统,默认提供Docker-Compose,linux需要单独安装才可使用。
Docker-Compose能做什么?
如果要部署下面的三个组件,NGINX为Tomcat提供负载均衡,Tomcat访问MySQL获取数据。
如果这一组应用要部署上线,需要先安装MySQL,然后安装Tomcat,再安装NGINX,并让它们之间可以访问,这一系列的操作,在不使用Docker-Compose的情况下,需要运维人员执行一系列的安装命令,然后再去修改配置文件。
显然这样的操作很繁琐,使用Docker-Compose可以解决这个问题。
Docker-Compose通过执行一个命令脚本,就可以实现先安装MySQL,再安装Tomcat,最后安装NGINX。并且彼此之间形成依赖关系。
简单来说,Docker-Compose就是docker镜像快速部署的一个工具。
安装Docker-Compose
教程网址:
Plugin | Docker Docs
根据教程一步步执行对应的安装命令:
执行过程:
看到版本信息时,说明已经安装完成。
使用Docker-Compose部署博客网站
WordPress是什么?
WordPress是一个开源的博客网站,下面通过部署WordPress网站,来演示Docker-Compose的使用。
WordPress使用MySQL数据库,如果自行部署一个WordPress,则需要部署数据库服务和前端应用。
部署WordPress
Docker-Compose部署WordPress官方教程:
https://github.com/docker/awesome-compose/tree/master/official-documentation-samples/wordpress/
根据教程,一步步操作:
1.创建名称为docker-compose.yml的文件
2.在创建的文件中放入命令脚本
services:
db:
# We use a mariadb image which supports both amd64 & arm64 architecture
image: mariadb:10.6.4-focal
# If you really want to use MySQL, uncomment the following line
#image: mysql:8.0.27
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=somewordpress
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
expose:
- 3306
- 33060
wordpress:
image: wordpress:latest
volumes:
- wp_data:/var/www/html
ports:
- 8005:80
restart: always
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=wordpress
volumes:
db_data:
wp_data:
3.创建工作文件夹
在usr/local目录中创建名称为my_wordpress的文件夹,并把docker-compose.yml文件放入进去
4.执行启动命令
进入到/usr/local/my_wordpress路径下,执行启动命令
docker compose up -d
因为网络的原因,我没有执行成功。
5.浏览器访问wordpress网站
如果上一步执行成功,通过ip:端口,可以访问wordpress。
192.168.1.10:8005
192.168.1.10 这个ip是linux的ip
8005是上面设置的wordpress的访问端口
6.移除操作
如果想移除wordpress,可以使用移除命令
docker compose down --volumes
7.docker-compose.yml解读
services: 定义如何安装容器,容器的先后顺序,都在services中定义。
db: 第一个需要安装的容器,db,名称可以自定义。
image: mariadb:10.6.4-focal 获取mariadb:10.6.4-focal镜像文件并生成容器
command: '--default-authentication-plugin=mysql_native_password'
volumes: 挂载数据
- db_data:/var/lib/mysql 将物理机中一个空的路径 挂载到容器内部地址中:/var/lib/mysql
restart: always 自动重启,当容器停止运行时,自动重启容器
environment: 参数设置
- MYSQL_ROOT_PASSWORD=somewordpress 设置MySQL root用户的密码
- MYSQL_DATABASE=wordpress 数据库名称
- MYSQL_USER=wordpress 数据库新的用户名
- MYSQL_PASSWORD=wordpress 数据库新的密码
expose: 暴露端口
- 3306
- 33060
wordpress: 第二个需要安装的容器,wordpress,名称可以自定义。
image: wordpress:latest 获取wordpress:latest镜像文件并生成容器
volumes: 挂载数据
- wp_data:/var/www/html 将物理机中一个空的路径 挂载到容器内部地址中:/var/www/html
ports: 暴露端口
- 8005:80 容器内容80端口,对应到外部的8005端口,外部用8005端口访问
restart: always 自动重启,当容器停止运行时,自动重启容器
environment: 参数设置
- WORDPRESS_DB_HOST=db 数据库主机
- WORDPRESS_DB_USER=wordpress 镜像初始化参数设置
- WORDPRESS_DB_PASSWORD=wordpress 镜像初始化参数设置
- WORDPRESS_DB_NAME=wordpress 镜像初始化参数设置
volumes: 挂载数据
db_data: 设置物理机的路径
wp_data: 设置物理机的路径