671

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

4

11 回答 11

961

运行它的具体方式取决于你是否给图像一个标签/名称。

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

于 2013-08-28T21:14:50.127 回答
85

执行以下步骤:

  1. $ docker images

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

  2. $ docker run image_name:tag_name

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

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

于 2016-05-17T07:04:32.787 回答
42
  • 列出 Docker 映像

    $ docker images
    
  • 如果您的应用程序想使用端口 80 运行,并且您可以公开一个不同的端口以在本地绑定,例如 8080:

    $ docker run -d --restart=always -p 8080:80 image_name:version
    
于 2017-08-08T05:47:47.890 回答
27

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

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_idand停止它docker rm container_id

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

于 2018-05-07T06:50:13.967 回答
14

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

docker images

Docker 运行命令的使用方式如下:

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

于 2018-06-13T00:12:11.600 回答
9

我有同样的问题。我运行了我的 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
于 2018-10-29T09:08:31.297 回答
6

这是在 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
于 2017-03-03T05:58:15.020 回答
5

由于您已从 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 运行命令

$ docker run image_name:tag_name

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

是了解 Docker 的最佳材料。

于 2019-02-22T08:36:34.560 回答
5

要查看 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
于 2020-02-14T15:05:34.257 回答
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*
于 2019-09-16T11:40:58.310 回答
0

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

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

于 2019-09-03T03:22:03.227 回答