• Docker实战之二


    一、前言

    前一篇 Docker实战之一 我们介绍了Dokcer 镜像和容器基本概念,这一节我们来具体制作一个镜像文件并进行快速部署,这个镜像文件是我们的测试环境,主要包含JDK1.8、Nginx、Git、Node、Gradle,基础镜像为CentOS,另外安装一些常用的工具,两个Java项目、两个前端项目,镜像生成后,如果要部署一台新的机器,直接启动该镜像进入容器执行四个发布脚本即可,Redis和MySQL、S3等存储相关的是直接连远程机器。采用该方案部署一台新机器最多10分钟就可以部署好,没有用Docker之前新买一台机器安装各种软件部署应用要折腾小半天。

    二、制作镜像文件基础环境配置

    机器IP:120.26.69.172  OS:Ubuntu 16.04 64位

    1、更新软件源软件列表      apt-get update

    2、安装Docker                    apt-get install docker.io

    3、拉取CentOS Base镜像  docker pull centos

    4、查看CentOS Base镜像   docker images

    5、运行CentOS镜像并进入容器

    docker run -it 5d0da3dc9764 bash

    6、在宿主机查看容器  docker ps

    可以查看容器ID和运行时间等,容器ID和镜像ID是两回事。

    三、在容器内安装常用工具

    1、yum install wget 用于下载文件

    2、yum install lrzsz 用于上传文件

    3、yum install vim  用于编辑配置文件

    4、yum install net-tools 用于查看端口

    5、yum install zip 用于解压文件

    5、将安装了常用的工具的容器保存为镜像

    docker commit -m 'tools' 835d3fcbc3d2 cw/tools:v1.0

    835d3fcbc3d2:是容器的ID

    6、查看生成新的镜像文件

    7、退出容器,并用新的镜像启动容器

    exit

    docker run -it 0de282b05a01 bash

    注:在新的容器中 wget、vim、netstat、rz这些刚才安装的工具都可以使用,如果安装后没有做commit生成新的镜像,你退出容器再重新用基础镜像进入容器,这些工具都没有了。

    四、在容器内安装JDK1.8并配置环境变量

    因为Oracle官网JDK需要登录用户才能下载,所以我先下载到本地,然后在容器内执行rz将zxvf jdk-8u151-linux-x64.tar.gz上传到容器内。

    1、解压  tar -zxvf jdk-8u151-linux-x64.tar.gz

    2、配置JDK环境变量  vim  ~/.bashrc 

    注:这里修改/etc/profile或.bash_profile下次进入容器时环境变量无效,原因未确认。

    source ~/.bashrc 、java -version

    3、将容器的变更保存为镜像

    docker commit -m 'jdk' 71aa4be3f85a cw/jdk:v1.1

    4、用新的镜像重新运行容器

    docker run -it 3678c6188d77 bash

    五、在容器内安装配置Nginx

    1、安装Nginx  yum install nginx

    2、创建Web工程目录 mkdir posweb、mkdir posadm

    3、配置Nginx  vim /etc/nginx/nginx.conf

    4、设置Nginx自动启动  systemctl enable nginx.service

    5、启动Nginx  systemctl start nginx

    报错信息如下:

    6、使用Systemctl启动报错,在启动容器时需要加参数

    先保存容器内容生成新的镜像

    docker commit -m 'nginx' 071c76fec205 cw/nginx:v1.2

    重新启动容器

    docker run -itd --privileged=true -p 8083:8083 -p 8084:8084  548d1b35a402 /sbin/init

    两个Web应用端口8083、8084 宿主机与容器内部端口号映射,提供给外部访问。

    进入容器  docker exec -it 45fe761e3724 /bin/bash

    systemctl start nginx 就可以正常启动Nginx

    六、在容器内安装打包编译环境

    1、安装Git  yum install git

    2、安装Node   yum install nodejs

    3、安装Gradle  wget https://downloads.gradle.org/distributions/gradle-5.1-all.zip

    unzip gradle-5.1-all.zip

    vim ~/.bashrc

    4、保存为新的镜像文件

    docker commit -m 'compile' 45fe761e3724 cw/compile:v1.3

    七、在容器内安装发布脚本

    1、应用发布脚本

    cd /publish_script

    deploy_dev_pos_web.sh

    deploy_dev_pos.sh (略)

    deploy_dev_store_task.sh (略)

    deploy_dev_pos_adm.sh (略)

    2、保存为新的镜像文件

    docker commit -m 'app' 45fe761e3724 cw/app:v1.4

    八、将最新的镜像文件推到Docker仓库

    1、登录docker官方仓库  docker login

    2、给镜像打个新标签

    docker tag 1136bb28e827 qingcai18036/cw:v2.0

    3、推送到远程私有仓库

    docker push qingcai18036/cw:v2.0

    注:生成的镜像有2.7G,推到Docker官方仓库用了十几分钟,下载还算比较快,可以使用阿里云的镜像仓库。

    九、使用镜像文件部署应用

    1、安装Docker apt-get install docker.io

    2、登录docker官方仓库  docker login

    3、拉取镜像  docker pull qingcai18036/cw:v2.0

    4、运行镜像

    docker run -itd --privileged=true -p 8083:8083 -p 8084:8084  1136bb28e827 /sbin/init

    5、进入容器

    docker exec -it 117d69d8d6b5 /bin/bash

    6、执行发布脚本

    ./deploy_dev_pos.sh

    ./deploy_dev_pos_web.sh

    ./deploy_dev_store_task.sh

    ./deploy_dev_pos_adm.sh

    十、Docker基本命令

    注:下次再讲一下使用DockerFile制作镜像文件。

  • 相关阅读:
    系统集成测试(SIT)/系统测试(ST)/用户验收测试(UAT)
    Java面试题——继承,多态
    python 实现euler modified变形欧拉法算法
    GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图
    1042 Shuffling Machine
    WPF之浅谈数据模板(DataTemplate)
    红黑树(三) - Linux内核实现
    python爬虫小案例——汽车之家
    虚拟机Ubuntu显示时间不正确问题
    Blender 雕刻
  • 原文地址:https://blog.csdn.net/2301_76787421/article/details/134084342