Docker ファイルの保存パス、ポート マッピング操作モードの変更

Docker ファイルの保存パス、ポート マッピング操作モードの変更

コンテナの起動コマンドを取得する方法

コンテナはすでに作成されていますが、その起動パラメータ(データがマウントされる場所)を知る方法

#コンテナが次のコマンドで起動されるとします docker run -d --name mysql_cdh \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v mysql-データ:/var/lib/mysql \
--restart=常に\
mysql:5.5 --character-set-server=utf8
#コンテナ名 [root@jenkins ~] から起動パラメータを取得する方法# docker examine mysql_cdh
[
 {
  「ID」: 「3aad772538b5e86705d3358362517a08d53f951aa6522e2881321135f05c8872」、
  「作成日」: 「2019-09-25T01:43:37.720505875Z」、
  「パス」: 「docker-entrypoint.sh」、
  「引数」: [
   "--文字セットサーバー=utf8"
  ]、
  ...
  "名前": "/mysql_cdh",
  
	 	"ホスト構成": {
	   「バインド」: [
	    「mysql-データ:/var/lib/mysql」
	   ]、
	   ...
	   "ネットワークモード": "デフォルト",
	   「ポートバインディング」: {
	    "3306/tcp": [
	     {
	      "ホストIP": "",
	      "ホストポート": "3306"
	     }
	    ]
	   },
	   「再起動ポリシー」: {
	    「名前」: 「常に」
	    「最大再試行回数」: 0
	   },
	
 	「マウント」: [
	   {
	    「タイプ」:「ボリューム」、
	    "名前": "mysql-data",
	    「ソース」: 「/var/lib/docker/volumes/mysql-data/_data」、
	    「宛先」: 「/var/lib/mysql」、
	    "ドライバー": "ローカル",
	    "モード": "z",
	    「RW」:真、
	    「伝播」: 「」
	   }
	  ]、
	
		「設定」: {
	   "ホスト名": "3aad772538b5",
	    ...
	   「公開ポート」: {
	    "3306/tcp": {}
	   },
				...
	   「環境」: [
	    "MYSQL_ROOT_PASSWORD=123456",
	    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/mysql/bin:/usr/local/mysql/scripts",
	    "GOSU_VERSION=1.7",
	    "MYSQL_MAJOR=5.5",
	    "MYSQL_VERSION=5.5.62"
	   ]、
	   「コマンド」: [
	    "--文字セットサーバー=utf8"
	   ]、

1. コンテナ層: ファイル保存パス

#1、コンテナを起動します [root@master ~]# docker run -d --name nginx2 nginx
a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8
#2、コンテナIDを取得する
[root@master ~]# docker examine nginx2 | grep -i id 
[root@master ~]# docker examine nginx2 | grep -i id 
  「ID」: 「a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8」、
   「ピッド」: 2069,
  「ExecID」: null、
   "コンテナIDファイル": "",
			
#コンテナの一時ファイルを表示します - 作成されるたびにランダムに生成されるファイルです (コンテナ レイヤー)
# /var/lib/docker/containers/コンテナID
[root@master ~]# docker examine nginx2 | grep -i パス
 "パス": "nginx",
 "ResolveConfPath": "/var/lib/docker/containers/a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8/resolv.conf",
 "ホスト名パス": "/var/lib/docker/containers/a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8/ホスト名",
 "ホストパス": "/var/lib/docker/containers/a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8/hosts",
 "ログパス": "/var/lib/docker/containers/a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8/a9c9f31cdccf13c3385f3de33443325d2e14d69458e6d679e54c8cf9e5ff24c8-json.log",

明後日コンテナポートを変更する

a. まず古いコンテナを新しいイメージとして送信し、新しいコンテナを起動します。

次の点を確認する必要があります: データ ボリューム マッピングが完全に一貫していること (新しいコンテナーと古いコンテナーはデータ ボリューム上で一貫している必要があります)

[root1@c7-docker ~]# docker examine mysql_port |egrep -i 'volum|マウント' -A 2
   「ボリューム」: {
    "/var/lib/mysql": {}
   },
--
   「ボリューム」: {
    "/var/lib/mysql": {}
   },

コンテナをイメージとして保存し、新しいコンテナを起動してポートマッピングを追加します。

############### 1. コンテナを起動する############## 
[root1@c7-docker ~]# docker run --name t1 -d -e MYSQL_ROOT_PASSWORD=123456 -v mysql-test-dir:/var/lib/mysql/ -p 3308:3306 mysql:5.5
53f2a3c53d4c6769897ee484c3d2ff4e3f82ea1e390d4950b2162c08af05d7cc
[root1@c7-docker ~]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
53f2a3c53d4c mysql:5.5 "docker-entrypoint.s..." 3 秒前 3 秒前にアップ 0.0.0.0:3308->3306/tcp t1
[root1@c7-docker ~]# mysql -uroot -p123456 -P3308 --protocol tcp
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは1です
サーバーバージョン: 5.5.62 MySQL コミュニティサーバー (GPL)
MySQL [(なし)]> データベースを表示します。
+--------------------+
| データベース |
+--------------------+
| 情報スキーマ |
|mysql |
| パフォーマンススキーマ |
+--------------------+
セット内の 3 行 (0.00 秒)
MySQL [(なし)]> データベーステストを作成します。
クエリは正常、1 行が影響を受けました (0.00 秒)
MySQL [(なし)]> use test;
データベースが変更されました
MySQL [テスト]> テーブル t1(id int) を作成します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)
MySQL [テスト]> t1 に値(1),(2),(3) を挿入します。
クエリは正常、3 行が影響を受けました (0.00 秒)
記録: 3 重複: 0 警告: 0
MySQL [テスト]> t1 から * を選択します。
+------+
|id|
+------+
| 1 |
| 2 |
| 3 |
+------+
セット内の 3 行 (0.00 秒)
 
############## 2. 現在のコンテナ環境を送信し、新しいイメージとして保存します。############## 
[root1@c7-docker ~]# docker commit -m mysql_test_chag-port_img t1 mysql_port
sha256:9f90be3c200c6a8b535478375c4caf86d589d231afae1293d28026f9248f8ae3
[root1@c7-docker ~]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
mysql_port 最新 9f90be3c200c 3秒前 205MB
mysql 5.5 d404d78aa797 18か月前 205MB
############## 3. 古いコンテナを停止し、新しいコンテナを起動します############### 
[root1@c7-docker ~]# docker stop t1
t1
[root1@c7-docker ~]# docker run --name t2 -d -v mysql-test-dir:/var/lib/mysql/ -p 3309:3306 mysql_port
fd7cefe55db8bb2687ab044ff1473f0c935ac5ce867df81b3b13f570e9026868
[root1@c7-docker ~]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
fd7cefe55db8 mysql_port "docker-entrypoint.s..." 3 秒前 2 秒前にアップ 0.0.0.0:3309->3306/tcp t2
[root1@c7-docker ~]# mysql -uroot -p123456 -P3309 --protocol tcp
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは2です
サーバーバージョン: 5.5.62 MySQL コミュニティサーバー (GPL)
MySQL [(なし)]> データベースを表示します。
MySQL [(なし)]> use test;
テーブル名と列名の補完のためのテーブル情報の読み取り
-Aでこの機能をオフにすると起動が速くなります。
データベースが変更されました
MySQL [テスト]> t1 から * を選択します。
+------+
|id|
+------+
| 1 |
| 2 |
| 3 |
+------+
セット内の 3 行 (0.00 秒)

b. コンテナ構成ファイルを変更する: hostconfig.json

最初にdockerサービスを停止する必要があります。そうしないと効果がありません。

コンテナレイヤーファイルから設定ファイルhostconfig.jsonを探し、コンテナによってマップされたポートを変更します。

[root@docker a9c9f31cd...ff24c8]# pwd
/var/lib/docker/コンテナ/d93185e3a0....2e544ccfa
[root@docker a9c9f31cd...ff24c8]# cat hostconfig.json 
{"Binds":["/dockersuperset:/home/superset"],"ContainerIDFile":"",
"LogConfig":{"Type":"json-file","Config":{}},"NetworkMode":"default",
"PortBindings":{"8088/tcp":[{"HostIp":"","HostPort":"8099"}]}......

2. イメージレイヤー: ファイル保存パス

[root@master ~]# docker イメージの検査 nginx | ​​tail -n 22
  "グラフドライバー": {
   "データ": {
    "下位ディレクトリ": "/var/lib/docker/overlay2/bf20cf788cc053f00ff1467525d50e19bd1cf07a2167f72511bdfcb28918a472/diff:/var/lib/docker/overlay2/317d80bb7ae58ed288be9ebd84aeb5b4b3a1c06f3211f5d1f32d89b629d1876e/diff",
    "マージされたディレクトリ": "/var/lib/docker/overlay2/7782d0eb292fdc8bbd73bf9bae2d65468e8aba0bcd6baed55ac348618b80ae16/マージ済み",
    「上位ディレクトリ」: 「/var/lib/docker/overlay2/7782d0eb292fdc8bbd73bf9bae2d65468e8aba0bcd6baed55ac348618b80ae16/diff」、
    "作業ディレクトリ": "/var/lib/docker/overlay2/7782d0eb292fdc8bbd73bf9bae2d65468e8aba0bcd6baed55ac348618b80ae16/work"
   },
   「名前」: 「オーバーレイ2」
  },

a、コンテナレイヤー、イメージレイヤー: 関連付け

I、サブコンテナ:画像ファイルをコピーする

II、サブコンテナ: 新しいファイルの追加

III. サブコンテナ: イメージからコピーされたファイルの変更

b. イメージレイヤー(ファイル保存ディレクトリ)で、設定ファイルを変更します。

# ミラーコンテナのファイル保存ディレクトリに入り、設定ファイルを変更します [root@master d37ff828e6308...0c0599b]# ls diff/run/
nginx.pid
[root@master d37ff828e6308...0c0599b]# ls diff /var/cache/nginx/
クライアント temp fastcgi_temp プロキシ temp scgi_temp uwsgi_temp
[root@master d37ff828e6308...0c0599b]# ls マージ済み/
bin/ dev/ etc/ lib/ media/ opt/ root/ sbin/ sys/ usr/  
ブート/ .dockerenv ホーム/ lib64/ mnt/ proc/ 実行/ srv/ tmp/ var/  
[root@master d37ff828e6308...0c0599b]# ls マージされた/etc/nginx/
conf.d fastcgi_params koi-utf koi-win mime.types モジュール nginx.conf scgi_params uwsgi_params win-utf
[root@master d37ff828e6308...0c0599b]# ヘッドがマージされました/etc/nginx/nginx.conf 
ユーザー nginx;
ワーカープロセス 1;
#ここで設定ファイルを変更し、2行のセミコロンを削除します。user nginx; worker_process 1; コンテナ内の設定が変更されたかどうかを確認します。[root@master d37ff828e6308...0c0599b]# head merged/etc/nginx/nginx.conf -n 3
ユーザー nginx
ワーカープロセス 1
#コンテナにログインして変更された構成を表示します。有効かどうかを確認します [root@master d37ff828e6308...0c0599b]# docker exec -it nginx2 bash
root@a9c9f31cdccf:/# ヘッド /etc/nginx/nginx.conf -n 3
ユーザー nginx
ワーカープロセス 1

3. デフォルトのストレージパスを変更する

a、/var/lib/dockerディレクトリを再構築する

#新しいストレージパスにデータをバックアップするサービス docker stop
mkdir /docker.bak
mv /var/lib/docker/* /docker.bak
#ソフトリンクを作成する mkdir /home/docker-data
mv /docker.bak/* /home/docker-data/ && rmdir /docker.bak
: := docker-data は、docker コマンドで定義されます。

b. 設定を変更する

: : vi /usr/lib/systemd/system/docker.service を実行します。 
ExecStart=/usr/bin/dockerd --graph /新しいパス/docker 
#設定ファイルをリロード systemctl daemon-reload 
#Dockerを再起動 
systemctl docker.service を再起動します。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • Docker ポート マッピングと外部アクセス不可の問題
  • Docker ポート マッピングを使用してネットワーク アクセスを実現する方法
  • Dockerは複数のポートマッピングコマンドを有効にします
  • Dockerボリュームのファイルマッピング方法
  • Docker プライマリ ネットワーク ポート マッピング構成
  • 実行中のDockerコンテナのポートマッピングを変更する方法
  • Dockerはポートマッピングを設定しますが、ソリューションにアクセスできません

<<:  MySQLの共通関数を使用してJSONを処理する方法

>>:  HTML pre タグ内の自動改行

推薦する

MYSQLが中国語を認識できない問題の恒久的な解決策

ほとんどの場合、MySQL はインストールしたばかりのときは中国語をサポートしません。これはエンコー...

Mysql は最大接続数を表示し、最大接続数を変更します

MySQL 最大接続数の表示と最大接続数の変更1. 最大接続数を確認する '%max_con...

データベースクエリ、どのオブジェクトにどのフィールドが含まれているか、メソッドステートメント

データベースは、どのオブジェクトにどのフィールドが含まれているかを照会します。 *を選択 sysob...

MySQL 8.0.17 のインストールと設定のグラフィックチュートリアル

この記事は、参考のためにMySQL 8.0.17のインストールと設定のグラフィックチュートリアルを記...

React+Koa によるファイルアップロードの実装例

目次背景サーバーの依存関係バックエンド構成クロスドメインバックエンド構成の静的リソースアクセスではk...

JavaScript で配列遅延評価ライブラリを実装する方法

目次概要達成方法具体的な実装評価関数の終了を決定する生成関数の範囲変換関数マップフィルター割り込み機...

Windows サーバー管理におけるセキュリティの考慮事項

ウェブサーバー1. Webサーバーは、wev、cgi、asp機能を無効にするなど、不要なIISコンポ...

Dockerでランナーコンテナを構成する方法

1. ランナーコンテナを作成する mk@mk-pc:~/Desktop$ docker run -d...

Vue3の組み込みコンポーネントであるTeleportの使い方を詳しく説明します

目次1. テレポートの使用2. モーダルダイアログコンポーネントを完成させる3. コンポーネントのレ...

element.style インライン スタイルを変更する方法のチュートリアル

序文上記の Web ページ スタイルを記述しているときに、スタイルの値をどのように変更しても、ページ...

MySQLの大規模テーブル最適化ソリューションについての簡単な説明

背景Alibaba Cloud RDS for MySQL(MySQL バージョン 5.7)データベ...

JavaScript 日付ツールの概要

ユーティリティ = { /** * 死亡年ですか? * @return {Boolse} true...

Windows10 mysql 8.0.12 非インストール版 設定 起動方法

この記事では、MySQL 8.0.12のインストールされていないバージョンを設定して起動するための具...

Nginx 運用保守ドメイン名検証方法例

インターフェイス ドメイン名を構成する際、各パブリック プラットフォームはドメイン名に対する開発者の...

Nginx で limit_req_zone を使用して同じ IP へのアクセスを制限する方法

Nginx は、ngx_http_limit_req_module モジュールの limit_req...