在使用docker命令时由于参数顺序被坑了一把,故这篇笔记主要记录一下深入学习docker run 命令
- 目的:启动指镜像映射到宿主机8999端口并添加主机名到hosts中。
- docker run 会基于指定的镜像新建出┅个容器启动
- p作为端口映射,映射容器和宿主机端口
- name指定容器的名称
- 为什么命令是有问题的?
- 宿主机上使用lsof -i:8999,发现并没有进程在监听端口
- 使用如下命令进入容器内部,查看运行情况
- 可以看到 -p被当成了tomcat的启动参数了,发现问题后,当然最简单的解决办法就是更换参数的先后順序解决问题就算了吗?本着折腾的精神当然要研究一番了。
- 首先想到的就是官方手册啦毕竟是一手资料。
-
可以看到在IMAGE后指定的参數会被当成命令在容器中运行所以-p应该是属于OPTIONS放在IMAGE前面才对。那除了上面说的还有那些参数是比较常用的呢?
-
link参数用于容器互联如將kafka连接到zk容器,启动zookeeper时使用-h参数指定容器主机名为zookeeper,或者使用docker rename对已有容器进行重命名进入容器内部发现docker会在hosts文件内生成对应内容。
- 参数p和P,小p和大P的区别?
- 小p指定一个或一组容器端口映射到宿主机上-p宿主机端ロ:容器端口。大P是将DockerFile中EXPOSE指定的端口随机的映射给宿主机