In docker, by executing a YAML file, multiple containers defined in the file are started in sequence. This is container orchestration; the tool for implementing container orchestration is "docker-compose". The YAML file defines a series of containers and container runtime properties, and Compose will manage the container based on these configurations.
The operating environment of this tutorial: linux5.9.8 system, docker-1.13.1 version, Dell G3 computer.
The tool used to implement container orchestration
docker-compose
You can install the Docker Compose tool to implement container orchestration based on YAML files. The YAML file will define a series of containers and container runtime attributes, and Docker Compose will manage the containers based on these configurations.
Install docker-compose
[root@worker1 ~]# yum install epel-release -y [root@worker1 ~]# yum install docker-compose -y
Usage of docker-compose command
Format: docker-compose [options]
options
Write the docker-compose.yaml file to start two containers : nginx, php
1) Prepare the environment
[root@master ~]# yum install docker -y [root@master ~]# yum install epel-release -y [root@master ~]# yum install docker-compose -y [root@master ~]# systemctl restart docker [root@master ~]# systemctl restart firewalld
2) Create a yaml file
# 编写yam文件,在文件实现自动启动nginx容器 [root@worker1 ~]# vim docker-compose.yaml
version: '2' services: web: image: nginx:1.17.10 ports: - 80:80 volumes: - /opt/html:/web - /opt/conf/nginx.conf:/etc/nginx/nginx.conf
2) nginx starts the container
[root@worker1 ~]# docker-compose up -d
View based on yaml The status of the container started by the file
[root@master ~]# docker-compose ps Name Command State Ports -------------------------------------------------------------- root_web_1 nginx -g daemon off; Up 0.0.0.0:80->80/tcp
View the log during the process of starting the container Information
[root@worker1 ~]# docker-compose logs
Close the container started based on the yaml file
[root@worker1 ~]# docker-compose down
3) Edit the yaml file based on the second step and start php Service
The first step: modify the yaml file
version: '2'services: web: image: nginx ports: - 80:80 volumes: - /opt/html:/web - /opt/conf/nginx.conf:/etc/nginx/nginx.conf links: # 指定php容器的名称 - php php: # 此处需要和links中的值保持一致 image: php:5.6-fpm container_name: php # 此处需要和links中的值保持一致 volumes: - /opt/php:/php
The second step: modify the nginx configuration file
[root@master ~]# vi /opt/conf/nginx.conf location ~ \.php$ { root /php; fastcgi_pass php:9000; # 指定php容器名称,docker会自动将名称转换成ip fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Step 3: Start the service
[root@master ~]# docker-compose up -d [root@master ~]# docker-compose ps Name Command State Ports ----------------------------------------------------------------------- php docker-php-entrypoint php-fpm Up 9000/tcp root_web_1 nginx -g daemon off; Up 0.0.0.0:80->80/tcp
1 Prepare a Centos7 server and check that the network is normal
2 Check whether the server docker is running normally. If not, please install it
3 Please write the wordpress.yml template The file is in the correct format
4 Please create new services mysql and wordpress. The startup of wordpress depends on the mysql service
5 Mount the /opt/wordpress/data directory to /var/ of the mysql container Under the lib/mysql directory, do persistent storage!
6 MySQL initial information includes: root password, created database, ordinary user, ordinary user's password
7 WordPress database configuration is correct
8 WordPress does port mapping, will Port 80 of wordprss is mapped to port 8000 of the host machine
# 这个yaml文件要启动两个容器 version: '2' services: # 第一个容器:wordpress容器 wordpress: # 指定镜像名称 image: wordpress # 将容器的80端口映射到宿主机的8000 ports: - 8000:80 # 设置将mysql容器的名称解析程序mysql容器的IP links: - mysql # 设置容器之间依赖关系,设置成必须先启动mysql容器才启动wordpress容器 depends_on: - mysql # 第二个容器:MySQL容器 mysql: # 指定镜像名名称是mysql image: mysql:5.6 # 设置容器的名称的是mysql container_name: mysql # 设置逻辑卷挂载 volumes: - /opt/wordpress/data:/var/lib/mysql # 设置mysql容器的环境变量 environment: # 设置mysql容器中mysql的root密码为123 MYSQL_ROOT_PASSWORD: 123 # 为wordpress创建一个数据库,库名是wordpress MYSQL_DATABASE: wp # 创建一个普通用户wp MYSQL_USER: wp # 为上面的普通用户设置密码是wp MYSQL_PASSWORD: wp
9 docker-compose successfully started each container and successfully accessed the wordpress page
[root@master ~]# docker-compose up -d [root@master ~]# docker ps
Recommended learning: "docker video tutorial"
The above is the detailed content of What is docker container orchestration. For more information, please follow other related articles on the PHP Chinese website!