如何在docker build之后测试容器或图像?

时间:2015-05-11 04:41:07

标签: docker dockerfile

我有以下Dockerfile

############################################################
# Purpose   : Dockerize Django App to be used in AWS EC2
# Django    : 1.8.1
# OS        : Ubuntu 14.04
# WebServer : nginx
# Database  : Postgres inside RDS
# Python    : 2.7
# VERSION   : 0.1
############################################################

from ubuntu:14.04

maintainer Kim Stacks, kimcity@gmail.com

# make sure package repository is up to date
run echo "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) main universe" > /etc/apt/sources.list

run apt-get update

# install python

# install nginx

在我的VM中,我执行了以下操作:

docker build -t ubuntu1404/djangoapp .

成功。

如何运行泊坞窗图像? 图片或容器在哪里?

我已经尝试过运行

docker run ubuntu1404/djangoapp

什么都没发生。

我在运行docker images

时看到的内容
root@vagrant-ubuntu-trusty-64:/var/virtual/Apps/DockerFiles/Django27InUbuntu# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu1404/djangoapp   latest              cfb161605c8e        10 minutes ago      198.3 MB
ubuntu                 14.04               07f8e8c5e660        10 days ago         188.3 MB
hello-world            latest              91c95931e552        3 weeks ago         910 B

当我运行docker ps时,没有任何内容显示

3 个答案:

答案 0 :(得分:14)

您必须提供容器必须处理的命令。

示例: sh

你可以尝试:

docker run -ti yourimage sh

( - ti用于保持终端打开)

如果要启动守护程序(如服务器),则必须输入以下内容:

docker run -d yourimage daemontolaunch

使用docker help run获取更多选项。

您还可以在Dockerfile中使用CMD instruction设置默认行为,这样您就不必在每次要运行它时都将此命令提供给容器。

编辑 - 关于容器移除:

容器和图像不同。 容器是图像的实例。 您可以从同一图像中运行多个容器。

当运行的进程终止时,容器会自动停止。 但是容器没有被删除(只是停止了,所以你可以重新启动它)。 但是如果你想删除它(删除容器不会删除图像),你有两种方法可以做:

  • 通过向--rm添加docker run选项,在流程结束时自动将其删除。

  • 使用docker rm命令手动删除它,并为其提供容器ID或其名称(在删除容器之前必须先停止容器,为此使用docker stop

  • p>

有用的命令:

使用docker ps列出容器。 -q仅显示容器ID,-a显示甚至已停止的容器。

更多here

编辑2:

如果您没有尝试,

This也可以帮助您发现码头工具。

答案 1 :(得分:5)

  

如何在建立泊坞窗后测试容器或图像?

为了测试你可以添加写bash脚本来完成工作http://docker-blog.jevsejev.io/2016/06/09/docker-image-tests/

顺便说一句,从帖子中我发现它与标题中的问题不符。

所以,为根据标题来到这里的灵魂添加链接......

答案 2 :(得分:0)

  1. https://github.com/dgroup/docker-unittests/releases下载最新的阴影距离:

    wget https://github.com/dgroup/docker-unittests/releases/download/s1.1.1/docker-unittests-app-1.1.1.jar
    
    
  2. 使用测试定义* .yml文件。

    
    version: 1.1
    
    setup:
    - apt-get update
    - apt-get install -y tree
    
    tests:
    
    - assume: java version is 1.9, Debian build
     cmd:    java -version
     output:
       contains:
        - openjdk version "9.0.1"
        - build 9.0.1+11-Debian
    
    - assume: curl version is 7.xxx
     cmd:    curl --version
     output:
       startsWith: curl 7.
       matches:
        - "^curl\\s7.*\\n.*\\nProtocols.+ftps.+https.+telnet.*\\n.*\\n$"
       contains:
        - AsynchDNS IDN IPv6 Largefile GSS-API
    
    - assume:  Setup section installed `tree`
     cmd:     tree --version
     output:
       contains: ["Steve Baker", "Florian Sesser"]
    
    
  3. 运行图像测试
    java -jar docker-unittests.jar -f image-tests.yml -i openjdk:9.0.1-11
    
    https://i.stack.imgur.com/DSv72.png