我是码头工人的新手。我已经在 docker 中创建了一个镜像。当我尝试创建容器时出现错误。不确切知道如何创建容器。 我的 Dockerfile:
FROM ubuntu:14.04
RUN apt-get update --fix-missing
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install php5 php5-common php5-dev php5-json php5-mysql php5-cli php5-curl php5-imap php5-mcrypt php5-readline apache2 libapache2-mod-php5
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
RUN chown -R www-data:www-data /var/www/
RUN a2enmod rewrite
EXPOSE 80
我使用此命令创建了一个名为 test-image 的图像:
docker build -t test-image .
我的 docker 镜像是:docker:images
REPOSITORY TAG IMAGE ID CREATED SIZE
cli-image latest 245dbd83afa4 4 hours ago 421.3 MB
test-image latest 245dbd83afa4 4 hours ago 421.3 MB
pma latest 073a46684e78 3 weeks ago 57.64 MB
mysql latest 14b396e4d628 3 weeks ago 156.3 MB
debian latest 1b01529cc499 3 weeks ago 125.1 MB
ror latest dd1f2f09425e 3 weeks ago 778.5 MB
alpine 3.3 47cf20d8c26c 8 weeks ago 4.797 MB
buildpack-deps jessie 877c36103ed7 10 weeks ago 619.5 MB
tnqdockerregistry.com:5000/scrutinzer latest f7daff1a756f 6 months ago 96.28 MB
vtool latest f726e6601c45 8 months ago 956 MB
vtooljava latest f726e6601c45 8 months ago 956 MB
rmqimage latest c6a9a19e3288 8 months ago 254.3 MB
ubuntu 14.04 06ab2de020f4 8 months ago 187.9 MB
hello-world latest 690ed74de00f 10 months ago 960 B
现在我想为测试图像创建一个名为testing-container的容器。
我输入此命令来创建容器:
docker run -i -t test-image -d testing-container
我收到此错误:
docker: Error response from daemon: Container command '-d' not found or does not exist..
我不知道该怎么做。 谁能告诉我吗?
提前致谢。
要深入了解命令中的错误消息:
docker run -i -t test-image -d testing-container
在图像名称之后,以下每个选项/参数都会传递到要运行的容器(或作为参数传递给您的
ENTRYPOINT
)。在上面的命令中,-t
不需要参数,因此test-image
是您的图像名称。该映像使用命令 -d testing-container
作为容器运行,并且 docker 正确地告诉您未找到可执行文件 -d
。
要运行名为testing-container的分离容器,它与Maxim的命令非常相似:
docker run -d --name=testing-container -p 8080:80 test-image
但请注意,这将无法正常工作,因为您的 Dockerfile 有一些问题。小一点是您将
apt-get update
和 apt-get install
作为单独的 RUN
命令运行。通过缓存,即使您添加要安装的新软件包,Docker 将来也不会重新运行更新,因此如果您尝试将新软件包添加到安装列表中,您将会收到错误消息。但主要错误是您没有创建 CMD
或 ENTRYPOINT
来运行,因此您的容器将在后台启动 shell 并立即退出,因为没有要处理的输入(可以使用 -it
给出)
选项,但您仍然不会运行网络服务器)。
查看 docker 的 Apache Dockerfile,以更好地了解如何编写没有这些问题的 Dockerfile。或者,如果您的目标只是运行 Apache,您可以 直接从 hub 运行他们的映像。
可以使用此官方链接创建一个非常简单且容易的创作:
使用 docker run 命令。
举个例子:
docker run -t --name=testing-container -p <your-local-ip>:8080:80 test-image
ctrl+c
docker exec -it testing-container /bin/bash
root@3b9ff3f91a56:/# service apache2 restart
然后前往
http://<your-local-ip>:8080
查看此内容