一般的な Dockerfile 命令の紹介
Dockerfileを使用してシンプルなnginxWebイメージを作成する#まず IPv4 転送を有効にします echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p ネット.ipv4.ip_forward = 1 #nginxミラーディレクトリを作成します mkdir -p dockerfile/lib/centos/nginx dockerfile/lib/centos/nginx をコピーします #Dockerfileファイルを準備する vim Dockerfile FROM centos:7 #新しいイメージはどのイメージに基づいて構築されていますか? (構築された nginx は centos7 に基づいており、centos7 のシステム サポートに依存しています。イメージがない場合は、自動的にダウンロードされます。) MAINTAINER wk #イメージプロデューサー RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel #イメージをビルドするときにシェルコマンドを実行し、yum は nginx の依存パッケージをインストールします ADD nginx-1.12.1.tar.gz /tmp #ファイルまたはディレクトリをイメージにコピーし、圧縮ファイルを自動的に解凍します RUN cd /tmp/nginx-1.12.1 && \ #シェルコマンドを実行して nginx をコンパイルおよびインストールします。make -j は 2 つのスレッドでコンパイルします。/configure --prefix=/usr/local/nginx && \ make -j 2 && \ インストールする RUN rm -rf /tmp/nginx-1.12.1* && yum clean all # nginx ソース パッケージを削除し、yum キャッシュをクリアして、コンテナーを可能な限り軽量にします。 COPY nginx.conf /usr/local/nginx/conf # ファイルまたはディレクトリをイメージにコピーします。 WORKDIR /usr/local/nginx # RUN、CMD、ENTRYPOINT、COPY、ADD の作業ディレクトリを設定します (コンテナーに入るときにデフォルトで切り替えられるディレクトリを指定します)。 EXPOSE 80 #コンテナのポート番号を宣言します CMD ["./sbin/nginx", "-g", "daemon off;"] #コンテナの実行時に実行されるシェルコマンド -g daemon off は、nginx をデーモンプロセスとして起動しません。つまり、nginx をバックグラウンドで起動しません #準備したnginx-1.12.1.tar.gzとnginx.conf設定ファイルを現在のディレクトリにコピーします。ls Dockerファイル nginx-1.12.1.tar.gz nginx.conf #nginx に基づいて docker イメージをビルドします。docker build -t nginx:1 。 #nginx メイン設定ファイル cat conf/nginx.conf ユーザー root; ワーカープロセスは自動です。 error_log ログ/error.log 情報; pid ログ/nginx.pid; イベント { epoll を使用します。 } http { mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log ログ/access.log メイン; ファイル送信オン; キープアライブタイムアウト65; サーバー{ 聞く 80; server_name ローカルホスト; ルートhtml; インデックス index.html index.php; 場所 ~ \.php$ { ルートhtml; fastcgi_pass lnmp_php:9000; #lnmp_ph は php コンテナのホスト名で、php の IP アドレスに対応します fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_params を含めます。 } } } PHPウェブサイトプラットフォームイメージを構築する#PHPのミラーディレクトリを作成する mkdir -p /root/dockerfile/lib/centos/php cd /root/dockerfile/lib/centos/php #Dockerfileファイルを準備する vim Dockerfile FROM centos:7 #新しいイメージは centos7 イメージに基づいています MAINTAINER wk #新しいイメージ プロデューサー RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel #シェルを実行して依存関係をインストールします ADD php-5.6.31.tar.gz /tmp/ #インストール パッケージを /tmp に配置し、自動的に解凍します RUN cd /tmp/php-5.6.31 && \ #php をコンパイルしてインストールし、php スタートアップ ファイルをコピーします。そして、スタートアップ ファイルの設定を変更します。/configure --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --with-mysql --with-mysqli \ --openssl 付き --zlib 付き --curl 付き --gd 付き \ --with-jpeg-dir --with-png-dir --with-iconv \ --enable-fpm --enable-zip --enable-mbstring && \ make -j 4 && \ インストールする && \ cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && \ sed -i "s/127.0.0.1/0.0.0.0/" /usr/local/php/etc/php-fpm.conf && \ sed -i "21a \daemonize = no" /usr/local/php/etc/php-fpm.conf COPY php.ini /usr/local/php/etc #メインのPHP設定ファイルをコピーします RUN rm -rf /tmp/php-5.6.31* && yum clean all #未使用のファイルを削除し、yumキャッシュをクリアして、コンテナを可能な限り軽量にします WORKDIR /usr/local/php #PHPプログラムの場所でもあるコンテナに入ります EXPOSE 9000 #ポート9000を開きます CMD ["./sbin/php-fpm", "-c", "/usr/local/php/etc/php-fpm.conf"] #php -c を開いてメインの設定ファイルを指定します #準備した php.ini ファイルと php-5.6.31.tar.gz を現在のディレクトリにコピーします ls Dockerファイル php-5.6.31.tar.gz php.ini #php に基づいて docker イメージをビルドします。docker build -t php:1 。 nginx-phpネットワーク環境を作成し、コンテナを起動します#lnmpというネットワークを作成するdocker network create lnmp お父さん428646d8f8278f36b80b3b960493aee8be1960bb1f505bfeebc97022b6385 docker ネットワーク ls ネットワーク ID 名前 ドライバー スコープ 0604a9338e1b ブリッジ ブリッジ ローカル b68e9da0b1e6 ホスト ホスト ローカル dad428646d8f lnmp ブリッジ ローカル cf4b2d0b4394 なし null ローカル #nginx-php Webページマウントディレクトリを作成する mkdir -p /www #php コンテナを起動します docker run -dit --name lnmp-php --net lnmp --mount type=bind,src=/www,dst=/usr/local/nginx/html php:1 5b49fc160f9e42364238a937149bbb475036b8a28feddf0fe05c1e70b414a151 #nginx コンテナを起動します docker run -dit --name lnmp-nginx --net lnmp -p 8888:80 --mount type=bind,src=/www,dst=/usr/local/nginx/html nginx:1 7ce4d14cf756859e814186090a12b770916f150ed2a5fab2f0dc6ba8c347aab8 ドッカーps -a コンテナID イメージ コマンド 作成ステータス ポート名 7ce4d14cf756 nginx:1 "./sbin/nginx -g 'da..." 16 秒前 15 秒前に起動 0.0.0.0:8888->80/tcp lnmp-nginx 5b49fc160f9e php:1 "./sbin/php-fpm -c /…" 6 分前 6 分前 9000/tcp lnmp-php #テストページを作成するphp.info echo "<?php phpinfo();?>" > /www/index.php ブラウザ経由でアクセステスト JAVAウェブサイト環境イメージを構築する#Java イメージビルド保存ディレクトリを作成する mkdir -p dockerfile/lib/centos/tomcat cd dockerfile/lib/centos/tomcat #必要なソフトウェアパッケージを現在のディレクトリにコピーします ls apache-tomcat-8.0.46.tar.gz Dockerファイル jdk-8u45-linux-x64.tar.gz server.xml #Dockerfileを準備する vim Dockerファイル Centos:7より メンテナーwk ADD jdk-8u45-linux-x64.tar.gz /usr/local #javaJDK 環境を作成 ENV JAVA_HOME /usr/local/jdk1.8.0_45 #環境変数を強制的に生成 ADD apache-tomcat-8.0.46.tar.gz /usr/local #tomcat を解凍 COPY server.xml /usr/local/apache-tomcat-8.0.46/conf # 設定ファイルをコピーしますRUN rm -f /usr/local/*.tar.gz # インストール パッケージ container lightweight を削除しますWORKDIR /usr/local/apache-tomcat-8.0.46 # 作業ディレクトリ コンテナーが配置されているディレクトリを入力しますEXPOSE 8080 # ポートをマップしますENTRYPOINT ["./bin/catalina.sh", "run"] # catalina を使用します。 sh runはTomcatをフォアグラウンドで起動します #tomcat に基づいてミラーを構築します docker build -t tomcat:1 。 #Webマウントディレクトリを作成する mkdir -p /app #Tomcat コンテナ プロセスを開始します。docker run -dit --name=tomcat -p 8080:8080 --network lnmp --mount type=bind,src=/app/,dst=/usr/local/apache-tomcat-8.0.46/webapps tomcat:1 ドッカーps -a コンテナID イメージ コマンド 作成ステータス ポート名 15eca19688ca tomcat:1 "./bin/catalina.sh r..." 17 秒前 16 秒前にアップ 0.0.0.0:8080->8080/tcp tomcat 7ce4d14cf756 nginx:1 "./sbin/nginx -g 'da..." 2 時間前 約 1 時間前 0.0.0.0:8888->80/tcp lnmp-nginx 5b49fc160f9e php:1 "./sbin/php-fpm -c /…" 2 時間前 約 1 時間前 9000/tcp lnmp_php #ウェブサイトのテストページを作成する mkdir /app/ROOT vim /app/ROOT/index.html dd ... プロジェクト全体をワンクリックでパッケージ化して展開Docker Compose の使い方 Compose は、Python で記述された複数のコンテナを定義および管理するためのツールです。 Compose 構成ファイルを使用して、使用するイメージ、データ ボリューム、ネットワーク、マップされたポートなど、複数のコンテナー アプリケーションのアーキテクチャを記述します。その後、1 つのコマンドで、開始、停止、再起動などのすべてのサービスを管理します。 インストール docker-compose-linux-x86_64.zip を解凍します。 アーカイブ: docker-compose-linux-x86_64.zip 膨張: docker-compose ll ドッカーコンポーズ -rw-r--r-- 1 ルート ルート 8858496 2017年8月31日 docker-compose chmod +x docker-compose docker-compose を実行します。 YAMLファイルの形式と書き方の注意点 YAML は、非常に直感的なマークアップ言語と高い可読性を備えたデータシリアル化形式です。 XMLデータ記述言語に似ていますが、構文はXMLよりもはるかにシンプルです。 YAML データ構造はインデントで示され、連続する項目はマイナス記号で示され、キーと値のペアはコロンで区切られ、配列は角括弧で囲まれ、ハッシュは中括弧で囲まれます。 YAML ファイル形式に関する注意事項:
設定ファイルの共通フィールド
一般的なコマンド |
フィールド | 説明する |
---|---|
建てる | サービスを再構築する |
追伸 | コンテナの一覧 |
上 | コンテナの作成と起動 |
実行者 | コンテナ内でコマンドを実行する |
規模 | 起動するサービスコンテナの数を指定します |
トップ | コンテナプロセスを表示する |
ログ | コンテナ出力の表示 |
下 | コンテナ、ネットワーク、ボリューム、イメージの削除 |
停止/開始/再起動 | サービスの停止/開始/再起動 |
LNMPウェブサイトプラットフォームのワンクリック展開
#compose_lnmp パッケージツリー /root/compose_lnmp/ を表示します /root/compose_lnmp/ ├── docker-compose.yml #docker-compose 起動インターフェースファイル ├── mysql │ ├── 会議 │ │ └── my.cnf #mysql 設定ファイル│ └── data #マウントする mysql データディレクトリ├── nginx │ ├── Dockerfile #nginx の Docker イメージ設定ファイルをカスタマイズする│ ├── nginx-1.12.1.tar.gz #nginx ソースコードパッケージ│ └── nginx.conf #nginx 設定ファイル├── php │ ├── Dockerfile #PHP の Docker イメージ ファイルをカスタマイズする│ ├── php-5.6.31.tar.gz #PHP ソース コード パッケージ│ └── php.ini #PHP 設定ファイル└── wwwroot #Web ページ ディレクトリ└── index.php #デフォルトの Web ページ ファイル
vim docker-compose.yml #docker-compose 起動インターフェースファイルは .yml で終わる必要があります。He と ansbile は両方とも Python バージョンで書かれています: '3' #コンテナのバージョンは 3 です services: #コンテナサービスには以下があります nginx: #Nginxコンテナホスト名: nginx #コンテナホスト名はnginxです build: #dockerfile の場所を指定しますcontext: ./nginx #dockerfile ファイルは現在のパスの下の nginx ディレクトリにありますdockerfile: Dockerfile #Dockerfile ファイル名: Dockerfile ports: #マッピングポートホスト81を80にマッピングするように指定します - 81:80 networks: #lnmp ブリッジのコンテナネットワークカードを指定します - lnmp ボリューム: #現在のディレクトリの ./wwwroot をコンテナ nginx の Web ディレクトリにマウントします - ./wwwroot:/usr/local/nginx/html php: #nginx ホスト名と同様: php 建てる: コンテキスト: ./php dockerfile: Dockerファイル ネットワーク: -lnmp ボリューム: - ./wwwroot:/usr/local/nginx/html マイスク: ホスト名:mysql イメージ: mysql:5.6 #イメージをダウンロード mysql5.6 バージョン ポート: -3306:3306 ネットワーク: -lnmp ボリューム: #mysql のメイン設定ファイルとデータファイルをマウントします - ./mysql/conf:/etc/mysql/conf.d - ./mysql/データ:/var/lib/mysql command: --character-set-server=utf8 #コマンドを実行し、デフォルトのコマンドを上書きします environment: #環境変数 MYSQL_ROOT_PASSWORD: 123456 を追加します MYSQL_DATABASE: ワードプレス MYSQL_USER: ユーザー MYSQL_パスワード: user123 networks: #ネットワーク lnmp を追加し、最上位ネットワークの下のエントリ lnmp を参照します。
#LNMPのワンクリック展開 docker-compose -f docker-compose.yml up #-f は現在のディレクトリにあるdocker-composeを起動ファイルとして指定し、up はコンテナを作成して起動します。
#デプロイされたコンテナプロセスをすべてワンクリックで表示 docker-compose -f docker-compose.yml ps 名前 コマンド 状態 ポート ------------------------------------------------------------------------------------- composelnmp_mysql_1 docker-entrypoint.sh --cha ... 0.0.0.0:3306->3306/tcp を起動します composelnmp_nginx_1 ./sbin/nginx -g デーモンをオフ; 0.0.0.0:81->80/tcp を起動 composelnmp_php_1 ./sbin/php-fpm -c /usr/loc ... 9000/tcp まで #デプロイされたすべてのコンテナプロセスをワンクリックで終了 docker-compose -f docker-compose.yml stop composelnmp_nginx_1 を停止しています...完了 composelnmp_php_1 を停止しています...完了 composelnmp_mysql_1 を停止しています...完了#ワンクリックでコンテナを起動し、バックグラウンドで docker-compose -f docker-compose.yml start を実行します #デプロイされたコンテナプロセスをすべてワンクリックでクリーンアップする docker-compose -f docker-compose.yml down
#compose_nginx_tomcat パッケージを表示 [root@docker ~]# tree compose_nginx_tomcat/ nginx_tomcat をコンパイルする ├── docker-compose.yml ├── MySQL の │ ├── 会議 │ │ └── my.cnf #mysql 設定ファイル│ └── data #マウントする mysql データディレクトリ├── nginx │ ├── Dockerfile #カスタムイメージ設定ファイル│ ├── nginx-1.12.1.tar.gz #ソースパッケージ│ └── nginx.conf #nginx設定ファイル├── tomcat │ ├── apache-tomcat-8.0.46.tar.gz #ソースコードパッケージ│ ├── Dockerfile #カスタムイメージ設定ファイル│ └── server.xml #tomcat設定ファイル└── webapps └── ルート └── index.html #Webページテストファイル
#docker-compose の起動インターフェースファイルを表示します cat compose_nginx_tomcat/docker-compose.yml バージョン: '3' サービス: nginx: ホスト名: nginx 建てる: コンテキスト: ./nginx dockerfile: Dockerファイル ポート: - 82:80 ネットワーク: -lnmt ボリューム: - ./webapps:/opt/webapps トムキャット01: ホスト名: tomcat01 ビルド: ./tomcat ネットワーク: -lnmt ボリューム: - /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45 - ./webapps:/usr/local/apache-tomcat-8.0.46/webapps トムキャット02: ホスト名: tomcat02 ビルド: ./tomcat ネットワーク: -lnmt ボリューム: - /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45 #docker ホストの Java 環境がマウントされました。 - ./webapps:/usr/local/apache-tomcat-8.0.46/webapps #Web ディレクトリをマウントします。mysql: ホスト名:mysql イメージ:mysql:5.6 ポート: - 3307:3306 ネットワーク: -lnmt ボリューム: ./mysql/conf:/etc/mysql/conf.d ディレクトリ - ./mysql/データ:/var/lib/mysql 環境: MYSQL_ルート_パスワード: 123456 MYSQL_DATABASE: db MYSQL_USER: ユーザー MYSQL_パスワード: user123 ネットワーク: 表示:
各コンテナにJAVA環境をインストールするとコンテナが大きくなりすぎるため、スペースを節約するためにTomcatコンテナにローカルJava環境をインストールします。
#Tomcat コンテナ プロセスは Docker ホストのローカル Java 環境をマウントする必要があるため、#Docker ホストに jdk-8u45-linux-x64.tar.gz をローカルにインストールします tar xf jdk-8u45-linux-x64.tar.gz -C /usr/local #ngxin+tomcat リバースプロキシクラスタのワンクリックデプロイ docker-compose -f docker-compose.yml up
nginx リバース プロキシ構成ファイル ユーザー root; ワーカープロセスは自動です。 error_log ログ/error.log 情報; pid ログ/nginx.pid; イベント { epoll を使用します。 } http { mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log ログ/access.log メイン; ファイル送信オン; キープアライブタイムアウト65; アップストリーム www.example.com { #ip_ハッシュ; server tomcat01:8080; #composeインターフェースファイルで定義されたホスト名はIPアドレスに直接解決できます サーバー tomcat02:8080; } サーバー{ 聞く 80; server_name ローカルホスト; 位置 / { proxy_pass http://www.example.com; } 場所 ~ \.(html|css|js|jpg|png|gif)$ { ルート /opt/webapps/ROOT; } } }
Docker イメージの作成とプロジェクト全体のワンクリックパッケージングとデプロイに関するこの記事はこれで終わりです。Docker イメージの作成とパッケージングとデプロイに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。
<<: CSS における XHTML タグの対応する属性と使用法
SHTMLとASPは似ています。SHTMLという名前のファイルでは、SSIの命令がASPの命令と同じ...
この記事の例では、画像デジタル時計を実現するためのJSの具体的なコードを参考までに共有しています。具...
Centos7.6 に Tomcat-8.5.39 をインストールする方法は次のとおりです。詳細は次...
docker-maven-plugin プラグインを使用する場合、Maven は対応する jar パ...
IE8 や Chrome で上記の設定を使用すると、画面の最大幅に合わせて表示が統一され、各列の幅は...
目次1. トランジションとアニメーションの違い2. Vueを使用して基本的なCSSトランジションとア...
CSS3 border-image プロパティを使用すると、要素の周囲に画像の境界線を設定できます。...
Linuxの操作では、ファイル内の文字列を置換したりカウントしたりすることが多いです。ここでまとめを...
1. LinuxサーバーのDocker構成ファイルを変更する vim /usr/lib/system...
序文MySQL は、2016 年もデータベースの人気において力強い成長傾向を維持し続けました。 My...
最近、テスト サーバーのオペレーティング システムを Cent0S 7.5 にアップグレードし、Py...
バージョン1.4.2公式ドキュメントドッカーハブ起動する環境変数SEATA_CONFIG_NAMEを...
1つのポートの変更バージョン 3.2.0 では、ネームノード ページ ポートは 9870、データノー...
インストールtsコマンドをグローバルにインストールする npm install -g typescr...
目次1.1Tinyint型の説明1.2 練習環境の説明1.3 未署名属性の追加1.3.1 SQLモー...