docker compose:编排容器
简介:
官网地址:
https://docs.docker.com/compose/
Compose 是用于定义和运行多容器 Docker 应用程序的工具
compose使用步骤
- 写一个dockerfile定义一个运行环境
- 编写docker-compose.yml 定义运行环境的服务,这样它们可以在隔离环境中一起运行。
- 最后 docker-compose up 命令来启动并运行整个环境
compose部署
- 下载compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 赋予可执行权限
chmod +x /usr/local/bin/docker-compose
- 软链接到 /usr/bin/
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
4.为了能够补全命令,下载一个docker-compose脚本
sudo curl -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
-
下载完成后,重新加载您的终端。您可以关闭然后打开一个新终端,或重新加载您的设置source ~/.bashrc命令在您当前的终端。
-
composoe 安装完成
docker-compose语法
- 语法:
docker-compose [-f=…] [options] [COMMAND] [ARGS…]
- 常用的参数:
-f,--file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定;
-p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名;
--x-networking 使用 Docker 的可拔插网络后端特性;
--x-network-driver DRIVER 指定网络后端的驱动,默认为 bridge;
--verbose 输出更多调试信息;
-v, --version 打印版本并退出;
- 常用命令:
docker-compose 命令 --help 获得一个命令的帮助
docker-compose up -d nginx 构建启动nignx容器
docker-compose exec nginx bash 登录到nginx容器中
docker-compose down 此命令将会停止 up 命令所启动的容器,并移除网络
docker-compose ps 列出项目中目前的所有容器
docker-compose restart nginx 重新启动nginx容器
docker-compose build nginx 构建镜像
docker-compose build --no-cache nginx 不带缓存的构建
docker-compose top 查看各个服务容器内运行的进程
docker-compose logs -f nginx 查看nginx的实时日志
docker-compose images 列出 Compose 文件包含的镜像
docker-compose config 验证文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose events --json nginx 以json的形式输出nginx的docker日志
docker-compose pause nginx 暂停nignx容器
docker-compose unpause nginx 恢复ningx容器
docker-compose rm nginx 删除容器(删除前必须关闭容器,执行stop)
docker-compose stop nginx 停止nignx容器
docker-compose start nginx 启动nignx容器
docker-compose restart nginx 重启项目中的nignx容器
docker-compose run --no-deps --rm php-fpm php -v 在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
docker-compose部署tomcat负载均衡
环境准备
主机名 | IP地址 | 所需软件包 |
---|---|---|
docker01 | 192.168.42.1 | apache-tomcat-8.5.16.tar.gz,apache-tomcat-8.5.16.tar.gz, |
目录介绍:
/tomcat/nginx : 存放nginx的配置文件
/tomcat/tomcat : 存放dockerfile文件
/tomcat/webserver: 存放测试文件
- 创建目录存放dockerfile目录
mkdir -p /root/tomcat/tomcat && cd /root/tomcat/tomcat
-
去官网下载jdk1.8
Linux x64 Compressed Archive -
去官网下载tomcat8
tomcat8 -
创建存放dockerfile文件目录
mkdir -p /root/tomcat/tomcat && cd /root/tomcat/tomcat
- 将tomat包和jdk包放在/tomcat/tomcat
ls
apache-tomcat-8.5.16.tar.gz jdk-8u291-linux-x64.tar.gz
- 编写dockerfile
cat > /root/tomcat/tomcat/Dockerfile < EOF
FROM centos
ADD apache-tomcat-8.5.16.tar.gz /usr/local/
ADD jdk-8u291-linux-x64.tar.gz /usr/local/
EXPOSE 8080
CMD ["/usr/local/apache-tomcat-8.5.16/bin/catalina.sh","run"]
EOF
- 创建nginx配置文件目录
mkdir /root/tomcat/nginx && cd /root/tomcat/nginx
- 编辑nginx配置文件
cat > /root/tomcat/nginx/default.conf << EOF
upstream webserver {
server tomcat1:8080;
server tomcat2:8080;
}
server {
listen 80;
listen [::]:80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://webserver;
}
}
EOF
- 创建测试文件目录
mkdir /root/tomcat/webserver/{tomcat1,tomcat2} && cd /root/tomcat/webserver
- 测试文件
echo "1234" > webserver/tomcat1/index.jsp
echo "56789" > webserver/tomcat2/index.jsp
- 编写docker-compose.yml配置文件
```cpp
cat > /root/tomcat/docker-compose.yml << EOF
version: '3'
services:
nginx:
image: nginx
restart: always
ports:
- 80:80
links:
- tomcat1:tomcat1
- tomcat2:tomcat2
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- tomcat1
- tomcat2
tomcat1:
hostname: tomcat1
build: ./tomcat
volumes:
- /root/tomcat/webserver/tomcat1:/usr/local/apache-tomcat-8.5.16/webapps/ROOT
tomcat2:
hostname: tomcat2
build: ./tomcat
volumes:
- /root/tomcat/webserver/tomcat2:/usr/local/apache-tomcat-8.5.16/webapps/ROOT
EOF
13. docker-compose开始定义
```bash
docker-compose -f /root/tomcat/docker-compose.yml up -d
- 访问,查看是否负载成功
while true; curl 192.168.42.1; sleep 0.5s;done