{
"registry-mirrors": ["https://cubmirje.mirror.aliyuncs.com"]
}
EOF
让配置生效,并重启Docker
systemctl daemon-reloadsystemctl restart docker
systemctl restart docker
不知道大家学到这里,觉得怎么样。如果是我,我肯定觉得没意思。搞了个HelloWorld案例,就打印了一句话,没意思。
三、体验Docker假如说,要在一台全新的系统上将Tomcat跑起来。我们需要做以下的事:
如果我们用了Docker,我们是这样做的:直接在仓库里拉一份tomcat的镜像下来,将镜像跑起来就,就完事了!
拉取Tomcat镜像:
docker pull tomcat
拉取Tomcat镜像docker images查看是否有拉取到的tomcat
docker image ls
拉取到的Tomcat镜像:
拉取到的Tomcat镜像运行这个Tomcat镜像,生成容器
docker run -it -p 9999:8080 tomcat
我们可以发现,这个Tomcat运行起来了!
Tomcat运行起来了(滚犊子,没运行起来,踩坑了!,一直卡在INFO: Deploying web application directory
这句话上了。我还一直想,为啥我访问不到呢,才发现没运行起来)
3.1解决docker运行Tomcat卡住的问题
原因:
docker+tomcat 启动时非常慢,一般正常启动几十秒的,发现docker+tomcat启动竟需要几分钟,不可思议
根本原因是 SecureRandom 这个 jre 的工具类的问题。那为什么 SecureRandom generateSeed 这么慢,甚至挂在 Linux 操作系统呢?
Tomcat 7/8 都使用 org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 类产生安全随机类 SecureRandom 的实例作为会话 ID。
SecureRandom generateSeed 使用 /dev/random 生成种子。但是 /dev/random 是一个阻塞数字生成器,如果它没有足够的随机数据提供,它就一直等,这迫使 JVM 等待
首先,我们先以后台的方式运行Tomcat镜像:
docker run -tid tomcat
以bash的方式进入到容器中:
docker exec -it 4a471223bfc4(为你正在运行容器的id) /bin/bash
为容器安装vim:
apt-get updateapt-get install vim
apt-get install vim
修改对应的java.security
文件
cd /docker-java-home/jre/lib/securityvim java.security
vim java.security
找到 securerandom.source=file:/dev/random
,修改为securerandom.source=file:/dev/./urandom
在Tomcat镜像下创建一个属于我们自己的Tomcat镜像(这个镜像安装了vim,修改了配置文件)
docker commit -m "change java.security" -a "3y" 4a471223bfc4(为当前容器的id) mytomcat
于是我们就生成了mytomcat镜像,就可以使用mytomcat:
docker run -it -p:9999:8080 mytomcat
效果图:
使用Docker容器成功启动Tomcat参考资料:
四、命令说明除了Tomcat,大家还可以去拉个mysql、redis、centos等等镜像来玩玩~~
Docker的命令无非就是对镜像、对容器进行增删改查。我是不太喜欢拉出每个命令来写文章的,所以这些命令还是大家自行学习吧~~
之前收集资料的时候,我也找到了一张关于Docker的思维导图,对着来看看,感觉就没问题了:
Docker的思维导图最后留下几个问题:
帅的人都关注了 精彩回顾: 觉得我的文章写得不错,不妨点一下 好看 并 分享 给朋友!乐于输出干货的Java技术公众号:Java3y。200多篇原创技术文章、海量视频资源、精美脑图!