本次部署的容器类型为Linux。右击docker图标可以知道。

server2012 搭建docker windows2012 docker_server2012 搭建docker

使用Hub中centos镜像、jdk包和tomcat包制作tomcat镜像

server2012 搭建docker windows2012 docker_centos_02


准备工作

打开powershell,下载centos,默认为最新版。
因为配置了镜像加速,所以下载很快。

PS C:\Users\liu> docker pull centos

server2012 搭建docker windows2012 docker_docker_03


在D盘建立dockertest目录并进入。

PS C:\Users\liu> cd D:                    
PS D:\> mkdir dockertest 
PS D:\> cd .\dockertest\

建立一个说明文件与dockerfile文件,dockerfile文件是docker的精华之一。

PS D:\dockertest> new-item readme.txt

PS D:\dockertest> new-item Dockerfile

jdk下载地址:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html#license-lightbox

tomcat下载地址:
https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.50/

将下载的文件移到dockertest目录下。

server2012 搭建docker windows2012 docker_tomcat_04


编写Dockerfile

之所以将dockerfile文件命名为Dockerfile,是为了在build时,不用-f指定文件,会自动找到Dockerfile,更方便一些。
用记事本打开Dockefile文件,输入:

FROM centos
MAINTAINER xuliu<liuxuecan@njust.edu.cn>

COPY readme.txt /usr/local/readmei.txt

ADD jdk-8u291-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.0.50.tar.gz /usr/local/

RUN yum -y install vim
RUN yum -y install net-tools

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_291
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.50
ENV CATALINA_BASH /usr/local/apache-tomcat-8.0.50
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-8.0.50/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.0.50/logs/catalina.out

命令解释:
RUN tar.gz时会自动解压缩到/usr/local。

FROM		# 基础镜像,一切从这里开始构建  centos
MAINTAINER	# 镜像是谁写的,姓名+邮箱
RUN			# 镜像构建的时候需要运行的命令,等同与在shell中输入的命令
ADD			# 步骤:tomcat镜像,这个tomcat压缩包就说添加内容。
WORKDIR		# 镜像的工作目录,可指定
VOLUME		# 挂载的目录 -v
EXPOSE		# 暴露端口配置 -p
CMD			# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT	# 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD		# 当构建一个被继承的dockerfile,这个时候就会运行ONBUILD指令(触发指令)
COPY		# 类似ADD命令,将我们文件拷贝到镜像中
ENY			# 构建时设置环境变量,-e

建立镜像

PS D:\dockertest> docker build -t mytomcat .

注意最后面的. 查看镜像:

PS D:\dockertest> docker images                                                                                         REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
mytomcat     latest    7603ecae93c7   About a minute ago   657MB
centos       latest    300e315adb2f   6 months ago         209MB

在软件中也能看到:

server2012 搭建docker windows2012 docker_centos_05


启动镜像,建立容器

docker run -d -p 9090:8080 --name xuliutomcat -v D:/dockertest/xuliu/build/tomcat/webapps:/usr/local/apache-tomcat-8.0.50/webapps -v D:/dockertest/xuliu/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-8.0.50/logs mytomcat
  • -d: 后台运行
  • -p: 宿主机端口与容器端口的映射
  • -v: 挂载路径,宿主机路径:容器路径

查看建立的容器,发现正在运行:

PS D:\dockertest> docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                       NAMES
d24a7845535b   mytomcat   "/bin/sh -c '/usr/lo…"   3 minutes ago   Up 3 minutes   0.0.0.0:9090->8080/tcp, :::9090->8080/tcp   xuliutomcat

在软件中也能看到:

server2012 搭建docker windows2012 docker_jdk_06


可以进入容器:

PS D:\dockertest> docker exec -it d24a7845535b /bin/bash
[root@d24a7845535b local]# ls
apache-tomcat-8.0.50  bin  etc  games  include  jdk1.8.0_291  lib  lib64  libexec  readmei.txt  sbin  share  src

可见,默认路径为/usr/local,与Dockerfile文件设置一致。这实际上是一个精简版的centos。


查看容器内webapps文件夹:

[root@d24a7845535b local]# ls /usr/local/apache-tomcat-8.0.50/webapps/
[root@d24a7845535b local]#

发现为空,所以在浏览器中访问不到。

server2012 搭建docker windows2012 docker_tomcat_07


发布项目sample,测试tomcat

tomcat的例子下载地址https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/ 下载下来是一个war包:sample.war。
在启动镜像时,-v参数将宿主机与容器做了卷挂载:

-v D:/dockertest/xuliu/build/tomcat/webapps:/usr/local/apache-tomcat-8.0.50/webapps 

-v D:/dockertest/xuliu/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-8.0.50/logs

一个是D:/dockertest/xuliu/build/tomcat/webapps/usr/local/apache-tomcat-8.0.50/webapps对应。
一个是D:/dockertest/xuliu/build/tomcat/tomcatlogs//usr/local/apache-tomcat-8.0.50/logs对应。

因此将下载得到的sample.war放到D:/dockertest/xuliu/build/tomcat/webapps中,同时也会出现在容器内。
查看容器内地址/usr/local/apache-tomcat-8.0.50/webapps

[root@d24a7845535b local]# ls /usr/local/apache-tomcat-8.0.50/webapps/
sample  sample.war

其中文件夹sample是sample.war的解包。

此时宿主机:

server2012 搭建docker windows2012 docker_docker_08


重新进入浏览器,输入localhost:9090/sample/index.html

其中localhost也可写为本机的ip地址,可通过ipconfig查看。

server2012 搭建docker windows2012 docker_centos_09


server2012 搭建docker windows2012 docker_server2012 搭建docker_10


server2012 搭建docker windows2012 docker_server2012 搭建docker_11


server2012 搭建docker windows2012 docker_centos_12


另一个卷挂载结果:

容器中:

server2012 搭建docker windows2012 docker_docker_13

宿主机中:

server2012 搭建docker windows2012 docker_server2012 搭建docker_14



直接使用docker hub中的镜像

这是别人做好的镜像,类似我们之前做的镜像mytomcat
很简单,拿过来直接用就行。


下载镜像

server2012 搭建docker windows2012 docker_tomcat_15

运行镜像生成容器

docker run -it  -v D:\dockertest\xuliu\build\tomcat\webapps\:/usr/local/tomcat/webapps -p 8080:8080 c43a65faae57

这里容器仍然挂载到D:\dockertest\xuliu\build\tomcat\webapps\ 并指定端口映射。

进入容器

不要退出运行的容器,另外再打开一个powershell。


查看容器id

server2012 搭建docker windows2012 docker_centos_16


进入容器

server2012 搭建docker windows2012 docker_server2012 搭建docker_17


测试
将sample.war移到宿主机目录:D:\dockertest\xuliu\build\tomcat\webapps\,则该容器内:

server2012 搭建docker windows2012 docker_server2012 搭建docker_18


此时浏览器可以访问了,部署完成了。

server2012 搭建docker windows2012 docker_docker_19