Docker初学者实战

本文是Docker初学者指南,详细介绍了在CentOS7上安装Docker的过程,以及如何使用Dockerfile构建包含JDK的应用镜像。内容包括Docker的安装步骤、Dockerfile的使用以及如何在容器内安装应用程序。
摘要由CSDN通过智能技术生成

集合网上各个资料,整理的一些步骤,个人记录,备忘!

安装Docker

centos7安装docker

参考https://www.runoob.com/docker/centos-docker-install.html,按照以下步骤进行安装

  1. 移除旧的版本
yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-selinux \
    docker-engine-selinux \
    docker-engine
  1. 安装一些必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 更新 yum 缓存
yum makecache fast
  1. 安装 Docker-ce
yum -y install docker-ce
  1. 启动 Docker 后台服务
systemctl start docker
  1. 测试运行 hello-world
docker run hello-world
  1. 删除docker ce
yum remove docker-ce
rm -rf /var/lib/docker

使用docker images命令可以查看已经安装的镜像
在这里插入图片描述

用Dockerfile构建镜像

安装jdk

首先使用centos基础镜像,安装jdk

FROM centos

RUN mkdir /usr/local/java

ADD jdk-8u181-linux-x64.tar.gz /usr/local/java/

RUN ln -s /usr/local/java/jdk1.8.0_181 /usr/local/java/jdk

ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
ENV JAVA ${JAVA_HOME}/bin/java

执行命令:docker build -t centos-jdk:1.8.0-181 .构建镜像
在这里插入图片描述
使用命令docker images查看已经构建好的镜像,由于我们使用了centos,会先构建一个centos镜像,再构建jdk镜像
在这里插入图片描述
执行命令:docker run -it centos-jdk:1.8.0-181 /bin/bash,启动一个容器,并进入容器中,检查jdk是否已经安装成功
在这里插入图片描述
执行命令:docker ps -a 命令查看目前已启动和启动过的所有容器列表,可以通过STATUS查看状态
在这里插入图片描述
docker rm 容器id ---------------- 删除容器
docker stop 容器id -------------- 停止容器
docker rmi 镜像id ----------------删除镜像

安装应用程序

FROM centos-jdk:1.8.0-181

ADD canal.deployer.tar.gz /data/application/canal-deploy

RUN \
    chmod +x /data/application/canal-deploy/bin/*.sh
    
EXPOSE 11111 11112

容器启动后是挂载到一个进程中,如果这个进程停止了,容器也就停止了。容器构建后,用命令docker run -itd canal:1.1.3 /bin/bash -c "/data/application/canal-deploy/bin/startup.sh"启动
在这里插入图片描述
需要通过-c参数指定启动脚本,容器就挂在到了脚本进程上,也可以通过Dockerfile中的CMD或ENTRYPOINT指定执行命令
在这里插入图片描述
在容器的使用过程中,会出现当进程挂掉后,容器就结束运行了,我们需要一个守护进程,如果应用进程挂掉可以重启,借助s6实现。
构建Dockerfile时添加以下命令,覆盖安装到/usr目录,添加run,finish脚本,用于启动和停止。
注意目录结构:s6监听目录:/data/application/service,run和finish脚本所在目录:/data/application/service/canal,可监听多个进程的运行情况

ADD s6-overlay-amd64.tar.gz /usr/

RUN mkdir -p /data/application/service/canal

COPY run /data/application/service/canal
COPY finish /data/application/service/canal

RUN chmod +x /data/application/service/canal/run && \
    chmod +x /data/application/service/canal/finish
    
ENTRYPOINT ["/usr/bin/s6-svscan", "/data/application/service"]

run脚本内容就是命令的执行

#!/bin/bash
sh /data/application/canal-deploy/bin/startup.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值