集合网上各个资料,整理的一些步骤,个人记录,备忘!
安装Docker
centos7安装docker
参考https://www.runoob.com/docker/centos-docker-install.html,按照以下步骤进行安装
- 移除旧的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
- 安装一些必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
- 添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新 yum 缓存
yum makecache fast
- 安装 Docker-ce
yum -y install docker-ce
- 启动 Docker 后台服务
systemctl start docker
- 测试运行 hello-world
docker run hello-world
- 删除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