Run a Docker Image as a Container
我用一个dockerfile创建了一个docker图像。我看到图像被成功地构建了,但是我该怎么处理它呢?难道它不能作为一个容器运行吗?
对于Docker来说,这可能是一个误会,任何帮助都是很好的。
运行它的具体方法取决于您是否给了图像一个标签/名称。
1 2 3 4 | $ docker images root@dockertest:~# docker images REPOSITORY TAG ID CREATED SIZE ubuntu 12.04 8dbd9e392a96 4 months ago 131.5 MB (virtual 131.5 MB) |
有一个名字(让我们用Ubuntu):
1 | $ docker run -i -t ubuntu:12.04 /bin/bash |
没有名字,只需使用ID:
1 | $ docker run -i -t 8dbd9e392a96 /bin/bash |
有关详细信息,请参阅https://docs.docker.com/engine/reference/run/。
执行以下步骤:
您将获得所有指定标签的本地Docker图像的列表。
如果您没有指定
您还可以指定图像ID(无标记名称),而不是
- 列出Docker图像
1 | $ docker images |
- 如果您的应用程序想要使用端口80运行,并且您可以公开一个不同的端口来进行本地绑定,比如8080
1 | $ docker run -d --restart=always -p 8080:80 image_name:version |
您可以使用
1 | docker images |
然后您可以在分离模式下运行
1 | docker run -d myimage |
然后您可以使用
1 | docker ps |
docker ps给你一个docker id,你可以使用它或者只使用2/3 first字符进入你的容器
1 | docker exec -it container_id /bin/bash |
你可以用
您还可以使用-rm参数运行容器,因此如果停止容器,它将被自动删除。
使用以下命令获取要运行的映像的名称或ID:
docker run命令的使用方式如下:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
在下面,在指定映像名称或ID之前,我已经包含了分派、名称、发布、卷和重新启动选项:
1 | docker run -d --name container-name -p localhost:80:80 -v $HOME/myContainer/configDir:/myImage/configDir --restart=always image-name |
--detach , -d Run container in background and print container ID
--name Assign a name to the container
--publish , -p Publish a container’s port(s) to the host
--volume , -v Bind mount a volume
--restart Restart policy to apply when a container exits
有关更多信息,请查看官方Docker运行参考
下面是一个在Docker中运行Webdev服务的示例。图片的名字是Morrisjobke/WebDAV。你可以从Dockerhub上取下来。
运行完这些图像后,就可以访问
您可以以下方式运行此容器:
$ docker run -d -e USERNAME=test -e PASSWORD=test -p 8888:80 morrisjobke/webdav
由于您已经从Docker文件创建了一个映像,所以该映像当前未处于活动状态。为了工作,您需要在容器中运行此图像。
1 | docker ps -a |
显示当前可用的容器数,即活动和退出的容器列表
在容器中运行图像有两种方法
1 | $ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...] |
处于分离模式
1 | -d=false: Detached mode: Run container in the background, print new container id |
在交互模式下
1 | -i :Keep STDIN open even if not attached |
这是docker run命令
1 | $ docker run image_name:tag_name |
有关docker run的更多说明,您可以访问https://docs.docker.com/engine/reference/run网站/
这是理解Docker最好的材料。
我也有同样的问题。我运行了Docker,它创建了一个具有特定容器ID的容器,我想使用同一个容器:
首先运行你的Docker:
$docker run -it -p 8888:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning
然后列出您制作的所有容器:
$sudo docker ps -a
并选择要使用的容器(我的是167ddd6d7f15)
$sudo docker start -ai 167ddd6d7f15