1.DockerFile 指令
FROM #基础镜像,一切从这里开始构建
MAINTAINER #镜像是谁写的,姓名和邮箱
RUN #镜像构建的时候需要运行的命令,在docker 构建时执行
ADD #添加内容到镜像中,例如tomcat压缩包,会自动解压
WORKDIR #镜像的工作目录
VOLUME #挂载的目录
EXPOSE #暴露端口配置
CMD #指定容器启动时要运行的命令,只有最后一个会生效,可被替代 ,在docker 运行时执行
ENTRYPOINT #指定容器启动时要运行的命令,只有最后一个会生效,可被替代 追加的方式
COPY # 类似ADD,将我们文件拷贝到镜像中
ENV #构建的时候设置环境变量
ONBUILD #当以当前镜像为基础构建镜像时会被执行,构建当前镜像的容器时,不会被执行
2.CMD 和 ENTRYPOINT 的区别
2.1)CMD命令
在运行容器时,添加-l 命令,是为了测试和dockerfile 中cmd ls -a后添加-l, cmd ls -a -l 是否可行,测试是不可行的,因此CMD命令追加不可行。
dockerfile-cmd 中的内容如下:
2.2)ENTRYPOINT 命令
可以看到用ENTRYPOINT 命令就是可以的。
dockerfile-entrypoint 文件内容如下:
3.构建tomcat镜像并启动
1.下载tomcat 和jdk
在服务器上可以通过wget下载tomcat和jdk
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
wget tomcat 的地址(地址的连接)
例如下载tomcat9 wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-9/v9.0.50/bin/apache-tomcat-9.0.50.tar.gz
2.编写Dockerfile
新建一个文件夹,这里叫做software 用于存放下载的tomcat 和jdk以及Dockerfile 文件
3.根据Dockerfile 构建镜像
4.启动运行镜像
外网测试,记得打开阿里云的防火墙
5.测试部署的项目
在启动容器的时候,会将主机上的test目录和容器上webapps上的目录关联起来,这样做的好处是,可以在宿主机上编写项目,然后放到test文件上,这样就可以同步到webapps上的test文件中了
还有个就是讲宿主机上的tomcatlogs目录和容器上的tomcat 中的logs目录关联起来,这样做的好处是,可以在宿主机上查看catlina.out文件的内容~
5.1)新建WEB-INF目录,该目录下编写web.xml文件
如下图所示
访问http://116.62.19.167:9090/test/ 测试
5.2)日志文件tomcatlogs
以上输出hello world ~
4.将自己制作的镜像发布到docker hub
4.1)首先登陆dockerhub
4.2)创建私有的仓库
4.3)命令行登录
4.4)push 镜像到docker hub 远程仓库
第一种方式push 镜像
1.构建镜像的时候,docker build -t <your_username>/my-private-repo . 构建一个名为<your_username>/my-private-repo的镜像
2.docker run <your_username>/my-private-repo 可以进行测试
3.docker push <your_username>/my-private-repo 推送到远程
可以看到是成功push 的,由于dockerhub太慢了,这边就暂停push了。
第二种方式
docker tag local-image:tagname new-repo:image:tagname
docker push new-repo:image:tagname
5.将镜像发布到阿里云镜像仓库
5.1)登录阿里云,进入到容器镜像服务,创建命名空间并且创建仓库,选择私有仓库
docker login --username=用户名 registry.cn-hangzhou.aliyuncs.com
5.2)为镜像打上标签,等于重新命名
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/liam-test-namespace/firstrepo:[镜像版本号]
5.3)推送到远程服务
docker push registry.cn-hangzhou.aliyuncs.com/liam-test-namespace/firstrepo:[镜像版本号]
发布成功
Push到阿里云上的镜像
总结,生成的镜像其实就是仓库中的某个版本号
文章评论