Копирование Docker-файла между хостом и контейнером

Оглавление

Во-первых, Docker запускает контейнер MySQL.

Во-вторых, объем данных

Три, контейнер объема данных

Четыре, расширенная производственная версия Dockerfile.

В-пятых, Docker делает кастомный Tomcat


Во-первых, Docker запускает контейнер MySQL.

Существует два основных способа управления данными в контейнерах:

   Данные в контейнере Data Volumes напрямую сопоставляются с локальной средой хоста;

   Контейнеры томов данных (контейнеры томов данных используют специальные контейнеры для хранения томов данных).

Установите службу MySQL, используя образ MySQL.

docker run -p 3307:3306 --name mysql1   -di -v /home/javaxl/data/mysql/mysql.conf.d/:/etc/mysql/mysql.conf.d/ -v /home/javaxl/data/mysql/data/:/var/lib/mysql -v /home/javaxl/data/mysql/log/:/var/log -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

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

После выполнения попробуйте связать в базе данных 

Когда возникает следующая ошибка, это может быть причиной конфликта.Есть две базы данных с одинаковым паролем, просто остановите одну из них в инструменте ссылки (команда выглядит следующим образом: docker stop имя базы данных )

 

Скопируйте файлы из контейнера на хост

docker cp tomcat1:/usr/local/tomcat/webapps/hello/javadxy/software/apache-tomcat-8.5.20/webapps

 

Копировать файлы с хоста в контейнер (и наоборот)

docker cp /javadxy/software/apache-tomcat-8.5.20/webapps tomcat1:/usr/local/tomcat/

 

 

Во-вторых, объем данных

Том данных — это специальный каталог, доступный для одного или нескольких контейнеров , который напрямую отображает каталоги операционной системы хоста в контейнеры.

   Он может предоставить множество полезных функций:

   1. Объемы данных можно совместно использовать и повторно использовать между контейнерами.

   2. Изменения объема данных вступают в силу немедленно.

   3. Обновления томов данных не повлияют на зеркалирование

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

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

docker run -di --name c2 -v /home/dxy/data/:/home/xionger/data/ centos:7

 Спереди находится каталог хоста, за которым следует каталог контейнера.

 

Выполните указанную выше команду

 

Вывод: Независимо от того, создает ли хост или контейнер папки или файлы в указанном каталоге, они будут общими;

Три, контейнер объема данных

контейнер объема данных

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

   Контейнер томов данных также является контейнером , но его цель — предоставить тома данных для монтирования других контейнеров.

docker run -di -v /home/javadxy/data/c4 --name c4 centos:7

Отмеченная часть принадлежит внутреннему контейнеру 

docker run -di --volumes-from c4 --name c6 centos:7

 

Среди них с4 — контейнер тома данных, а с6 — обычный контейнер, между которыми с4 выступает мостом, детали контейнера мы можем просмотреть через docker inspect  

докер проверяет c4

 

docker inspect c6 (рекомендуется скопировать этот раздел и использовать его позже)

 

Вы обнаружите, что монтирование каталогов c4 и c6 одинаково.

Вывод: Независимо от того, создают ли c4 и c6 папки или файлы в указанном каталоге, они будут общими;

 

Четыре, расширенная производственная версия Dockerfile.

Настройте Centos с помощью функций vim и ifconfig (почувствуйте значение изучения Dockerfile)

cd /javaxl/software
mkdir mydocker
vi mycentosDockerfile

построить образ

 docker build -f mycentosDockerfile -t javadxy/centos:v1.0 .

 Запустите контейнер из образа для тестирования

docker run -it --name mc1 javadxy/centos:v1.0/bin/bash

Редактировать содержимое в mycentosDockerfile  

ОТ Centos:7
MAINTAINER javaxl "[email protected]"
RUN yum -y install vim
RUN yum install net-tools.x86_64 -y
CMD /bin/bash

В-пятых, Docker делает кастомный Tomcat

cd /javaxl/software
mkdir mydocker
vi mytomcatDockerfile ------------- создать каталог

 Изменить содержимое в mytomcatDockerfile

ОТ Centos:7   
MAINTAINER javaxl "[email protected]"

ENV workerDir /home/javaxl/dockerfile/3 ---------------- представляет контейнер, который автоматически переходит к контейнеру
WORKDIR $workerDir

ADD jdk-8u151-linux-x64.tar.gz $workerDir
COPY apache-tomcat-8.5.20.tar.gz $workerDir
RUN tar -xvf apache-tomcat-8.5.20.tar.gz apache-tomcat-8.5.20

ENV JAVA_HOME $workerDir/jdk1.8.0_151
ENV ПУТЬ К КЛАССУ $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV TOMCAT_HOME $workerDir/apache-tomcat-8.5.20
ENV PATH $JAVA_HOME/bin:$TOMCAT_HOME/ bin:$TOMCAT_HOME/lib:$PATH ---------配置变量

EXPOSE 8080      --------- открыть порт
ENTRYPOINT ["/home/javaxl/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"]

Разница между ДОБАВИТЬ и КОПИРОВАТЬ:

Добавить — добавить сжатый пакет в рабочий каталог и распаковать его.

copy только загружает сжатый пакет в рабочий каталог, не распаковывая его

Совет: После выполнения вышеуказанных шагов следующие команды не могут быть выполнены напрямую, в зависимости от того, есть ли файл jdk в текущем каталоге. 

 После того, как вышеперечисленное не проблема, выполните следующую команду

docker build -f mytomcatDockerfile -t javaxl/tomcat8:v1.0 .

завершите, как показано 

 

Запустите 2 контейнера через зеркало для тестирования

 docker run -di --name mt1 -P javaxl/tomcat8:v1.0
 docker run -di --name mt2 -P javaxl/tomcat8:v1.0

 

Затем введите адрес в браузере для доступа к Tomcat. 

http://192.168.195.139:49153/
http://192.168.195.139:49154/

Supongo que te gusta

Origin blog.csdn.net/weixin_66202611/article/details/128195911
Recomendado
Clasificación