将Docker镜像作为容器运行

时间:2013-08-28 20:34:52

标签: docker docker-image

我从dockerfile构建了一个docker镜像。我看到图像已成功构建,但我该怎么做呢?它不应该能够作为容器运行吗?

码头工人的新手可能是对我的误解,任何帮助都会很棒。

11 个答案:

答案 0 :(得分:668)

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

$ 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 ):

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

没有名字,只需使用ID:

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

有关详细信息,请参阅https://docs.docker.com/engine/reference/run/

答案 1 :(得分:59)

执行以下步骤:

  1. $ docker images

    您将获得所有指定标签的本地码头图片列表。

  2. $ docker run image_name:tag_name

    如果您没有指定tag_name,它会自动运行带有最新消息的图片。标签

    您也可以指定图片ID(无tag_name),而不是image_name

答案 2 :(得分:30)

  • 列出泊坞窗图像
$ docker images
  • 如果您的应用程序想要使用端口80运行,并且您可以公开另一个端口以在本地绑定,请说8080
$ docker run -d --restart=always -p 8080:80 image_name:version

答案 3 :(得分:12)

您可以使用

查看可用的图片
docker images

然后你可以在分离模式下运行,这样你的终端仍然可用,你有几个选项可以使用存储库名称(带或不带标签)或图像标识来运行它

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_iddocker rm container_id

停止播放

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

答案 4 :(得分:8)

使用以下命令获取您要运行的图片的名称或ID: public class BlinkActivity : Activity, IGpioCallback { ~~~~ button.RegisterGpioCallback(new Handler(), this); ~~~~ // remove the Task.Run block public OnGpioEdge(Gpio gpio) { Log.Debug("SO", gpio.Value.ToString()); } ~~~~ }

docker run命令以下列方式使用:

  

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

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

docker images

docker run -d --name container-name -p localhost:80:80 -v $HOME/myContainer/configDir:/myImage/configDir --restart=always image-name

有关详细信息,请查看官方docker run reference

答案 5 :(得分:3)

以下是在docker中运行webdev服务的示例 图片的名称是 morrisjobke / webdav 。你可以从dockerhub拉它。

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

您可以按以下方式运行此容器: $ docker run -d -e USERNAME=test -e PASSWORD=test -p 8888:80 morrisjobke/webdav

答案 6 :(得分:3)

要查看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

答案 7 :(得分:2)

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

答案 8 :(得分:2)

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

$ 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 run的更多说明,您可以访问 https://docs.docker.com/engine/reference/run/

这是了解docker的最佳材料。

答案 9 :(得分: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*

答案 10 :(得分:-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