docker构建后如何测试容器或镜像?
How to test the container or image after docker build?
我有以下 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 图片?
镜像或容器在哪里?
我已经试过了运行宁
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
时,没有任何显示
您必须给出容器必须处理的命令。
示例:sh
你可以试试 :
docker run -ti yourimage sh
(-ti 用于保持终端打开)
如果你想启动一个守护进程(比如服务器),你必须输入如下内容:
docker run -d yourimage daemontolaunch
使用 docker help run
以获得更多选项。
您还可以在 Dockerfile 中使用 CMD instruction 设置默认行为,这样您就不必在每次要 运行 时都向容器提供此命令。
编辑 - 关于容器删除:
容器和镜像不同。
容器是图像的实例。
您可以 运行 来自同一图像的多个容器。
容器在进程 运行 终止时自动停止。
但是容器并没有被删除(只是停止了,所以你可以重新启动它)。
但是如果你想删除它(删除容器不会删除图像)你有两种方法:
通过在 docker run
中添加 --rm
选项在过程结束时自动删除它。
使用docker rm
命令手动删除它并给它容器ID或它的名称(容器必须在删除前停止,为此使用docker stop
).
一个有用的命令:
使用docker ps
列出容器。 -q 仅显示容器 ID,-a 甚至显示已停止的容器。
更多here.
编辑 2:
This 也可以帮助你发现 docker 如果你没有尝试过。
How to test the container or image after docker build?
为了测试,您可以添加编写一个 bash 脚本来完成工作 https://blog.brazdeikis.io/posts/docker-image-tests
顺便说一句,从 post 来看,我发现它与标题中的问题不符。
所以,根据标题为到达这里的灵魂添加了link...
从https://github.com/dgroup/docker-unittests/releases下载最新的shaded dist:
wget https://github.com/dgroup/docker-unittests/releases/download/s1.1.1/docker-unittests-app-1.1.1.jar
用测试定义 *.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"]
- 运行 图像测试
java -jar docker-unittests.jar -f image-tests.yml -i openjdk:9.0.1-11
https://i.stack.imgur.com/DSv72.png
我有以下 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 图片? 镜像或容器在哪里?
我已经试过了运行宁
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
时,没有任何显示
您必须给出容器必须处理的命令。
示例:sh
你可以试试 :
docker run -ti yourimage sh
(-ti 用于保持终端打开)
如果你想启动一个守护进程(比如服务器),你必须输入如下内容:
docker run -d yourimage daemontolaunch
使用 docker help run
以获得更多选项。
您还可以在 Dockerfile 中使用 CMD instruction 设置默认行为,这样您就不必在每次要 运行 时都向容器提供此命令。
编辑 - 关于容器删除:
容器和镜像不同。 容器是图像的实例。 您可以 运行 来自同一图像的多个容器。
容器在进程 运行 终止时自动停止。 但是容器并没有被删除(只是停止了,所以你可以重新启动它)。 但是如果你想删除它(删除容器不会删除图像)你有两种方法:
通过在
docker run
中添加--rm
选项在过程结束时自动删除它。使用
docker rm
命令手动删除它并给它容器ID或它的名称(容器必须在删除前停止,为此使用docker stop
).
一个有用的命令:
使用docker ps
列出容器。 -q 仅显示容器 ID,-a 甚至显示已停止的容器。
更多here.
编辑 2:
This 也可以帮助你发现 docker 如果你没有尝试过。
How to test the container or image after docker build?
为了测试,您可以添加编写一个 bash 脚本来完成工作 https://blog.brazdeikis.io/posts/docker-image-tests
顺便说一句,从 post 来看,我发现它与标题中的问题不符。
所以,根据标题为到达这里的灵魂添加了link...
从https://github.com/dgroup/docker-unittests/releases下载最新的shaded dist:
wget https://github.com/dgroup/docker-unittests/releases/download/s1.1.1/docker-unittests-app-1.1.1.jar
用测试定义 *.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"]
- 运行 图像测试
https://i.stack.imgur.com/DSv72.pngjava -jar docker-unittests.jar -f image-tests.yml -i openjdk:9.0.1-11