ホストとコンテナー間の Docker ファイルのコピー

目次

1 つは、Docker が MySQL コンテナーを実行することです。

第二に、データ量

3、データ ボリューム コンテナー

四、Dockerfile 生産強化版

5、Docker はカスタム Tomcat を作成します


1 つは、Docker が MySQL コンテナーを実行することです。

コンテナー内のデータを管理するには、主に次の 2 つの方法があります。

   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 データベースを作成し、リンク ツールで上記のコードを実行します。

実行後、データベースにリンクしてみる 

以下のエラーが発生した場合は、競合の原因である可能性があります.同じパスワードのデータベースが2つあります.リンクツールでどちらかを停止してください. (コマンドはdocker stop database nameです. )

 

コンテナからホストにファイルをコピーする

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 つ以上のコンテナーで使用できる特別なディレクトリです。

   多くの便利な機能を提供できます。

   1. コンテナー間でデータ ボリュームを共有および再利用できる

   2. データ ボリュームの変更はすぐに反映されます

   3. データ ボリュームの更新はミラーリングに影響しません

   4. コンテナーが削除されても、データ ボリュームは既定で常に存在します。

データ共有を実現するために、ホスト マシンのディレクトリをコンテナーのディレクトリと一緒にマウントします。

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

 先頭がホスト ディレクトリで、その後にコンテナ ディレクトリが続きます。

 

上記のコマンドを実行します

 

結論: ホストまたはコンテナーが指定されたディレクトリにフォルダーまたはファイルを作成するかどうかに関係なく、それらは共有されます。

3、データ ボリューム コンテナー

データ ボリューム コンテナ

   ユーザーが継続的に更新されるデータを複数のコンテナー間で共有する必要がある場合、最も簡単な方法はデータ ボリューム コンテナーを使用することです。

   データ ボリューム コンテナーもコンテナーですが、その目的は、他のコンテナーがマウントするデータ ボリュームを提供することです。

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

印の部分が内容器です 

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

 

このうち、c4 はデータ ボリューム コンテナー、c6 は通常のコンテナーであり、その中で c4 はブリッジとして機能し、docker inspect を介してコンテナーの詳細を表示できます。  

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 に編集する  

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

5、Docker はカスタム Tomcat を作成します

cd /javaxl/software
mkdir mydocker
vi mytomcatDockerfile ------------- ディレクトリを作成

 コンテンツを mytomcatDockerfile に編集する

FROM 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 CLASSPATH $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      --------- open port
ENTRYPOINT ["/home/javaxl/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"]

ADD と COPY の違い:

Add は、圧縮されたパッケージを作業ディレクトリに追加し、解凍します。

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/

おすすめ

転載: blog.csdn.net/weixin_66202611/article/details/128195911