什么是容器编排?
比如如下是一台宿主机,需要部署3个容器,Nginx服务,Tomcat服务,MySQL服务。其中Nginx给tomcat提供负载均衡和反向代理功能,Tomcat中运行JavaWeb程序,这个JavaWeb程序会依赖MySQL进行数据存取。这一组应用要上线,若手动处理的话,需要先启动一个容器跑MySQL服务,然后启动Tomcat容器,最后启动Nginx容器。并且需要手动对容器的配置文件进行设置,并配置容器之间的依赖关系,非常麻烦。而容器编排工具,则可以通过解析一个脚本文件,自动化地执行上述流程。我们只需要将容器部署需要的配置文件,容器之间的关系等,写在一个脚本里,剩下的事就可以由编排工具自动帮我们完成。
容器编排就是控制多个容器部署流程的一个过程。
Docker Compose
Docker Compose是Docker官方提供的一种容器编排工具,它有如下特点
- 仅支持单机
- 通过yml文件来定义多个容器之间如何部署
安装
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose -version
docker-compose安装成功,下面开始部署wordpress进行实践
部署WordPress
mkdir wordpress cd wordpress vim docker-compose.yml version: '3.3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {} docker-compose up -d
看日志,会先拉取mysql镜像
随后,开始拉取wordpress镜像
最后,会看到启动了2个容器
此时,浏览器访问宿主机的8000端口,可以看到wordpress搭建成功
用docker network ls
命令,可以看到docker-compose自动为wordpress创建了一个网桥
查看这个网桥的详细信息,可以看到wordpress的app和db两个容器都和这个网桥进行了绑定
若要把wordpress这一组应用关掉,使用docker-compose down
即可。那如果用docker-compose启动了多组应用,直接使用docker-compose down
,怎么知道是关掉哪一组应用呢?
答案是,使用docker-compose down
时,要先切换到具有docker-compose.yml配置文件的目录下,它会根据当前目录下的docker-compose.yml文件,来确定需要关闭的是哪一组应用
另 -> 可以使用docker-compose logs
来查看应用的日志,不过,这样查看日志,会看到几个应用的日志混在一起,若要单独查看某个应用的日志,可以使用docker-compose logs 容器名称
一般,docker-compose在生产环境上的应用是比较少的,因为它只支持单机,不支持集群。所以,在生产环境下,一般会使用支持集群的容器编排工具,如kubernetes
另-> 现在还有一个容器化产品—— podman,和docker类似,甚至可以和docker命令进行无缝切换,但它没有采用cs架构,貌似在某些方面会优于docker,可以做适当了解
原文链接:https://blog.csdn.net/vcj1009784814/article/details/106313465