目次
1 つは、Docker が MySQL コンテナーを実行することです。
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.20ENV 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/