1. 概要この記事は、将来のレビューや参照のために、日常的な Docker 管理に関する知識の断片を要約して整理することを目的としています。 2. 応用例2.1、Docker コンテナ分離名前空間名前空間: コンテナ仮想化が依存する Linux の主要なコア テクノロジであり、コンテナを分離するために使用されます。これは主に次の6つの分離技術によって実現されます: 2つの疑似ファイルシステムがあります: /procと/sys/
2.2. Docker のフリー制限 cgroup例1: docker run -it -m 200M --memory-swap 300M centos //-m または –memory: メモリ使用量制限を設定する、–memory-swap: スワップ (スワップ パーティション) 使用量制限を設定する 例 2: docker run -it --name containerB -c 512 centos //containerB、CPU の重み制限は 512 です。-c または –cpu-shares は、コンテナ実験の CPU の重みを設定します。設定されていない場合、デフォルトは1024です 例 3: docker run -it --name testA --device-write-bps /dev/sda:30MB centos //コンテナ testA はディスクへの書き込み量を 1 秒あたり 30 MB に制限します。 その他のパラメータ:
2.3. 実行中のコンテナのポートマッピングを設定するコンテナを停止せずにコンテナ マッピング ポートを調整したい場合があります。では、コンテナの使用中に、コンテナ内のアプリケーションのサービス ポートをローカル ホスト マシンにマッピングするにはどうすればよいでしょうか。 コンテナ内でいくつかのネットワーク アプリケーションを実行し、これらのアプリケーションへの外部アクセスを許可する場合は、-P または -p パラメータを使用してポート マッピングを指定できます。 -P (大) パラメータを使用すると、Docker はホストのローカル ポートを内部コンテナのオープン ネットワーク ポートにランダムにマッピングします。-p (小) パラメータを使用すると、マッピングするポートを指定でき、指定したポートにバインドできるコンテナは 1 つだけです。サポートされている形式は次のとおりです:
いくつかの例を見てみましょう: 例 1: docker run -d -P nginx //docker ps は、3**** ポートがローカル ホストにランダムに割り当てられ、コンテナーのポート 80 にマップされていることを示します。ローカル ブラウザーで http://localhost:3**** にアクセスすると、nginx のウェルカム ページが表示されます。 例2: docker run -d -p 8080:80 nginx //docker psを使用すると、ローカルホストのポート8080がコンテナのポート80にマッピングされていることがわかります。 検証: コマンド形式: docker port CONTAINER [PRIVATE_PORT[/PROTO]] コンテナの特定の情報を取得するには、docker inspect + コンテナ ID を使用します。 例3: 実行中のコンテナにマッピングポートを追加する docker examine \`container_name` | grep IPAddress // コンテナの IP アドレスを取得するには、container_name を実際の環境のコンテナ名に置き換えます。iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000 // コンテナのポート 8000 を docker ホストのポート 8001 にマップします。または: docker commit container_id foo/live //実行中のコンテナをイメージとして送信 docker run -d -p 8000:80 foo/live /bin/bash //イメージを実行してポートマッピングを追加します。ホスト8000をコンテナ80に追加します。 2.4. 実行中のDockerコンテナの内容を変更するDockerでは、ホストとコンテナは相互にファイルをコピーして転送します。 docker cp mycontainer:/opt/testnew/file.txt /opt/test/ // コンテナからホストにファイルをコピーします。 docker cp /opt/test/file.txt mycontainer:/opt/testnew/ // ホストからコンテナにファイルをコピーします。 sudo docker commit -m "説明の内容" -a "作成者名" 32555789dd00 aipaper/devinz83:v2 //-m は、使用するバージョン管理ツールと同様に、提出の説明を指定するために使用されます。-a は、更新されたユーザー情報を指定できます。その後に、イメージの作成に使用したコンテナの ID が続き、最後に、対象イメージのウェアハウス名とタグ情報を指定します。作成が成功すると、イメージID情報が返されます。docker images //REPOSITORY TAGを確認します aipaper/devinz83 v2 #コンテナ設定ファイルyamlを変更する : docker-compose-resty-redis.yml を編集します。 docker stack deploy --compose-file=/opt/docker/yml/docker-compose-resty-redis.yml resty_redis //新しく変更したイメージを使用して docker アプリケーションをデプロイします 注意: docker cp はコンテナが起動されているかどうかに関係なく有効になります。完了したら、docker commit コマンドを使用して更新されたコピーをコミットします。 次に、コンテナの yml ファイルを更新し、イメージを新しいオブジェクトに更新します。 2.5. Dockerコンテナを他のサーバーに移行するハードウェアのアップグレード、データセンターの変更、リソースの制限など、さまざまな理由により、現在の Docker コンテナを別のリソース プールまたはホストに移行する必要がある場合があります。 1) 輸出入コンテナ: コンテナをエクスポートします。これにより、コンテナのファイル システムから圧縮ファイルが作成されます。エクスポートされたファイルは、「gzip」ファイルとして保存されます。圧縮ファイルは、scp や rsync などのファイル転送ツールを使用して新しいサーバーにコピーされます。新しいサーバーで、gzip ファイルを新しいコンテナーにインポートします。 docker export コンテナ名 | gzip > コンテナ名.gz zcat コンテナ名.gz | docker import - コンテナ名 docker run -d container-name /bin/bash //「docker run」コマンドを使用して、新しいサーバーで作成された新しいコンテナにアクセスします 注: コンテナのエクスポート ツールの欠点の 1 つは、コンテナのポートと変数がエクスポートされず、コンテナを含む基礎データもエクスポートされないことです。これにより、別のサーバーでコンテナをロードしようとするとエラーが発生する可能性があります。この点では、Docker イメージ移行を使用して、コンテナをあるサーバーから別のサーバーに移行することも検討できます。 2) コンテナイメージの移行: つまり、コンテナに関連付けられたイメージを新しいリソース プールに移行します。これは、Docker コンテナを別のサーバーに移行する最も一般的な方法でもあります。移行するコンテナについては、まず「Docker commit」コマンドを使用して、その Docker イメージを圧縮ファイルに保存します。 docker commit container-id image-name //生成されたイメージは圧縮されます その後、上記のイメージを新しいサーバーにアップロードし、新しいサーバーで「docker run」を使用して新しいコンテナを作成します。 3) まず保存してから画像を読み込む Docker イメージは、アプリケーションのコード、ライブラリ、構成ファイルなどのパッケージです。これらのイメージから Docker コンテナが作成されます。 「docker save」を使用してイメージを圧縮し、新しいサーバーに移行できます。次に、新しいサーバーで「docker load」を使用して、圧縮されたイメージ ファイルを使用して新しいイメージを作成します。 docker save イメージ名 > イメージ名.tar cat イメージ名.tar | docker load 4) データボリュームを移行する: Docker コンテナ内のデータ ボリュームは、コンテナ固有のデータが含まれる共有ディレクトリです。ボリューム内のデータは永続的であり、コンテナの再作成時に失われることはありません。 エクスポート ツールまたはコミット ツールを使用して Docker コンテナーまたはイメージをあるサーバーから別のサーバーに移行する場合、基礎となるデータ ボリュームは移行されません。この場合、データを含むディレクトリは手動で新しいサーバーに移行されます。次に、新しいサーバー上にコンテナを作成し、そのディレクトリをデータ ボリュームとして参照します。 もう 1 つの簡単な方法は、「docker run」コマンドに「-volumes from」パラメータを渡してデータ ボリュームをバックアップおよび復元することです。 docker run --rm --volumes-from データボリューム名 -v $(pwd):/backup イメージ名 tar cvf backup.tar /path-to-datavolume docker run --rm --volumes-from データボリューム名 -v $(pwd):/backup イメージ名 bash -c "cd /path-to-datavolume && tar xvf /backup/backup.tar --strip 1" 上記のコマンドでは、datavolume-name は /path/to/volume です。このコマンドは、データ ボリュームのバックアップを提供します。作業ディレクトリを指定するには、-w/backup を指定することもできます。 /backup フォルダに生成されたバックアップは、scp または ftp ツールを使用して新しいサーバーにコピーできます。コピーされたバックアップは抽出され、新しいコンテナのデータ ボリュームに復元されます。 5) Docker コンテナ全体を移行します。 上記の方法は、単一のコンテナに対してのみ機能します。しかし、すべてのコンテナをあるサーバーから別のサーバーに移行する必要がある場合は、別のアプローチを採用します。この方法では、docker ディレクトリ全体 (「/var/lib/docker」) を新しいサーバーにコピーします。このアプローチを成功させるには、いくつかの重要なポイントを特定する必要があります。
2.6. Dockerイメージ内のファイルを表示するdocker attach ContainerID //対応するコンテナは停止状態ではなく実行中である必要があります##実行されていないコンテナの場合は、次の例に示すように、Dockerイメージ内のファイルをホストにコピーできます。udo docker cp nginx-ubuntu-container:/etc/apt/sources.list ~/Documents/ 2.7. コンテナの実行: docker run の共通オプション構文: docker run [オプション] イメージ名 [起動コンテナに渡されるコマンド] 一般的なオプションパラメータの説明:
Docker管理に関する断片的な知識をまとめたこの記事はこれで終わりです。より関連性の高いDocker管理コンテンツについては、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: int(3)とint(10)の値の範囲はmysqlで同じですか?
シナリオシミュレーション:ある会社の運用保守担当者は、以前購入した一連のネットワーク機器の光ポートの...
<!DOCTYPE html> <html lang="ja"...
MySQLをダウンロード5.1.1.1 より前のバージョン私のコンピュータは64ビットなので、Win...
ajax 処理後にサーバーから返される responseText が JSON データであるという問...
このプロジェクトでは、環境を構築するために Docker コンテナを使用します。Dockerfile...
実際のプロジェクト開発では、多数のクエリや挿入、特にマルチスレッド挿入など、データベースに大きな負荷...
質問最近、SSH フレームワークを使用して実用的なプロジェクトを完了していたときに、長い間悩まされて...
1: masterha_check_repl レプリカ セット エラー レプリケートが構成ファイルで...
Apache Tika は、さまざまな形式のファイルからファイル タイプを検出し、コンテンツを抽出す...
目次1. サブクエリとは何ですか? 2. 自己結合3. 自然な結合4. 外部接続1. サブクエリとは...
mysql マスタースレーブ構成1. 準備ホスト: 192.168.244.128スレーブ: 192...
序文システムにファイル システムを作成し、それを永続的または非永続的にマウントする方法を学習します。...
本番環境におけるコンテナの稼働状況を監視することは非常に重要です。監視を通じて、コンテナの稼働状況を...
エラーは次のとおりです:キャッチされない TypeError: 未定義のプロパティ 'mod...
指定したサイズより大きいファイルを検索するには、find コマンドを使用します。 検索 / -typ...