准备工序
1、官网下载Docker windows 版
截止到2019年2月2,链接是 https://hub.docker.com/editions/community/docker-ce-desktop-windows,exe文件,双击安装即可
2、注册一个docker账户
要上传你自己的docker容器,首先需要有自己的docker账户。
https://hub.docker.com/ ,注册完后登录,效果如下,感觉和github差不多
3、安装第一步下载的docker for windows后启动,会发现多了一个鲸鱼的小图标:
有很多相关的功能,比如登录,查看仓库,还有和k8s的配合操作等等 ,switch to Windows container可以在linux和windows环境内进行切换,有一些功能可能只在linux上可以使用。
实践操作
1、启动 cmd,输入docker ,可以看到,已经安装完毕了
2、使用 docker search tomcat 查找 所有镜像中 和tomcat 相关的 ,
选择stars最高的 执行 docker pull tomcat 拉取tomcat镜像到本地
3、此时,使用 docker images 命令可以查看当前docker内拥有的所有镜像,可以看到之前下载的tomcat
4、启动tomcat,看看能否看到正常安装的tomcat的启动页面,执行命令
docker run -it --name dockerDemo -p 8080:8080 tomcat ,
这里我们启动一个交互式的容器,名字是dockerDemo ,-p 8080:8080表示将容器的8080端口映射到主机的8080端口,这样我们只要访问主机的8080端口就可以访问到容器的服务了。(主机端口:容器端口)
出现熟悉的tomcat命令行启动界面,此时输入localhost:8080发现tomcat 已经正常启动
5、此时启动一个新的cmd,我们来查看下 此时docker容器的当前进程与 实际 tomcat所处的目录结构
docker ps 可以看到当前docker中启动的所有容器,及对应的容器信息,此处我们要关注的是containerid 容器ID,之后的操作都需要基于这个关键的ID
可以看到我们之前启动的tomcat 和对应的 容器ID,红框内显示了上文说的 主机8080端口映射到容器内的8080。
docker exec -it 20dae1362bc7 /bin/bash 可以进入容器内部,查看具体容器在机器上的目录及位置,为之后上传war包做准备
可以看到,进入目录后在/usr/local/tomcat ;底层目录和我们正常安装的tomcat并无两样,再次输入 exit 可以退出容器
6、接下来就是最关键的如何将本地的war包或者项目置入容器内的tomcat中,docker也提供了相关命令
注:war包大家可以自行准备,可以简单的跑起来的demo即可
docker cp E:\zone\dockerdemo\target\docker-demo.war 20dae1362bc7:/usr/local/tomcat/webapps
简单介绍一下docker cp 复制命令,docker cp 源地址(本机war包目录地址) 目标地址(容器ID:容器内部地址)
执行完毕后,可以看到tomcat目录下 已经有了
此时我们打开 http://localhost:8080/docker-demo/index.jsp 发现 ,页面已经可以访问了
大功告成!
7、至此,简单的tomcat在docker内的部署流程已经完成了,但是会有一个问题,每次容器重启后,之前容器内部放置的文件都会消失,每次重新执行run命令启动容器,相当于一个新的黑盒,无法保留历史文件,所以就引申出了一个新的问题,需要打包成一个images进行持续性管理!
8、在6的基础上,执行以下命令
首先要提交修改,输入指令(xxxxx是容器ID,zh69183787/demo,‘/’前面是自己的docker账号名,后面是给容器取的名字),每次commit后都会生成新的镜像,拥有独立的imageId
docker commit 20dae1362bc7 zh69183787/test
默认生成的镜像tag是latest,之后是none,如果想使用自己的tag的话,可以在 zh69183787/test:v2,加上tag
此时,输入 docker images 就会发现,已经生成了一个新的镜像images,tag就是commit时选填项,v2
之后就可以基于这个镜像进行文件的管理了。
9、最后还可以通过docker hub 将自己的镜像传入远程docker 仓库中,和github类似的一套机制
docker login 登录 docker 账户,我这边由于docker 鲸鱼小图标启动后自己进行了登录,所以就直接生效了
将仓库上传至镜像 docker push zh69183787/test:latest (latest是标签,docker images后TAG一栏就是了)
最后看一眼 docker hub
如果之前commit了不同镜像并且有不同的tag,点击某一个images后会发现tag下有N个提交版本
有了 ok,之后可以通过 docker pull zh69183787/test,拉取远程仓库的 images 了,感觉 commit 和 tag版本 都和git异曲同工,可以自行了解一下细节
参考: