Docker入门2------手动构建自定义镜像

全文转自 https://www.cnblogs.com/jsonhc/p/7766561.html

Docker的container

  • 运行一个container的本身就是开启一个具有独立namespace的进程
  • 进程有自己的网络,文件系统等
  • docker通过run命令来启动一个container
  • 运行一个container必须要指定一个image作为初始化的文件系统

对于不存在的image,docker会自动去registry里面下载对应的image,然后再运行container

  • docker正在运行的容器
  • 物理机上的进程:

    可以看到二者的uuid是相同的

如果image里面包含了CMD的命令,那么在启动container的时候,不需要指定command,否则会使用指定的command来覆盖image中的CMD

  • 比如tomcat镜像里面的命令自动是执行catalina.sh run ,启动容器就会自动启动tomcat,如果启动的时候指定了命令就会覆盖原始的,导致tomcat不能启动!
  • 正常启动 docker run -d -p 8088:8080 tomcat 进程如下:
[root@localhost ymsk]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS                    NAMES
6a2a64495275        tomcat              "catalina.sh run"   10 minutes ago      Up 10 minutes                 0.0.0.0:8088->8080/tcp   elated_shockley

会自动启动tomcat服务

  • 覆盖启动'docker run -p 8088:8080 -t -i tomcat /bin/bash' 进程如下:
[root@localhost ymsk]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS                    NAMES
839498ec771b        tomcat              "/bin/bash"         12 minutes ago      Exited (130) 10 minutes ago                            peaceful_liskov

不会自动启动tomcat服务
查看本地现有镜像:

猜你喜欢

转载自www.cnblogs.com/radio/p/10412920.html