我是码头工人的新手。我在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: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
现在我想为test-image创建一个名为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..
我不知道该怎么做。 谁能告诉我?
提前致谢。
答案 0 :(得分:2)
从您的命令中深入了解错误消息:
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
选项提供,但您仍然无法运行Web服务器。)
仔细查看docker's Apache Dockerfile,了解如何在没有这些问题的情况下编写Dockerfile。或者,如果您的目标是简单地运行Apache,则可以run their image directly from hub。
答案 1 :(得分:0)
使用此官方链接可以创建一个非常简单易用的创建:
答案 2 :(得分:0)
使用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
查看
答案 3 :(得分:0)