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/