刚开始对Docker的印象是一个低配版虚拟机,沙箱机制的容器。工作中项目接触的少,所以对于这项用不着的技术一直停留在最初的印象。
现在互联网行业飞速发展,公司同时也在飞速发展。随着业务量不断扩大,公司也不得不升级为微服务式架构。微服务架构的粒度小,耦合低。同时对于服务器的要求也越来越高,为何方便快捷的搭建环境和管理,使用Docker成为了必要。接下来进入主题:
1,Docker的Windows安装
首先进入Docker官网:https://www.docker.com
get started 获取下载链接
下载完成直接运行安装
然后失败?
很正常,首先windows10必须是企业版,因为win10版本的docker依赖hyper-v。如果不是请升级系统为企业版
然后安装完成之后运行失败?
根据提示修复错误,我遇到的问题解决方式是:1,通过bios开启虚拟化,2,开启hyper-v
2,Docker入门级使用
1,什么是Docker镜像
Doker的精髓,也是docker的便利之处。镜像可以理解为一个环境包。可移植,减去重复部署环境的烦恼。
2,如何保存自己的云Docker镜像
我用的是阿里云镜像,进入阿里云————>选择产品与服务————>容器镜像服务
3,制作镜像(使用Dockerfile方式)
Dockerfile内容:
#使用的基础镜像
FROM centos
#作者信息
MAINTAINER "yuchuan.zeng@hand-china.com"
#创建功能目录
RUN mkdir -p /home/hms
#把当前目录下的jdk文件夹添加到镜像
ADD jdk-8u91-linux-x64.tar.gz /home/hms
#把当前目录下的tomcat文件夹添加到镜像
ADD apache-tomcat-8.5.12.tar.gz /home/hms
#添加环境变量
ENV JAVA_HOME /home/hms/jdk1.8.0_91
ENV CATALINA_HOME /home/hms/apache-tomcat-8.5.12
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
WORKDIR /home/hms/apache-tomcat-8.5.12
#暴露8080端口
EXPOSE 8080
RUN chmod +x /home/hms/apache-tomcat-8.5.12/bin/catalina.sh
RUN chmod 777 -R /home/hms
#启动时运行tomcat
CMD ["/home/hms/apache-tomcat-8.5.12/bin/catalina.sh", "run"]
然后需要把Dockerfile打成镜像:
docker build -f Dockerfile -t hms-tomcat:TAG .
# -f Dockerfile路径,默认是当前目录
# -t 指定新镜像的名字以及TAG
# . 指定路径为当前路径
成果效果图
启动镜像:
docker run --name test-tomcat -itd -p 9000:8080 -v 主机目录:容器目录:rw 镜像ID或镜像名:TAG
# -i 以交互模式运行容器
# -t 分配一个伪终端,即命令行,通常组合来使用
# -p 指定映射端口,将主机端口映射到容器内的端口
# -d 后台运行容器
# -v 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读
查看logs指令:
docker logs -f --tail=100 test-tomcat
进入容器指令:
win: winpty docker exec -it b78da88433cd sh
linux: docker exec -it b78da88433cd bash
如果对自己的镜像测试满意,则上传阿里云
打成tag:
docker tag [镜像ID] registry.cn-hangzhou.aliyuncs.com/circle-zeng/hms:[镜像版本号]
打tag作用是建立传输管道,告诉docker往哪儿传输
push:
docker push registry.cn-hangzhou.aliyuncs.com/circle-zeng/hms:[镜像版本号]
以后类似的环境就可以根据这个基础环境为基础引用了,如下Dockerfile:
#使用自己的基础镜像
FROM registry.cn-hangzhou.aliyuncs.com/circle-zeng/hms:2.0.0
后续使用镜像时,可能需要为镜像加上hosts配置
docker run --add-host 域名:ip --add-host 域名:ip --name hmap-tomcat -itd -p 9090:8080 hmap-tomcat:3.0 -v 主机目录:容器目录:rw
使用docker-compose,在当前目录下建立docker-compose.yaml
version: "2"
services:
mysql:
container_name: mysql2 # 容器名
image: # 容器所使用的镜像,镜像形式为[username 或 url]/repository:tag
ports:
- "3306:3306" # [本机端口:容器内端口] 将本机端口与docker容器内部应用的端口映射,以提供外部对容器内应用的访问能力
environment:
MYSQL_ROOT_PASSWORD: root # 设置mysql密码
volumes:
- ./mysql/mysql_data:/var/lib/mysql # 将mysql中的数据文件映射到本机文件夹,":"前的为本机地址,后的为容器内地址
- ./mysql/mysql_db.cnf:/etc/mysql/conf.d/mysql_db.cnf # 将mysql的配置文件映射到本机文件
建立之后执行:docker-compose -f docker-compose.yaml up -d 启动
补充:
docker的挂载功能非常实用,对应docker run中-v指令,指定主机目录挂载到容器目录。这样的好处在于tomcat部署项目时,直接把war包目录挂载到容器tomcat的webapps目录下,无需进入容器内就可以进行应用的微调整