docker 在容器导入时未执行停靠文件入口点/cmd

9lowa7mx  于 2023-03-07  发布在  Docker
关注(0)|答案(2)|浏览(122)

我尝试导出一个容器,导入它,然后运行它。但是,dockerfile中的CMD/ENTRYPOINT没有在导入的容器上执行。
如何执行构建映像时在Dockerfile中指定的相同命令?我知道可以使用docker run image <cmd>指定它,但是,CMD/ENTRYPOINT在导出/导入过程中如何丢失?还有,是否有更好的方法导入/导出容器?
下面是dockerfile:

FROM python:3-alpine

WORKDIR app

ADD ./app.py .
ADD ./requirements.txt .
RUN pip3 install -r requirements.txt

CMD ["python3", "app.py"]

命令会连续运行:

docker build . -t python-app
docker run --name app-container python-app    
docker export app-container > app-container.tar  
docker import app-container.tar "import-container:latest"  
docker run --name import import-container:latest    
# docker: Error response from daemon: No command specified.
toe95027

toe950271#

docker export导出的是容器的文件系统,而不是映像,这就是CMD和ENTRYPOINT不被导出的原因。
如果要从映像创建tar文件,则应使用docker savedocker load,而不是docker exportdocker import

yruzcnhs

yruzcnhs2#

执行docker import时,需要执行以下操作:

docker import --change 'CMD ["python3", "app.py"]' image_archive.tar)

相关问题