【docker入门2】在CentOS7上定制docker服务

将本地主机的war在docker的tomcat容器上发布

docker run -d --name tomcat -p 8080:8080 tomcat    #创建一个tomcat容器
docker exec -it tomcat /bin/bash    #进入到容器内部查看文件结构
exit    #退出容器
#自行cd到本地主机war所在的目录
docker cp war包名称 tomcat:/usr/local/tomcat/webapps    #将本地主机的war复制到容器内部即可。

使用docker inspect tomcat查看tomcat容器信息

lowerdir=镜像的各个层,镜像层相关的文件均为只读的。如果用户在容器层中引入一个与镜像层中同名的文件,则会覆盖掉镜像层中对应的文件,用户只能看见容器层中的那个文件。容器的文件挂载就是基于这一原理实现的

  容器层

      | |

镜像各个层

容器层文件和镜像层文件的本质区别是:是否能够删除,镜像层文件是无法删除的。 

因此,docker通过镜像创造出一个容器,只需要将镜像层的文件保持不变并在上面增加一个容器层即可。

如果需要通过容器转换为镜像,则直接将容器层的文件转换为只读即可。

将容器转换为镜像:

docker commit -a "w" -m "test" tomcat tomcat:test  
#-表示提交的作者信息,-m表示添加的注释,tomcat表示提交的容器名,tomcat:test表示创建的新镜像的名称为tomcat,版本为test
docker images #查看提交到本地仓库的tomcattest版本镜像。
docker run -d --name tomcat2 -p 8081:8080 tomcat:test #以提交的tomcat镜像创建一个tomcat容器
docker ps #查看当前docker所使用的端口

将容器转换为镜像(使用dockerfile命令):

使用vi命令新建一个Dockerfile文件。如,现在要新建一个tomcat镜像,则在文件里写入,

FROM tomcat    #通过当前镜像库中的哪个镜像创建
ADD ['本地主机中需要添加到镜像的war包路径','复制到的容器路径']    #前者的路径是以当前Dockerfile文件所在的路径
EXPOSE 8080    #加上这一句,可以让用户了解到当前镜像所占用的端口为8080
#创建了Dockerfile文件后,
docker build -t tomcat:test2 .    #-t后面跟的是主体容器名称,后面的点表示创建使用的dockerfile就在当前目录,因为dockerfile文件的名字固定。因此不用写明文件名
docker images    #查看docker本地仓库的镜像
docker run -d --name tomcat3 -p 8082:8080 tomcat:test2 #以创建的tomcat镜像创建一个tomcat容器
docker ps #查看当前docker所使用的端口

使用 docker history tomcat3命令查看镜像的文件结构,发现Dockerfile新增的命令会在最上层,Dockerfile文件中操作命令越多,镜像文件结构的层数越多,因此,将Dockerfile的多条操作命令写成一行,可以加快镜像部署速度。

Dockerfile指令集:

Dockerfile指令集
1 FROM
第一条指令必须为FROM指令,用于指定基础镜像。
2 MAINTAINER
指定维护者信息。
3 RUN
会在shell终端运行命令。
4 EXPOSE
格式为 EXPOSE [ ...],声明容器需要暴露的端口号。
-----------镜像启动可以通过 –P 或 -p 进行端口映射的绑定。
5 ENV
指定一个环境变量,可以被后续的RUN引用,并且在容器中记录该环境变量。
6 ADD
该命令将复制指定的到容器中的。
-------其中可以是Dockerfile所在目录的一个相对路径;也可以是tar文件(自动解压)。
7 VOLUME
格式为 VOLUME [path]。
--------创建一个可以从本地主机或其他容器挂载点,一般用来存放需要保持的数据。
8 USER
指定运行容器时的用户名,后续的RUN也会指定该用户。
9 WORKDIR
指定工作空间,后续命令都在此目录下执行。
10 CMD
11 ENTRYPOINT

CMD与ENTRYPOINT命令的区别:使用了ENTRYPOINT命令后,如果在运行由该Dockerfile文件创建的镜像语句后面增加了echo这些命令,则只会作为参数附加。如:

docker run -d --name test5 tomcat echo 123

发布war步骤:

1.mvn打包

2.docker build 因为指定镜像名字的不确定,因此将docker build作为一个mvn插件来封装

3.docker run

在项目文件夹下,使用mvn clean package docker:build命令对项目进行打包并制作成一个镜像。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值