python 运行后 停在cmd_DevOpsDocker - 运行容器
Running Containers From Images
还记得我们提到容器是由镜像构建的吗?docker run 基于那个镜像创建了一个容器。可以说容器是镜像的运行实例。另外,记住,这个镜像可以是在本地,也可是是在registry()。
继续,运行已经创建的镜像,docker run python-docker和docker run js-docker:
注意到了啥?容器运行时在终端产生相应的输出。注意,在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):
我们前面叙述了,咱们仅仅是希望有相关的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
Python镜像Dockerfile的CMD是python3。意味着,python3命令在容器运行时执行之后,容器退出。
NOTE
仔细想想,是不是我们运行python只需要运行这个镜像就行了,而不用去安装python镜像。
试试运行一下: docker run -it pytohn-docker:test (我们创建的最新的镜像)
我们从容器得到了一个交互的bash shell。-it 指示Docker容器创造了这个shell。shell运行python3命令,该命令在基础镜像Python中使用CMD定义。
在这个命令docker run -it python-docker:test python3 run.py, python3 run.py运行得就像你在容器中运行终端程序一样。注意,run.py在容器里面所以运行了。运行docker run -it python python3 run.py 指定了缺失的run.py脚本:
同样对于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):
docker run -it js-docker:test node run.js will output Hello Docker - JS:
这就证明了Docker镜像的继承因素。
Now, return the Dockerfiles to their original state with the CMD commands on the last line.
推荐阅读
-
python 运行后 停在cmd_DevOpsDocker - 运行容器
-
Python首次安装后运行报错(0xc000007b)的解决方法
-
Python首次安装后运行报错(0xc000007b)的解决方法
-
在安装Python后,运行发现提示api-ms-win-crt-process-l1-1-0.dll丢失怎么解决?
-
Docker容器搭建运行python的深度学习环境的方法
-
新手入门 在Notepad++中写入python代码 运行后只是一闪而过 在末尾加了raw_input() helloworld这样的程序可以解决问题 但有些还是不能 求助?
-
新手入门 在Notepad++中写入python代码 运行后只是一闪而过 在末尾加了raw_input() helloworld这样的程序可以解决问题 但有些还是不能 求助?
-
Python首次安装后运行报错(0xc000007b)的解决方法
-
Python首次安装后运行报错(0xc000007b)的解决方法
-
【服务器】断开 SSH 后保持服务器上的 Python 程序一直运行