将Docker镜像作为容器运行

boo*_*oom 538 docker docker-image

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

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

And*_*ndy 768

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

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

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

$ docker run -i -t ubuntu:12.04 /bin/bash
Run Code Online (Sandbox Code Playgroud)

没有名称,只需使用ID:

$ docker run -i -t 8dbd9e392a96 /bin/bash
Run Code Online (Sandbox Code Playgroud)

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

  • `docker ps`列出容器,而不是图像.如果要从容器创建映像,则必须"docker commit".您可以在提交中使用_NAME_(例如`docker commit _NAME_ _imagename_`) (9认同)
  • @Andy为什么我们最后使用/ bin/bash?我也是新人 (6认同)
  • @RaheelKhan Becaue您的码头图像需要运行的东西.您可以使用已安装的程序替换它./ bin/bash只是一个已经安装好的shell. (6认同)
  • 因此,在"docker ps -a"中的"NAME"下打印的人性化名称在这里没用吗? (4认同)

kal*_*ari 63

请执行以下步骤:

  1. $ docker images

    您将获得指定标签的所有本地docker图像的列表.

  2. $ docker run image_name:tag_name

    如果您没有指定tag_name它将自动运行带有'latest'标签的图像.

    而不是image_name您也可以指定图像ID(没有tag_name).


Mur*_*kal 33

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

  • 通常应始终使用此“--restart=always”选项。 (2认同)

amd*_*dev 19

您可以使用以查看可用图像

docker images
Run Code Online (Sandbox Code Playgroud)

然后您可以在分离模式下运行

docker run -d repository
docker run -d repository:tag
docker run -d image_id
Run Code Online (Sandbox Code Playgroud)

然后,您可以检查您的容器是否正在运行

docker ps
Run Code Online (Sandbox Code Playgroud)

docker ps给你一个docker id,你可以使用它或只使用2/3第一个字符来使用你的容器

docker exec -it container_id /bin/bash
Run Code Online (Sandbox Code Playgroud)

您可以使用停止docker psdocker stop container_id

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

  • --rm(注意:2 个破折号不是单个破折号)选项是黄金!!!,我的系统中到处都是停止(死)的容器。 (2认同)

JSO*_*C11 11

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

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

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

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

docker images
Run Code Online (Sandbox Code Playgroud)

__CODE__

有关更多信息,请查看官方docker运行参考


小智 8

我有同样的问题。我运行了我的 Docker 镜像,它创建了一个具有特定 CONTAINER_ID 的容器。我想使用同一个容器:

首先运行你的 Docker 镜像:

docker run -it -p 8888:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning
Run Code Online (Sandbox Code Playgroud)

然后列出您制作的所有容器:

sudo docker ps -a
Run Code Online (Sandbox Code Playgroud)

并选择您要使用的容器(我的是 167ddd6d7f15):

sudo docker start -ai 167ddd6d7f15
Run Code Online (Sandbox Code Playgroud)


小智 8

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

  $ docker images
   REPOSITORY          TAG           IMAGE ID            CREATED             SIZE
   apache_snapshot     latest        13037686eac3        22 seconds ago      249MB
   ubuntu              latest        00fd29ccc6f1        3 weeks ago         111MB
Run Code Online (Sandbox Code Playgroud)

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

   $ docker run -it apache_snapshot /bin/bash
Run Code Online (Sandbox Code Playgroud)

或者,如果您本地没有任何镜像,请搜索 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]
Run Code Online (Sandbox Code Playgroud)

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

     $ docker pull ubuntu
Run Code Online (Sandbox Code Playgroud)

将 Docker 镜像作为容器运行:

     $ docker run -it ubuntu /bin/bash
Run Code Online (Sandbox Code Playgroud)


小智 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
Run Code Online (Sandbox Code Playgroud)


小智 5

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

$ docker images命令描述了本地存储库中当前可用的图像数量。和

docker ps -a
Run Code Online (Sandbox Code Playgroud)

显示当前可用的容器数量,即活动和退出容器的列表。

在容器中运行镜像有两种方式:

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
Run Code Online (Sandbox Code Playgroud)

在分离模式下:

-d=false: Detached mode: Run container in the background, print new container id
Run Code Online (Sandbox Code Playgroud)

在交互模式下:

-i :Keep STDIN open even if not attached
Run Code Online (Sandbox Code Playgroud)

这是 Docker 运行命令

$ docker run image_name:tag_name
Run Code Online (Sandbox Code Playgroud)

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

是了解 Docker 的最佳材料。