如何"码头运行"适用于除bash之外的其他可执行文件?

时间:2017-12-13 13:27:51

标签: docker dockerfile

Docker命令运行:

docker run -it image_name [commands]

在Docker容器的bash进程中执行命令

我最近遇到了一个例子,其中命令正在另一个解释器中执行,例如 python 。也就是说,如果我要运行以下命令:

docker run -it image_name --version

我会看到python的版本。如何在Dockerfile中实际实现将默认可执行环境转移到其他程序?

1 个答案:

答案 0 :(得分:0)

让我们通过考虑以下例子来理解这一点:

# cat Dockerfile 
FROM ubuntu:14.04
RUN apt-get update && \
    apt-get install -y python 

这个 Dockerfile只安装python包并构建docker镜像,通过它可以运行如下命令:

# docker run -it example:3.0 /bin/bash
root@ee65d228ce3b:/# 
root@ee65d228ce3b:/# which python
/usr/bin/python
root@ee65d228ce3b:/# python --version
Python 2.7.6
root@ee65d228ce3b:/# 

让我们的另一个Dockerfile与上面的略有不同:

# cat Dockerfile 
FROM ubuntu:14.04
RUN apt-get update && \
    apt-get install -y python 
ENTRYPOINT ["/usr/bin/python"]

此Dockerfile中的附加内容是它具有ENTRYPOINT ,它表示当您运行从此Dockerfile构建的docker镜像时,它会执行作为其一部分的命令。所以它可以运行:

# docker run -it example:2.0 --version
Python 2.7.6

这样您就可以自定义Dockerfiles并运行脚本或可执行文件。