#友人が週末に Docker 関連の問題について尋ねました。今日は、Docker のクイック スタート、中心的な概念、一般的な手順を共有します。
# 卸载已有 docker sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 添加安装源 sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 安装最新版 sudo yum install docker-ce docker-ce-cli containerd.io # 启动 sudo yum install docker-ce docker-ce-cli containerd.ioログイン後にコピー
2、イメージの docker タグの名前を変更します。 例: docker tag nginx:latest mynginx:latest
3. イメージ docker image ls または docker image
4 を表示します。次のようなイメージ docker rmi
を削除します。 docker rmi mynginx
5. イメージをビルドする docker build または docker commit 例: docker commit nginx mynginx:lastest docker build は比較的複雑ですが、さらに使用されます
コンテナはイメージの実行エンティティであり、1 つのイメージから複数のコンテナを作成できます。コンテナーは、コンテナー内にファイル システムの読み取り/書き込みコピーを作成します。
ライフサイクル:
created: 初期作成状態
running: 実行中の状態
stopped: 停止状態
paused: 一時停止状態
deleted: 削除済みステータス
操作: 1. コンテナーを作成して起動します
作成: docker create -it --name=mynginx mynginx
Start : docker start mynginx
作成して開始: docker run -it --name=mynginx mynginx
2. コンテナーを終了します docker stop mynginx
3. コンテナーに入る ドッカーアタッチ mynginx docker exec -it mynginx sh (さらに使用)
4. コンテナーを削除します docker rm mynginx 実行中のコンテナを削除します: docker rm -f mynginx
5. コンテナをエクスポートします。 docker import mynginx > mynginx.tar
6. コンテナのインポート docker import mynginx.tar mynginx:import
Docker イメージの保存と配布、登録サーバーウェアハウスを保存する実際のサーバーには多くのウェアハウスを含めることができ、各ウェアハウスには複数のミラーを含めることができます。 公共倉庫ドッカーハブ https://hub.docker.com/ ログイン: docker ログイン イメージをウェアハウスにプッシュします: docker Pushディストリビューションを使用してプライベート ウェアハウスを構築します https://github.com/distribution/distributiondocker run -d -p 5000:5000 --name registry registry:2.7 docker プッシュ localhost:5000/mynginx###
は、デフォルトのジョイント ファイル システムをバイパスし、ファイルまたはディレクトリの形式でホスト上に直接存在できます。 。 優れた。これにより、データの永続性とコンテナ間でのデータ共有の問題が解決されます。操作: 1. 作成: docker volume create volume-name
2. -v は永続化するパスを指定します。Docker は自動的にボリュームを作成し、コンテナーにバインドします。 docker run -d --name=nginx-volume -v /usr/share/nginx/html nginx
3. 表示: docker volume ls
4. ボリュームの詳細: docker volume Inspection volume -name
5, --mount パラメータはボリュームの名前を指定します docker run -d --name=nginx --mount source=ボリューム名,target=/usr/share/nginx/html nginx
6. ボリュームの削除: docker volume rm ボリューム名
7. ボリューム間のデータ共有: docker run --mount source=lv,target=/tmp/log --name=v-Producer -it test docker run -it --name Consumer --volumes-from v-Producer test
8. ボリュームとホスト間のデータ共有: docker run -v /data:/usr/local/data -it test
1. Docker
docker、それは Docker クライアントであり、リクエストを送信します。 dockerd (サーバーの入り口) は、リクエストを受信し、結果を返す責任があります。 docker-init, 1コンテナのプロセス番号、サブコンテナを管理します docker-proxy、ホストのネットワーク トラフィックをコンテナに転送します 2、containerd
containerd、コンテナの起動、停止など、コンテナのライフサイクル管理を担当します... containerd-shim、コンテナ プロセスの親プロセスとして、containerd と real を分離します。containerd のクライアントであるコンテナ プロセス - 3. ランタイム
ctr は、開発およびデバッグ中に、containerd にリクエストを送信します。
runc、システム インターフェイスを通じてコンテナを作成および破棄します
docker stats では、ホスト上のすべてのコンテナーの CPU、メモリ、ネットワーク IO、ディスク IO、PID、その他のリソースのリソース使用状況を表示できます。 cAdvisor は、Google がオープンソース化した一般的なコンテナ監視ソリューションです。インストールに関するリファレンス:
https://www.jianshu.com/p/91f9d9ec374f
ビュー監視: http://localhost:8080 http://localhost:8080/containers/ http://localhost:8080/docker/
セルフセキュリティの脆弱性 イメージにはセキュリティ上の問題があります - #Linux ホスト カーネルの分離では十分ではありません
Docker は 6 つのタイプを使用します: マウント名前空間、マウント ポイント分離 PID 名前空間、プロセス分離 UTS 名前空間、ホスト名の分離 IPC 名前空間、プロセス間通信の分離 ユーザー名前空間、ユーザーおよびユーザーグループの分離 ネット名前空間、ネットワーク デバイス、IP アドレスおよびポートの分離
# 2.3. Union File System
- #リソース使用量の制限
#グループごとに、CPU、ディスク IO、その他のリソースの使用優先順位が異なる場合があります- 制御グループのリソース使用量を計算する
- #プロセスの一時停止または再開を制御
Docker には、AUFS、Devicemapper、OverlayFS という 3 つの最も一般的に使用されるユニオン ファイル システムがあります。 AUFS は最も古く、最も成熟したものです。2.4. ネットワーク実装
- Devicemapper (Linux カーネルによって提供されるフレームワーク) は、ブロック デバイスをマッピングするための技術フレームワークです。 。中心となる概念には、マップされたデバイス、ターゲット デバイス、およびループ LVM モードとダイレクト LVM モード (実稼働用) を含むマップ テーブルが含まれます。
#overlay2、更新はより安定しており、 Linux カーネルと Docker のバージョンにはより高い要件があります。
null 空のネットワーク モード、コンテナ ネットワークは提供されません ブリッジ ブリッジ モード、コンテナは相互に通信できます ホスト ホスト ネットワーク モード、コンテナはホスト ネットワークと通信します - #コンテナ ネットワーク モード、コンテナは同じネットワーク上に配置され、localhost 経由でアクセスされます
Docker Compose は Docker によって買収されたもので、基本的には 1 つのノード上で複数のコンテナを管理およびオーケストレーションできる Python スクリプトです。
- Docker Swarm は、Docker によって正式に開始されたコンテナ クラスター管理ツールです。Docker API をネイティブにサポートしています。操作が簡単で、TLS 双方向認証をサポートし、Raft プロトコルを使用して、配布を実現します。
- Kubernetes (Google は、内部 Borg システムによって蓄積された技術設計と実装を利用しています。強力で、数億のコンテナの運用をサポートすることを目指しています。ただし、そのアーキテクチャは比較的複雑で、始めるための敷居が高いです。
Docker を通じて開発環境を迅速にインストールし、Dockerfile を迅速に統合してイメージを構築し、イメージをプルしてコンテナーを実行してデプロイメントを完了し、コンテナー オーケストレーション ツールと組み合わせて Blue-Green リリースを実現します。
DevOps の開発を促進します。
迅速に継続的に統合して提供できます。
以上がDocker クイック スタート、中心的な概念、および一般的な手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。