将Docker镜像作为容器运行

Run a Docker Image as a Container

我用一个dockerfile创建了一个docker图像。我看到图像被成功地构建了,但是我该怎么处理它呢?难道它不能作为一个容器运行吗?

对于Docker来说,这可能是一个误会,任何帮助都是很好的。


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

1
2
3
4
$ 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):

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

没有名字,只需使用ID:

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

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


执行以下步骤:

  • $ docker images

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

  • $ docker run image_name:tag_name

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

    您还可以指定图像ID(无标记名称),而不是image_name


    • 列出Docker图像
    1
    $ docker images
    • 如果您的应用程序想要使用端口80运行,并且您可以公开一个不同的端口来进行本地绑定,比如8080
    1
    $ docker run -d --restart=always -p 8080:80 image_name:version

    您可以使用

    1
    docker images

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

    1
    docker run -d myimage

    然后您可以使用

    1
    docker ps

    docker ps给你一个docker id,你可以使用它或者只使用2/3 first字符进入你的容器

    1
    docker exec -it container_id /bin/bash

    你可以用docker stop container_iddocker rm container_id来阻止它。

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


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

    docker run命令的使用方式如下:

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

    在下面,在指定映像名称或ID之前,我已经包含了分派、名称、发布、卷和重新启动选项:

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


    下面是一个在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


    由于您已经从Docker文件创建了一个映像,所以该映像当前未处于活动状态。为了工作,您需要在容器中运行此图像。

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

    1
    docker ps -a

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

    在容器中运行图像有两种方法

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

    处于分离模式

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

    在交互模式下

    1
    -i :Keep STDIN open even if not attached

    这是docker run命令

    1
    $ docker run image_name:tag_name

    有关docker run的更多说明,您可以访问https://docs.docker.com/engine/reference/run网站/

    这是理解Docker最好的材料。


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