Облачная платформаAdvanced

Создание Dockerfile

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Образ является основой контейнера. Контейнер работает на основе содержимого, определённого в образе. Образ состоит из нескольких слоёв. Каждый слой включает изменения, сделанные на основе предыдущего слоя.

Обычно Dockerfile используется для настройки образов. Dockerfile — это текстовый файл, содержащий различные инструкции. Каждая инструкция используется для создания слоя образа и описывает, как построить слой образа.

В этом разделе описывается, как написать Dockerfile.

Note

Dockerfile различаются в зависимости от приложений. Dockerfile необходимо писать, исходя из реальных требований к сервису.

Процедура

  1. Войдите как пользователь root на устройстве, на котором работает Docker.
  2. Создайте Dockerfile.

    vi Dockerfile

    Содержимое выглядит следующим образом:

    # CentOS 7.1.1503 is used as the base image.
    FROM centos:7.1.1503
    # Create a folder to store data and dependency files. You are advised to write multiple commands into one line to reduce the image size.
    RUN mkdir -p /usr/local/mongodb/data \
    && mkdir -p /usr/local/mongodb/bin \
    && mkdir -p /root/apache-tomcat-7.0.82 \
    && mkdir -p /root/jdk1.8.0_151
    # Copy the files in the apache-tomcat-7.0.82 directory to the container path.
    COPY ./apache-tomcat-7.0.82 /root/apache-tomcat-7.0.82
    # Copy the files in the jdk1.8.0_151 directory to the container path.
    COPY ./jdk1.8.0_151 /root/jdk1.8.0_151
    # Copy the files in the mongodb-linux-x86_64-rhel70-3.2.9 directory to the container path.
    COPY ./mongodb-linux-x86_64-rhel70-3.2.9/bin /usr/local/mongodb/bin
    # Copy start_tomcat_and_mongo.sh to the /root directory of the container.
    COPY ./start_tomcat_and_mongo.sh /root/
    # Enter Java environment variables.
    RUN chown root:root -R /root \
    && echo "JAVA_HOME=/root/jdk1.8.0_151 " >> /etc/profile \
    && echo "PATH=\$JAVA_HOME/bin:$PATH " >> /etc/profile \
    && echo "CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar" >> /etc/profile \
    && chmod +x /root \
    && chmod +x /root/start_tomcat_and_mongo.sh
    # When the container is started, commands in start_tomcat_and_mongo.sh are automatically run. The file can be one or more commands, or a script.
    ENTRYPOINT ["/root/start_tomcat_and_mongo.sh"]

    В приведённой выше информации:

    • FROM оператор: указывает, что centos:7.1.1503 используется в качестве базового образа.
    • Run оператор: указывает, что в контейнере выполняется команда оболочки.
    • COPY оператор: указывает, что файлы с локального компьютера копируются в контейнер.
    • ENTRYPOINT оператор: указывает команды, которые выполняются после запуска контейнера.