【原创】Docker入门探索

刚开始对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  "[email protected]"

#创建功能目录
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目录下,无需进入容器内就可以进行应用的微调整

你可能感兴趣的:(【原创】Docker入门探索)