接上一篇docker run
1、相同容器名称问题;
有时我们在运行一个镜像时后发生错误提示;
[root@localhost ~]# docker run --name mytomcat -d tomcat:latest
docker: Error response from daemon: Conflict. The container name "/mytomcat" is already in use by container "e6c24833399a91a9e3de34024914c599333c806aa10256cc34e50fb236bda2a7". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
我们从错误提示中可以看到,说明已经存在名称是mytomcat的容器,先查询一下是否存在;
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d612eb7d2a8f tomcat:latest "catalina.sh run" 10 minutes ago Up 10 minutes 8080/tcp mytomcat2
e6c24833399a tomcat:latest "catalina.sh run" 14 minutes ago Up 14 minutes 8080/tcp mytomcat
果真在运行的容器中已存在,我们先关停一下再重新启动试试;
[root@localhost ~]# docker stop e6c24833399a
e6c24833399a
[root@localhost ~]# docker run --name mytomcat -d tomcat:latest
docker: Error response from daemon: Conflict. The container name "/mytomcat" is already in use by container "e6c24833399a91a9e3de34024914c599333c806aa10256cc34e50fb236bda2a7". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
说明关闭还不行,我们来移除这个容器吧;
[root@localhost ~]# docker rm e6c24833399a
e6c24833399a
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d612eb7d2a8f tomcat:latest "catalina.sh run" 18 minutes ago Up 18 minutes 8080/tcp mytomcat2
[root@localhost ~]# docker run --name mytomcat -d tomcat:latest
bfe0ad01bbea4c6a0268e3b17b0ef5c174e35feef1a07dbbbc554912eec9f31c
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bfe0ad01bbea tomcat:latest "catalina.sh run" 10 seconds ago Up 9 seconds 8080/tcp mytomcat
d612eb7d2a8f tomcat:latest "catalina.sh run" 18 minutes ago Up 18 minutes 8080/tcp mytomcat2
2、运行时端口错误
OPTIONS说明:
-
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
举例说明:
以实际运行的jar为例,部署时Dockerfile文件内容如下
[root@localhost home]# cat Dockerfile
FROM java:8
ADD eureka-server-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8761
ENTRYPOINT ["sh","-c","java -jar /app.jar"]
注意上面的EXPOSE 8761,当我们运行时,要确保容器端口也是8761,宿主机端口可换成其他。
docker run -d --name eureka4 -p 8762:8761 register2
如果容器端口也是8762,那么容器可以正常启动,但无法被访问。