欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 运行后 停在cmd_DevOpsDocker - 运行容器

程序员文章站 2023-12-21 16:33:28
...

Running Containers From Images

还记得我们提到容器是由镜像构建的吗?docker run 基于那个镜像创建了一个容器。可以说容器是镜像的运行实例。另外,记住,这个镜像可以是在本地,也可是是在registry()。

继续,运行已经创建的镜像,docker run python-docker和docker run js-docker:

python 运行后 停在cmd_DevOpsDocker - 运行容器

注意到了啥?容器运行时在终端产生相应的输出。注意,在Dockerfile文件中前面的CMD命令,就是那个运行的:

docker build -t python-docker:test . and docker build -t js-docker:test .

Then, run the following:

python-docker:test and docker run js-docker:test

NOTE

你会看到在终端看到所有的输出。

并不是因为在容器运行起来后,我们没有CMD命令去立即执行。对于Python和Node两个镜像,他们有一个继承自基础镜像的CMD。

NOTE

制作的镜像总是继承自基础的镜像。

刚刚我们运行的两个容器,运行一次并且退出。检查docker ps的结果,看不到任何刚才运行的信息。但是,运行docker ps -a可以揭示容器的状态是退出的。

有一个命令列,显示了镜像的CMD来自哪个容器。

运行一个容器,可以指定名字,就像下面的一样:

docker run --name (for example, docker run --name py-docker-container python-docker):

python 运行后 停在cmd_DevOpsDocker - 运行容器

我们前面叙述了,咱们仅仅是希望有相关的Docker镜像,并且是没有标签的Docker镜像。

作为容器,需要知道的是,我们从一个镜像,可以拥有很多容器。docker rm 用来移除容器。当然,移除前,容器需要时退出的,或者说没有在运行。

NOTE

For the containers that are still running, you would have to either:

对于那些正在运行的容器,可以:

在移除容器前,先停止掉容器 docker stop

强制移除容器 docker rm -f

使用docker ps命令,看不到有容器信息,但是,使用docker ps -a,你会注意到,容器被列出来了,并且显示了继承自base镜像的CMD信息,例如:python3和node。

python 运行后 停在cmd_DevOpsDocker - 运行容器

Python

Python镜像Dockerfile的CMD是python3。意味着,python3命令在容器运行时执行之后,容器退出。

NOTE

仔细想想,是不是我们运行python只需要运行这个镜像就行了,而不用去安装python镜像。

试试运行一下: docker run -it pytohn-docker:test (我们创建的最新的镜像)

我们从容器得到了一个交互的bash shell。-it 指示Docker容器创造了这个shell。shell运行python3命令,该命令在基础镜像Python中使用CMD定义。

python 运行后 停在cmd_DevOpsDocker - 运行容器

在这个命令docker run -it python-docker:test python3 run.py, python3 run.py运行得就像你在容器中运行终端程序一样。注意,run.py在容器里面所以运行了。运行docker run -it python python3 run.py 指定了缺失的run.py脚本:

python 运行后 停在cmd_DevOpsDocker - 运行容器
python 运行后 停在cmd_DevOpsDocker - 运行容器

同样对于JavaScript来说,这一理论同样适用。

docker run -it js-docker:test (the image we created last) will have a shell running node (the CMD in the node base image):

python 运行后 停在cmd_DevOpsDocker - 运行容器

docker run -it js-docker:test node run.js will output Hello Docker - JS:

python 运行后 停在cmd_DevOpsDocker - 运行容器

这就证明了Docker镜像的继承因素。

Now, return the Dockerfiles to their original state with the CMD commands on the last line.

上一篇:

下一篇: