一.docker是什么
1.docker简介
docker是一个开源的软件部署解决方案;
docker是轻量级的应用容器框架;
docker可以打包、发布、运行任何的应用;
总结:一个开源的引擎,可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。
关于docker的概念性问题,我之前有一篇博客Docker的原理和基本概念_Hassan猿的博客-优快云博客,里面对于基本概念有更详细的探讨,本篇主要讲应用。
2.docker常用场景
web应用的自动化打包和发布;
自动化测试和持续集成、发布;
在服务型环境中部署和调整数据库或其他后台应用;
从头编译或者扩展现有的openshift或cloud foundry平台来搭建自己的PaaS环境。
docker官方网站:Get Docker | Docker Documentation 中文社区:docker中文社区,docker帮助,docker手册,docker教程,docker安装手册 - docker中文社区
二.docker的安装
1.docker的安装步骤
参阅官网文档
2.离线安装步骤
step0:将docker安装文件(例如docker-17.12.1-ce.tgz)上传到服务器上
step1:解压:$ tar xzvf docker-17.12.1-ce.tgz
step2:将二进制文件移动到可执行文件路径上的某个目录,例如/usr/bin/。$ sudo cp docker/* /usr/bin/
step3:启动docker守护进程 $ sudo dockerd &
step4:查看docker版本 docker version 或 docker -v
3.docker-compose
如果应用涉及到docker-compose脚本部署,则需要配置docker-compose。
(1)优势及使用场景:
使用一个dockerFile模板文件,可以让用户很方便地定义一个单独的应用容器。
使用场景:在工作中经常会碰到需要多个容器相互配合来完成某项任务的情况,例如要实现一个web项目,除了web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还要包括负载均衡容器等。compose允许用户通过一个单独的docker-compose.yml模板文件(yml格式)来定义一组相关联的应用容器为一个project项目。
(2)docker-compose.yml文件示例:
version: '2.0'
services:
xiangmu1:
image: huaweisoft/xiangmu1::2.3.0
container_name: xiangmu1
volumes:
- /var/docker_data/xiangmu1/web-static/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf
- /var/docker_data/xiangmu1/web-static/httpd/httpd-ssl.conf:/usr/local/apache2/conf/extra/httpd-ssl.conf
- /var/docker_data/xiangmu1/web-static/cert/server.crt:/usr/local/apache2/conf/server.crt
- /var/docker_data/xiangmu1/web-static/cert/server.key:/usr/local/apache2/conf/server.key
- /var/docker_data/xiangmu1/web-static/js/config.js:/opt/app/static/js/config.js
- /var/docker_data/xiangmu1/web-static/js/videomeet/videomeet_websocket_main.js:/opt/app/static/js/videomeet/videomeet_websocket_main.js
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
ports:
- '8079:80'
- '8443:443'
restart: always
xiangmu2:
image: huaweisoft/xiangmu2:1.2.0
container_name: xiangmu2
volumes:
- /var/docker_data/xiangmu2/web-static/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf
- /var/docker_data/xiangmu2/web-static/httpd/httpd-ssl.conf:/usr/local/apache2/conf/extra/httpd-ssl.conf
- /var/docker_data/xiangmu2/web-static/cert/server.crt:/usr/local/apache2/conf/server.crt
- /var/docker_data/xiangmu2/web-static/cert/server.key:/usr/local/apache2/conf/server.key
- /etc/localtime:/etc/localtime
- /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone
ports:
- '9082:80'
- '9083:443'
restart: always
(3)docker-compose的安装
step1:下载docker-compose,地址:Releases · docker/compose · GitHub 根据自己的平台和架构下载匹配的二进制包
step2:上传docker-compose-linux-x86_64文件,并移动到可执行文件目录下 mv docker-compose-linux-x86_64 /usr/bin/docker-compose
step3:配置docker-compose 命令权限 chmod +x /usr/bin/docker-compose
step4:查看docker版本 docker-compose -v
三.docker的应用
1.以docker部署yingyong1系统为例
step1:将应用war包上传至服务器 /opt/yingyong1
step2:解压应用包 unzip yingyong1.war
step3:执行dokcer命令
docker run
-e "TZ-Asiz/Shanghai" (设置环境变量-时区)
--name yingyong1 (为容器指定一个名称)
-p 8093:8080 (指定端口映射,格式为主机/宿主端口:容器端口)
-v /opt/yingyong1:/usr/local/tomcat/webapps/yingyong1 (绑定一个卷,映射文件目录,格式为 宿主机:容器)
-v /opt/yingyong1:/usr/local/tomcat/logs (映射日志)
-v /opt/test:/usr/local/tomcat/webapps/test -d tomcat:8 (后台运行容器,并返回容器ID)
step4:查看进程 docker ps -a 可以查看容器ID,镜像,容器名称,命令,创建时间,状态(up代表应用启动)
step5:cd /opt/logs/yingyong1/,然后vi目标文件
2.以进入容器操作为例
step1:执行docker ps 获取容器ID
step2:docker exec -it 进程号 /bin/bash(进程号可以不完整,能唯一即可,在docker ps -a可以查看)
3.应用部署更新
场景:应用已部署,部分文件需更新
step1:将要更新的文件同步到宿主机目录下(eg:/opt/yingyong1/...)
因建立了映射镜像,所以宿主机上的内容会同步到容器中,如果未建立映射,则需通过docker cp命令同步文件
step2:如需重启容器,执行docker restart yingyong1,或者分别执行docker stop yingyong1,docker start yingyong1
注:容器名或者进程号均可
4.应用重新部署
场景:应用已部署,配置需要修改
step1:查看进程信息docker ps
step2:停止容器 docker stop yingyong1
step3:删除容器 docker rm yingyong1
step4:部署容器 (见前文)
5.通过docker-compose部署
step1:导入镜像(docker load -i xxx.tar)
step2:查看镜像(docker images)
step3:切换到docker-compose.yml文件目录下,执行docker-compose -f docker-compose.yml up -d
停止服务命令:docker-compose -f docker-compose.yml down