docker2

docker下载镜像采用分层下载,之前已经下载过的就不再下载了;

run一个镜像后,在镜像层上面新建一个容器层,所有操作在容器层,发布的时候将镜像层和容器层打包形成新的镜像

commit 制作新镜像:

 

 

 

 容器数据卷:

把容器内的目录挂载到外面的linux目录,容器的数据就能持久化了,且里外同步,而且多个容器都共享该数据

 

 

 

 

 

 

 

 

 

 具名挂载和匿名挂载:

 

 -P是随机指定端口

 

 

 

 

 

 Dockerfile 制作镜像:现在dockerfile里面输入镜像制作指令,然后docker build会执行这个dockerfile里面的每条指令来制作镜像

volume01,02是创建了2个里外同步的数据卷

cmd表示当run镜像生成容器的时候会执行

多个cmd只有最后那个cmd会生效

注意后面那个.

 FROM centos:是在centos基础上操作;

一个命令叠加一层

 

 

 

 

 

 

 02是son,01是父亲

 

 

 

 

 

 

 

 构建自己的centos :

注意改成:FROM centos:7

CMD是启动容器之后会运行的命令

 

 

 

 

 

 

 

 

 

 

 

 区别:CMD会替代,ENTRYPOINT会追加:

 

 

 

 

 

 

 

 

 Dockerfile制作tomcat镜像:

 ADD <src> <dest> :将复制指定的 <src> 路径下内容到容器中的 <dest> 路径下,可以是一个 tar 文件(在dest目录解压)

WORKDIR:切换到指定目录

ENV只能设置一个环境变量,:分割多个路径

EXPOSE是指定容器内的端口

运行sh文件:直接./加上文件名.sh,如运行hello.sh为./hello.sh【hello.sh必须有x权限】

tail -F 动态追踪并打印文件后面几行

 && 前一条命令执行成功后,才执行后一条命令 

 

 

 

代码: 

构建镜像:

docker build -t diytomcat .

到外面的tomcat/test下,mkdir WEB-INF,里面vim web.xml,test 目录下,vim index.jsp;2个文件都填入内容

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                               http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
           version="2.5">
</web-app>

index.jsp:

<html>
<head><title>Hello World</title></head>
<body>
Hello World!<br/>
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>

启动镜像:

docker run -d -p 9090:8080 --name youngtomcat -v /home/jary/build/tomcat/test:/usr/local/apache-tomcat-9.0.22/webapps/test -v /home/jary/build/tomcat/tomcatlogs:/usr/local/apache-tomcat-9.0.22/logs diytomcat

 浏览器访问:http://192.168.154.101:9090/test/

 

posted @ 2022-06-05 18:40  Jary霸  阅读(25)  评论(0编辑  收藏  举报