如何运行拉取的镜像 - Docker

39

我试图运行一个拉取的镜像,但没有成功。 我使用 Image URI 从 AWS 拉取了一个镜像。

当我运行 docker images 命令时,我可以看到我拉取的镜像:

REPOSITORY                                           TAG             IMAGE ID            CREATED             SIZE
alpine                                               3.9             055936d39205        3 weeks ago         5.53MB
24325.dkr.ecr.us-east-1.amazonaws.com/lm/rd/tools    dab-1.1.0slim   f994713b61cb        3 weeks ago         110MB
ubuntu                                               16.04           a3551444fc85        5 weeks ago         119MB
anapsix/alpine-java                                  8               745575fbfe52        3 months ago        126MB

我对Docker还不熟悉,但从我的理解来看,在拉取后无需构建,只需运行即可。但是当我尝试像这样运行它时:docker run 24325.dkr.ecr.us-east-1.amazonaws.com/lm/rd/tools,我收到了以下消息:

Unable to find image '24325.dkr.ecr.us-east-1.amazonaws.com/lm/rd/tools:latest' locally
docker: Error response from daemon: pull access denied for 24325.dkr.ecr.us-east-1.amazonaws.com/lm/rd/tools, repository does not exist or may require 'docker login'.

所以我尝试这样构建:docker build -t 24325.dkr.ecr.us-east-1.amazonaws.com/lm/rd/tools,并得到以下信息:

"docker build" requires exactly 1 argument.
See 'docker build --help'.

问题是什么? 我如何从AWS运行拉取的镜像?

6个回答

35

没有任何标签为 "latest" 的图像。 尝试使用标签 "dab-1.1.0slim" 运行。

docker run 24325.dkr.ecr.us-east-1.amazonaws.com/lm/rd/tools:dab-1.1.0slim

否则,您可以使用镜像ID运行Docker镜像。
docker run -i -t f994713b61cb

如需了解有关docker运行命令的更多信息,请查看https://docs.docker.com/engine/reference/commandline/run/


1
谢谢!那个有效。运行镜像后,我应该在容器内部,对吗?如果我运行 docker ps,我应该能看到正在运行的容器? - Bella
它似乎在容器内运行,但立即退出,并且在我键入“docker ps”时没有显示。有任何想法是为什么? - Bella
没有任何想法,创建一个新的线程,并提供来自容器的所有日志。 - Sree
等等,我有点懵,比如我从AWS拉取一个镜像,那么我是没有Dockerfile文件本身的,对吧?要运行容器,我需要Dockerfile文件本身吗?如果需要,我该如何获取它呢? - Bella
如果您使用 docker pull whatever 命令拉取了镜像,那么使用 docker images 命令将列出您已下载的镜像。从那里,您可以通过 docker run REPOSITORYdocker run IMAGEIDdocker run REPOSITORY:TAG 命令运行该镜像(无需 dockerfile)。 (大写字母表示来自 docker images 输出的相应列) - NYCdotNet

4

你可以使用简单的命令

docker run -d -p [PORT_ON_YOUR_BROWSER]:[PORT_ON_CONTAINER] <Image ID>

docker run -d -p 8080:80 <Image ID>


2

这是我通常执行这些步骤的方式:

    # download an image 
    > docker pull danielszabo99/microbin

    # list your images 
    > docker image ls
    
    REPOSITORY               TAG       IMAGE ID       CREATED        SIZE
    danielszabo99/microbin   latest    c6669d651bfe   37 hours ago   77.8MB

    
    > docker run danielszabo99/microbin

    # this image runs on port 8080 so we can also map it to a localhost 
    # port for browser access (local:remote)
    # docker run --publish 8080:8080  danielszabo99/microbin

0

尝试通过Docker镜像ID运行图像。 构建镜像时,您需要在命令的末尾添加 . ,例如: docker build -t 24325.dkr.ecr.us-east-1.amazonaws.com/lm/rd/tools .并且您需要有Dockerfile(假设您已经有了)。


我没有它... 我以为如果我拉了它,我就有它了。我怎么才能得到 Dockerfile? - Bella

0

为其他人添加一些未涵盖的信息。

使用 docker ls -al 检查可用的 Docker 镜像将会在终端输出中添加镜像 名称,从而允许使用 docker run name,这类似于使用 Sree 在他的答案中提供的 镜像 ID。然而,Docker 默认名称是易于阅读的,并且在构建容器时自动创建。


-5

如果你想运行从远程仓库拉取的 Docker 镜像,只需使用镜像 ID而不是镜像名称(仓库)。

docker run -i -t f994713b61cb /bin/bash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接