将Docker映像作为容器运行


604

我从dockerfile构建了Docker映像。我看到该映像已成功构建,但是该如何处理?它不应该能够作为容器运行吗?

Answers:


855

运行它的具体方式取决于您是否为图像指定了标签/名称。

$ docker images
REPOSITORY          TAG                 ID                  CREATED             SIZE
ubuntu              12.04               8dbd9e392a96        4 months ago        131.5 MB (virtual 131.5 MB)

使用名称(让我们使用Ubuntu):

$ docker run -i -t ubuntu:12.04 /bin/bash

没有名称,只需使用ID:

$ docker run -i -t 8dbd9e392a96 /bin/bash

请参阅Docker运行参考以获取更多信息。


4
因此,docker ps -a这里印在“ NAME”下的人性化名称在 这里有用吗?
ThorSummoner 2015年

11
docker ps列出容器,而不是图像。如果要从容器创建图像,则必须docker commit。您可以在提交中使用NAME(例如docker commit _NAME_ _imagename_
Andy

8
@Andy为什么我们最后使用/ bin / bash?我也是新手
Raheel

6
@RaheelKhan因为您的docker镜像需要运行。您可以将其替换为已安装的程序。/ bin / bash只是一个已经安装的方便的shell。
瑞安·希灵顿

如果您需要添加环境变量,则可以执行docker run -i -t -e ROOT_PASSWORD = root ubuntu:12.04
Balaji Radhakrishnan

70

请执行以下步骤:

  1. $ docker images

    您将获得带有指定标签的所有本地Docker映像的列表。

  2. $ docker run image_name:tag_name

    如果没有指定 tag_name,它将自动运行带有“最新”标签的图像。

    除了image_name,您还可以指定图像ID(无tag_name)。



21

您可以使用以下方法查看可用的图像:

docker images

然后,您可以在分离模式下运行,以便您的终端仍然可用。您可以使用存储库名称(带有或不带有标签)或图像ID来运行它的几种选择:

docker run -d repository
docker run -d repository:tag
docker run -d image_id

然后您可以使用以下命令检查容器是否正在运行

docker ps

docker ps给您一个容器ID。您可以使用它,也可以只使用前2/3个字符使用以下命令进入容器:

docker exec -it container_id /bin/bash

您可以使用docker stop container_id和停止它docker rm container_id

您还可以使用-rm参数运行容器,因此,如果停止容器,它将自动被删除。


1
--rm(注:2个破折号,不是单个)选项是金!!!,我的系统到处都是停止(死)的容器。
约翰·斯诺古斯

13

使用以下命令获取要运行的图像的名称或ID:

docker images

Docker run命令以以下方式使用:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

在指定图像名称或ID之前,我在下面包括了dispatch,name,publish,volume和restart选项:

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运行参考


5

这是在Docker中运行Webdev服务的示例。图像的名称是morrisjobke / webdav。您可以从Docker Hub提取它

运行这些映像之后,您可以在访问WebDAV实例http://localhost:8888/webdav。在内部,该文件夹/var/webdav用作WebDAV根目录。

您可以通过以下方式运行此容器:

$ docker run -d -e USERNAME=test -e PASSWORD=test -p 8888:80 morrisjobke/webdav

关于“运行Webdev服务”:您是说“运行WebDAV服务”吗?还是“运行Web开发服务”
彼得·莫滕森

5

我有同样的问题。我运行了Docker映像,它创建了一个具有特定CONTAINER_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

4

由于您已经从Dockerfile创建了映像,因此该映像当前未处于活动状态。为了工作,您需要在容器中运行此映像。

$ docker images命令描述了本地存储库中当前有多少个可用映像。和

docker ps -a

显示当前有多少个容器,即活动容器和退出容器的列表。

有两种方法可以在容器中运行映像:

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

在分离模式下:

-d=false: Detached mode: Run container in the background, print new container id

在交互模式下:

-i :Keep STDIN open even if not attached

这是Docker run命令

$ docker run image_name:tag_name

有关Docker运行的更多说明,您可以访问Docker运行参考

这是了解Docker的最佳材料。


2

要查看Docker主机上所有映像的列表,请运行:

  $ docker images
   REPOSITORY          TAG           IMAGE ID            CREATED             SIZE
   apache_snapshot     latest        13037686eac3        22 seconds ago      249MB
   ubuntu              latest        00fd29ccc6f1        3 weeks ago         111MB

现在,您可以以交互方式将Docker映像作为容器运行:

   $ docker run -it apache_snapshot /bin/bash

或者,如果您在本地没有任何图像,请搜索Docker Hub以下载图像:

    $ docker search ubuntu
    NAME                            DESCRIPTION             STARS  OFFICIAL  AUTOMATED
    ubuntu                          Ubuntu is a Debian...   6759   [OK]       
    dorowu/ubuntu-desktop-lxde-vnc  Ubuntu with openss...   141              [OK]
    rastasheep/ubuntu-sshd          Dockerized SSH ser...   114              [OK]
    ansible/ubuntu14.04-ansible     Ubuntu 14.04 LTS w...   88               [OK]
    ubuntu-upstart                  Upstart is an even...   80     [OK]

使用docker pull命令从存储库中提取Docker映像:

     $ docker pull ubuntu

将Docker映像作为容器运行:

     $ docker run -it ubuntu /bin/bash

0
$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED            
jamesmedice/marketplace   latest              e78c49b5f380        2 days ago          
jamesmedice/marketplace   v1.0.0              *e78c49b5f380*        2 days ago          


$ docker run -p 6001:8585 *e78c49b5f380*

1
一个解释将是有条理的。
彼得·莫滕森

-1

对于那些也有相同问题,但遇到类似错误的人

rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"bash\": executable file not found in $PATH"

我添加了一个对我有用的入口点:

docker run -it --entrypoint /bin/sh 没有Bash的图像。

示例(来自已批准的示例):

run -it --entrypoint /bin/sh ubuntu:12.04

参考:https : //gist.github.com/mitchwongho/11266726

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.