本文整理自网络,侵删。
目录
- 一、wordpress部署
- (一)准备环境
- (二)运行镜像
- 二、Docker Compose
- (一)Docker Compose简介
- (二)Docker Compose环境准备
- (三)Docker Compose实战
- (四)水平扩展和负载均衡
一、wordpress部署
这里先以wordpress的部署为例引出Docker Compose,wordpress的部署需要wordpress和mysql的镜像:
(一)准备环境
1、拉取wordpress镜像
[root@docker-node1 /]# docker pull wordpress
2、拉取mysql镜像
[root@docker-node1 /]# docker pull mysql
3、镜像列表
[root@docker-node1 /]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE wordpress latest 0947f14b932b 25 hours ago 540MB mysql latest 791b6e40940c 43 hours ago 465MB
(二)运行镜像
1、运行mysql镜像
root@docker-node1 /]# docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql b6e7a57a5fcec79f436d3f65240adf833340b4a9640e3b4f9282870078fb8e57
上述命令中 -v指定存储卷,MYSQL_ROOT_PASSWORD设置数据库密码,MYSQL_DATABASE指定创建数据库的名称,详情参考:https://hub.docker.com/_/mysql
查看启动的容器:
[root@docker-node1 /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b6e7a57a5fce mysql "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 3306/tcp, 33060/tcp mysql
2、启动wordpress镜像
[root@docker-node1 /]# docker run --name wordpress -e WORDPRESS_DB_HOST=mysql:3306 --link mysql -p 8080:80 -d wordpress 6cf0c0fc2ef332728a3ea2bf2dbee65299441b26751d5c64f0a66b329f2679f6
上述命令中WORDPRESS_DB_HOST是需要连接的数据库,指定的就是刚刚创建的mysql容器,这里没有输入WORDPRESS_DB_USER、WORDPRESS_DB_PASSWORD的密码等环境信息,因为默认的就是mysql容器的用户名、密码,详情查看:https://hub.docker.com/_/wordpress。
然后查看容器信息:
[root@docker-node1 /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6cf0c0fc2ef3 wordpress "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp wordpress b6e7a57a5fce mysql "docker-entrypoint.s…" 20 minutes ago Up 20 minutes 3306/tcp, 33060/tcp mysql
目前两个容器都已经起来了,最后可以访问主机的8080端口即可。
二、Docker Compose
从上面的部署上可以看出存在以下问题:
- 需要单独拉取多个容器,一个个的部署
- 需要同时管理多个容器(包括启动、停止等动作)
那么有没有一种类似批处理的方式,不需要这么繁琐的过程呢?这就需要Docker Compose了。
(一)Docker Compose简介
1、什么是Docker Compose?
Docker Compose是一个工具
这个工具可以通过yml文件来定义多容器的应用
通过一条命令就可以根据yml文件的定义去创建、管理多个容器
2、docker-compose.yml文件
Docker Compose中很重要的就是docker-compose.yml文件,这个文件包含了三个很重要的概念,分别是services、networks以及volumes。
services
一个service就是一个container,这个container可以从dockerhub的image来,也可以从本地的Dockerfile创建的image来;service的启动类似于docker run,当我们在使用docker run 是可以给其指定参数network和volume,同理也可以给service指定network和volume。
例如:
services: db: image:postgres:9.4 volumes: -"db-data:/var/lib/postgresql/data" networks: -back-tier
上面这个yml文件中定义了一个service,其实就相当于下面这条命令:
docker run -d --network back-tier -v db-data:/var/lib/postgresql/data postgres:9.4
networks
networks: back-tier: driver:bridge
上面这个yml文件中定义了一个network,其实就相当于下面这条命令:
docker network create -d bridge back-tier
volumes
volumes: db-data:
上面这个yml文件中定义了一个volume,其实就相当于下面这条命令:
docker volume create db-data
(二)Docker Compose环境准备
Docker Cmpose是一个工具,所以是需要安装的,安装详情参考:https://docs.docker.com/compose/install/。
1、下载可执行文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2、设置权限
sudo chmod +x /usr/local/bin/docker-compose
3、查看版本
[root@docker-node1 ~]# docker-compose --version docker-compose version 1.24.1, build 4667896
4、docker-compose中的常用命令
[root@docker-node1 compose-wordpress]# docker-compose --help Define and run multi-container applications with Docker. Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker-compose -h|--help Options: -f, --file FILE Specify an alternate compose file (default: docker-compose.yml) -p, --project-name NAME Specify an alternate project name (default: directory name) --verbose Show more output --log-level LEVEL Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL) --no-ansi Do not print ANSI control characters -v, --version Print version and exit -H, --host HOST Daemon socket to connect to --tls Use TLS; implied by --tlsverify --tlscacert CA_PATH Trust certs signed only by this CA --tlscert CLIENT_CERT_PATH Path to TLS certificate file --tlskey TLS_KEY_PATH Path to TLS key file --tlsverify Use TLS and verify the remote --skip-hostname-check Don't check the daemon's hostname against the name specified in the client certificate --project-directory PATH Specify an alternate working directory (default: the path of the Compose file) --compatibility If set, Compose will attempt to convert keys in v3 files to their non-Swarm equivalent Commands: build Build or rebuild services bundle Generate a Docker bundle from the Compose file config Validate and view the Compose file create Create services down Stop and remove containers, networks, images, and volumes events Receive real time events from containers exec Execute a command in a running container help Get help on a command images List images kill Kill containers logs View output from containers pause Pause services port Print the public port for a port binding ps List containers pull Pull service images push Push service images restart Restart services rm Remove stopped containers run Run a one-off command scale Set number of containers for a service start Start services stop Stop services top Display the running processes unpause Unpause services up Create and start containers version Show the Docker-Compose version information
docker-compose up
用于启动service创建容器,执行yml文件
docker-compose -d
后台执行容器服务
docker-compose ps
相关阅读 >>
wordpress实现自带的侧边栏和自定义的侧边栏同时存在的方法
优化wordpress分类链接及wp-no-category-base的卸载方法
更多相关阅读请进入《wordpress》频道 >>
转载请注明出处:木庄网络博客 » Docker Compose多容器部署的实现