2016-08-22 7 views
-1

Я новичок в докеров. Я создал изображение в докере. Когда я пытаюсь создать контейнер, я получаю ошибку. Не знаю, как создать контейнер. Мои Dockerfile:Как создать контейнер в Docker

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 

У меня создается изображение с именем тест-изображение, используя следующую команду:

docker build -t test-image . 

Мои Докер изображения: Докер: изображения

 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-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

Какая ошибка вы получаете? – gonephishing

+1

Хороший старт - прочитать документацию докеров ... – Henry

+0

Я опубликовал сообщение об ошибке @gonephishing – malar

ответ

1

Копаться в сообщение об ошибке из вашей команды:

docker run -i -t test-image -d testing-container 

После имени изображения каждый следующий параметр/аргумент передается в контейнер для запуска (или в качестве аргумента для вашего ENTRYPOINT). В приведенной выше команде -t не требует аргументов, поэтому test-image - ваше имя изображения. Это изображение запускается как контейнер с командой -d testing-container, и докер правильно сообщает вам, что исполняемый файл -d не найден.

Чтобы запустить ваш контейнер отдельно с именем тестирования-контейнера, это очень похоже на команду Максима:

docker run -d --name=testing-container -p 8080:80 test-image 

Заметим, однако, что это не будет работать правильно, потому что ваш Dockerfile имеет несколько проблем. Недостатком является то, что вы запускаете apt-get update и apt-get install как отдельные команды RUN. При кэшировании Docker не будет повторно запускать ваше обновление в будущем, даже если вы добавите новые пакеты для установки, и поэтому вы получите ошибки, если попытаетесь добавить новые пакеты в свой список установки.Но основная ошибка заключается в том, что вы не создалиили ENTRYPOINT для запуска, поэтому ваш контейнер запустит оболочку в фоновом режиме и сразу же выйдет, так как нет никакого ввода для процесса (который может быть задан с помощью опции -it, но вы все равно не будет работать веб-сервер).

Просмотрите docker's Apache Dockerfile, чтобы лучше понять, как писать файл Docker без этих проблем. Или, если ваша цель - просто запустить Apache, вы можете run their image directly from hub.

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 
[email protected]:/# service apache2 restart 

и перейти к http://<your-local-ip>:8080, чтобы проверить это

Смежные вопросы