docker小白入门(二)—— 通过Dockerfile创建docker镜像并启动容器

前言

  1. 这是docker小白入门的第二部分,这部分的主要目的是普及Dockerfile的应用;
  2. Dockerfile作为docker的自动化配置文件,可以根据文件内容自动生成docker镜像,镜像生成后只要启动容器(run)即可使用平台,比第一阶段稍稍高级一点,但其实还是低级阶段;
  3. 本文的目的是让初学者能马上写一个能用的Dockerfile,不至于“从入门到放弃”;

一、安装docker

最基本的,系统里得有docker,所以,首先要先 安装docker (这部分在第一阶段有比较详细的介绍);执行命令

yum -y install docker 

可以用docker version检查docker是否安装成功,如果出现 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 的报错提示,可执行 systemctl daemon-reloadsystemctl restart docker.service
在这里插入图片描述

二、为Dockerfile文件创建工作目录,编写Dockerfile

docker安装完成后,创建工作目录,我直接在根目录下创建了docker文件夹;然后编写Dockerfile文件,并将文件放到文件夹docker下;Dockerfile文件没有后缀;所有命令如下图
在这里插入图片描述
下面是Dockerfile文件的内部代码,直接复制粘贴即可,也可以下载一份现成的;

FROM tomcat
WORKDIR /usr/local/tomcat/webapps/ROOT/
RUN rm -fr *
RUN echo 'Hello Docker!' > index.html

二*、注意事项

上面就是一个完整的、极其简单的Dockerfile,需要解释以下几点:

  1. FROM命令是指此镜像是基于什么基础镜像创建的,tomcat基础镜像包含jdk等一系列必备的东西;
  2. WROKDIR命令指定工作路径,或者说切换当前路径;
  3. RUN命令有两大用法,一个是执行shell命令,上面两条RUN都是执行的shell脚本,所以Dockerfile的复杂主要体现在Shell脚本的编写,用户可以针对Shell脚本进入深入学习,以此来增强Dockerfile的编写能力;RUN的另一个用法是执行exec命令,用法格式为 RUN ["","参数1","参数2"],入门阶段不涉及;
  4. 常用命令还有COPY复制命令,COPY命令也有两种使用方式,和RUN类似,一个类似命令,一个类似函数调用。类似命令的COPY指令的格式是 COPY <上下文路径> ... <目标路径>,上下文路径就不解释了,目标路径就是镜像中的文件夹的路径,这俩都是相对路径。
  5. 常用命令还有一个ADD,和COPY类似,但多了一个功能,即源路径(上下文路径)可以是一个URL,同时,如果源文件是tar格式的话,ADD命令会自动解压文件到目标路径;但是要注意,ADD指令会令镜像构建缓存失效,从而可能会令镜像构建变的比较缓慢;
  6. 后面的demo中有个EXPOSE指令,含义为暴露端口
  7. CMD命令也和RUN类似,好比执行cmd命令,这个需要一个例子才好介绍,本例还未涉及到,所以,用户可先自行百度查看;

补充: 上下文路径是指,liunx中打包并解压后的文件夹路径;

三、执行Dockerfile

Dockerfile文件写完之后要利用这个Dockerfile创建镜像,下面就是创建镜像的执行命令。

docker build -t mydocker .

在这里插入图片描述
注意:

  1. 这里的“mydocker”是镜像的名字,创建的时候可以随意起名,但是只支持小写字母;
  2. mydocker 后面一定记得跟那个点,不然会报错,如下图;
    在这里插入图片描述
  3. 如果build创建的过程中出现错误,创建失败,可能会出现[虚悬镜像],这个时候我们用docker image prune指令来清除虚悬镜像;如果巧了,虚悬镜像没有清除掉,有可能是因为有容器的生成导致虚悬镜像删除失败,这个时候,使用docker ps -a或者docker ps查看容器,找到占用的容器后,使用docker rm xxxxxx来移除容器(也可以在rm后面加 -f 来强制删除容器),容器移除完毕后再重新删除虚悬镜像即可。(这部分如果觉得我说的模糊,可以后文留言,我再补充)

此时,镜像创建完毕

四、启动镜像

镜像创建完毕后,启动镜像生成容器(以下面的代码为准,截图中的代码有误,懒得重新截图了),执行命令如下

docker run -d -p 8080:8080 mydocker

启动成功后我们可以进入容器内部,看到ROOT目录下只有我们写进去的index.html文件(进入容器内部用exec命令,使用方法看第一阶段)
在这里插入图片描述
如果我们在容器内,可以用命令exit命令退出容器;

五、打开页面,查看效果

在这里插入图片描述

以上,这样我们就通过Dockerfile创建完成了一个,只有一个index.html页面的web项目,并且可以正常访问。如果读者想启动一个自己的项目,这里以zip包为例(即你的项目已经打成了zip包),提供了一个Dockerfile

以下是另一个Dockerfile,这个Dockerfile将一个crm项目打成了zip包,将zip复制到了tomcat下,解压并移除原始zip包,启动镜像,这样就能将任意项目通过dockerfile的方式启动了;

FROM tomcat
WORKDIR /usr/local/tomcat/webapps/ROOT/
RUN rm -fr *
COPY crm.zip . 
RUN unzip crm.zip
RUN rm -fr crm.zip
WORKDIR /usr/local/tomcat/
EXPOSE 8080

其他步骤见上文

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值