>  Q&A  >  본문

docker - 容器commit为镜像,再run成container, 端口映射丢失 该如何理解.

问个问题啊, 我run 了一个container hello,通过-p参数 映射主机端口 和 容器端口.

sudo docker run -d --name hello -p 8080:8080 -m 268435456 ubuntu:14.04 bin/bash -c "while true;do echo hello $(date); sleep 2; done"

然后通过 commit 命令生成新的镜像 sudo docker commit hello hello-image .
在然后, 基于该镜像,使用docker run -d hello-image 重新运行一个新的容器(这个时候并没有指定-p参数).
新生成的容器 是没有 端口映射的,而且也没有之前容器设置的-m参数信息.

我的问题是: 如何理解新生成的容器没有映射端口和 内存限制这两项信息? 什么参数是属于容器的,什么参数是属于镜像的呢?

ringa_leeringa_lee2758일 전849

모든 응답(3)나는 대답할 것이다

  • 阿神

    阿神2017-04-24 09:11:34

    컨테이너가 미러에 커밋되면 컨테이너 자체도 동시에 중지되므로 정적 파일만 유지됩니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-24 09:11:34

    포트를 예약하거나 dockerfile을 사용하여 포트를 열고, 컨테이너 생성 시 -P 명령을 사용해야 합니다.
    또는 위에서 포트를 지정한 방식과 비슷하게 실행합니다. 그렇지 않으면 포트가 열리지 않으며, 컨테이너를 생성해야 할 때 호스트와 관련된 모든 것을 동적으로 지정해야 합니다.
    sudo docker run -d --name hello -p 8080:8080 -m 268435456 ubuntu:14.04 bin/bash -c "while true;do echo hello $(date); sleep 2; done"

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-24 09:11:34

    포트 매핑은 컨테이너에 속하며 이미지에는 존재하지 않습니다. 실행될 때마다 지정해야 합니다.

    회신하다
    0
  • 취소회신하다