这两天接触docker,我真的很惨,完全靠自己摸索。终于搞懂docker编排的意思。
先解释一下为何我们要用docker编排:
你如果想用docker去管理项目或者很多服务,你不可能一个一个去启动这些docker容器,比如你要用nginx和Jenkins你肯定每次修改要启动两个服务,而且你还需要进入docker容器内部修改一些配置文件很麻烦。
这里就提现出docker编排能力了:
1.docker编排可以同时启动多个服务无压力。
2.docker编排可以把容器内部配置文件映射到你想要的宿主机任何地方,当然你要有权限访问才行。
就拿上面nginx和Jenkins做例子吧
第一步安装nginx和Jenkins镜像很简单安装会很快如果安装慢的话可以改成阿里云加速镜像
$docker pull nginx
$docker pull Jenkins
第二步编写docker-compose这个比较简单
jenkins:
image: jenkins
volumes:
- /root/docker/jenkins/data:/var/jenkins_home
- /root/docker/jenkins/jenkins.war:/usr/share/jenkins/jenkins.war
expose:
- "8080"
- "50000"
restart: always
environment:
JAVA_OPTS: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties'
nginx:
image: nginx
volumes:
- /root/docker/nginx/logs:/var/log/nginx
- /root/docker/nginx/conf:/etc/nginx/conf.d
- /root/docker/nginx/html:/usr/share/nginx/html
links:
- jenkins:jenkins
ports:
- "8030:8030"
restart: always
这里解释一下吧:
image:需要指定你配置编排镜像名字
volumes:你需要配置的容器到宿主机的映射地址,宿主机地址:容器地址,意思把容器地址映射到宿主机,我们就可以直接在宿主机进行修改,不需要在进入容器内部修改比较麻烦:
但是修改有点麻烦的是:需要去容器内部重启,比如我改了nginx就需要去容器内部输入命令
links:用于链接另一容器服务,因为要启动两个服务所以要用
restart: always:通过--restart选项,可以设置容器的重启策略,其实就是自动重启容器
expose:指定是容器内部的端口
port:是暴露给宿主机的端口号
$nginx -s reload
如果你改了的比较多,直接重启docker容器也行
上面配置好了就可以进行第三步启动命令-d命令会让docker后台运行不显示启动日志情况:
docker-compose up -d
到这里就一切结束了,看看我成功案例吧:
image.png
docker要学习的东西太多了,加油。
如果有兴趣交流的小伙伴请联系qq:
179061434
下一节我会把redis和mysql主从一起说一下
网友评论