記事ディレクトリ
Dockerの概要
Dockerは、開発者がアプリケーションと依存パッケージをポータブルコンテナーにパッケージ化し、人気のあるLinuxマシンまたはWindowsマシンに公開できるオープンソースのアプリケーションコンテナーエンジンです。仮想化することもできます。コンテナーは完全です。サンドボックスメカニズムを使用すると、相互のインターフェイスがなくなります。
完全なDockerは次の部分で構成されています
。DockerClientクライアント
Dockerデーモンデーモン
Dockerイメージミラー
DockerContainerコンテナー
- Dockerは、アプリケーションを開発、配信、実行するためのオープンプラットフォームです。Dockerを使用すると、アプリケーションをインフラストラクチャから分離できるため、ソフトウェアを迅速に提供できます。
- これはオープンソースのアプリケーションコンテナーエンジンであり、開発者はゲートアプリケーションと依存パッケージをポータブルイメージにパッケージ化し、仮想化できる一般的なLinuxまたはWindowsマシンに公開できます。コンテナはサンドボックスメカニズムを完全に使用し、コンテナ間にインターフェースはありません
- サンドボックス:コンピュータセキュリティの分野では、サンドボックスはプログラム用の分離された操作メカニズムです
- Dockerは2013年にヒットし、現在までコンテナーテクノロジーの代名詞となっています。
- Dockerは、真の「一度構築してどこでも実行できる」という最初から標準化されたランタイム環境を提供することを目指しています。同じビルドバージョンを、開発、テスト、プレリリース、本番環境などのどの環境でも使用できます。基盤となるオペレーティングシステムの分離。これに基づいて、CaaS(Container as a Service)テクノロジーがさらに開発されました
Dockerの一般的な使用シナリオ
パッケージ化されたアプリケーションの単純な展開は
、基盤となるハードウェアから自由に移行できます(アプリケーションの分離が実現され、アプリケーションが分割および分離されます)。たとえば、Tencent CloudからAlibaba Cloudへのサーバーの移行
継続的統合および継続的デリバリー(CI / CD):開発リリースをテストし、マイクロサービスを
デプロイし
、PAAS製品(サービスとしてのプラットフォーム)を提供します。OpenStackクラウドホストはAlibaba Cloud ECSに似ており、IAASに属し、Docker(K8S)はPAASに属します
Dockerエンジン
Docker Engine
Docker Engineは、次の主要コンポーネントを備えたクライアントサーバーアプリケーションです。
サーバーは、デーモンプロセス(dockerdコマンド)と呼ばれる長期実行プログラムです。
REST API。これは、プログラムがデーモンと通信してその操作を指示するために使用できるインターフェースを指定します。
コマンドラインインターフェース(CLI)クライアント(dockerコマンド)。
Dockerアーキテクチャ(Dockerアーキテクチャ)
Dockerはクライアント/サーバーアーキテクチャを使用しています。DockerクライアントはDockerデーモンと通信します。Dockerデーモンは、Dockerコンテナーの構築、実行、および配布という重い作業を完了します。
Dockerは従来の仮想化とは異なり、仮想ハードウェアリソースを必要とせず、コンテナエンジンを直接使用するため、高速です
Dockerクライアント:クライアント
Dockerクライアント(docker)は、多くのDockerユーザーがDockerと対話する主な方法です。docker runなどのコマンドを使用すると、クライアントはこれらのコマンドをdockerdに送信して、これらのコマンドを実行します。dockerコマンドはDocker APIを使用します。Dockerクライアントは複数のデーモンと通信できます。
Dockerデーモン:デーモン
Dockerデーモン(dockerd)は、Docker APIリクエストをリッスンし、イメージ、コンテナー、ネットワーク、ボリュームなどのDockerオブジェクトを管理します。デーモンは他のデーモンと通信してDockerサービスを管理することもできます。
Dockerイメージ:イメージ
コンテナーをイメージにパッケージ化できます
Dockerコンテナー:コンテナー
Dockerレジストリ:ミラーリポジトリ
ミラーイメージを保存する場所。デフォルトでは、パブリックDocker Hubで検索され、個人用リポジトリを作成できます。
コンテナーと仮想マシンの違い
名前空間
Dockerは名前空間と呼ばれるテクノロジーを使用して、コンテナーに分離されたワークスペースを提供します。コンテナーを実行すると、Dockerはコンテナーの名前空間のセットを作成します。
これらの名前空間は、分離のレイヤーを提供します。コンテナーのすべての側面は個別の名前空間で実行され、そのアクセスはその名前空間に制限されます。
Docker EngineはLinuxで次の名前空間を使用し
ます:pid名前空間:プロセス分離(PID:プロセスID)。
ネット名前空間:管理ネットワークインターフェイス(NET:ネットワーク)。
ipc名前空間:IPCリソースへのアクセスを管理します(IPC:プロセス間通信)。
mnt名前空間:管理ファイルシステムのマウントポイント(MNT:マウント)。
uts名前空間:カーネルとバージョン識別子を分離します。(UTS:Unix Time Sharing System)。
対照群
Linux上のDockerエンジンは、cgroupsと呼ばれる別のテクノロジーにも依存しています。cgroupは、アプリケーションを特定のリソースセットに制限します。コントロールグループにより、Docker Engineは利用可能なハードウェアリソースをコンテナーと共有し、制限と制約を選択的に適用できます。たとえば、特定のコンテナで使用可能なメモリを制限できます。
かかって来い!公演!!
Dockerのインストール
ネットワーク最適化
[root@5centos ~]# setenforce 0
[root@5centos ~]# iptables -F
[root@5centos ~]# vim /etc/sysctl.conf ##末行插入
net.ipv4.ip_forward=1
[root@5centos ~]# sysctl -p
net.ipv4.ip_forward = 1
インストールツール
[root@5centos ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
Alibaba Cloudイメージを設定する
[root@5centos ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@5centos ~]# cd /etc/yum.repos.d/
[root@5centos yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo docker-ce.repo
Docker Community Editionをインストールする(主に無料)
[root@5centos yum.repos.d]# yum -y install docker-ce
[root@5centos yum.repos.d]# systemctl start docker
[root@5centos yum.repos.d]# docker version ##查看信息
Dockerアクセラレーション
アリババクラウド公式サイトの検索ミラー加速度は、1つ目は
、この選択し、次に
1を、
参照のための公式のチュートリアルがあります
Dockerの基本操作
ミラー検索
ドッカー検索画像名
[root@5centos /]# docker search nginx
画像ダウンロード
ドッカープル画像名
[root@5centos /]# docker pull wodby/nginx
既存の画像と詳細情報を表示する
docker images
docker inspect image ID
[root@5centos /]# docker images ##查看已有镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
wodby/nginx latest 971aceb353d9 4 weeks ago 75.4MB
[root@5centos /]# docker inspect 971aceb353d9 ##详细信息
イメージがダウンロードされて保存されます:/ var / lib / docker、ダウンロードされたファイル情報:/var/lib/docker/image/overlay2/repositories.json
タグをイメージ
Dockerタグに追加するウェアハウス名:元のタグウェアハウス名:新しい
タグタグを追加すると、古いタグと新しいタグが同時に存在します
[root@5centos /]# docker tag wodby/nginx:latest wodby/nginx:web
[root@5centos /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wodby/nginx latest 971aceb353d9 4 weeks ago 75.4MB
wodby/nginx web 971aceb353d9 4 weeks ago 75.4MB
ミラー削除
docker rmiミラーID
docker rmiミラー名
同じラベルがある場合は、ラベルIDを削除してエラーを報告します。ラベルが1つだけ残っている場合は、ラベルを削除できます
[root@5centos /]# docker rmi wodby/nginx:latest
Untagged: wodby/nginx:latest
[root@5centos /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wodby/nginx web 971aceb353d9 4 weeks ago 75.4MB
指定されたディレクトリ
Docker save -oに画像をエクスポートします対応するディレクトリウェアハウス名:ラベル
[root@5centos /]# docker save -o /opt/nginxweb wodby/nginx:web
[root@5centos /]# ls /opt/nginxweb
/opt/nginxweb
イメージの
docker loadをインポート <imageまたはdocker load --input image
[root@5centos opt]# docker load < nginxweb
Loaded image: wodby/nginx:web
ミラーアップロード
[root@docker ~]# docker login --username=juejue registry.cn-hangzhou.aliyuncs.com '//先登录'
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@docker ~]# docker tag ed21b7a8aee9 registry.cn-hangzhou.aliyuncs.com/tang_docker001/tang_docker001:latest
[root@docker ~]# docker push registry.cn-hangzhou.aliyuncs.com/tang_docker001/tang_docker001:latest '//开始上传'
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/tang_docker001/tang_docker001]
d37eecb5b769: Pushed
99134ec7f247: Pushed
c3a984abe8a8: Pushed
latest: digest: sha256:7ac7819e1523911399b798309025935a9968b277d86d50e5255465d6592c0266 size: 948
コンテナ操作
コンテナー
Dockerを作成しますcreate -it Warehouse name:label login environment
[root@5centos opt]# docker create -it wodby/nginx:web /bin/bash
603f7eb7f17de60b185f4285fac2c6cd1d4dd8d4bf97ee04fe39e7b7f885ef1a
コンテナーステータスの表示
docker ps -a
[root@5centos opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
603f7eb7f17d wodby/nginx:web "/docker-entrypoint.…" 2 minutes ago Created keen_zhukovsky
コンテナー
Dockerの開始コンテナーID
[root@5centos opt]# docker start 603f7eb7f17d
603f7eb7f17d
[root@5centos opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
603f7eb7f17d wodby/nginx:web "/docker-entrypoint.…" 4 minutes ago Up 3 seconds 80/tcp keen_zhukovsky
実行中のコンテナー
docker exec -itコンテナーID環境またはdocker run -itコンテナー名:ラベル環境を使用(実行後に自動的に終了)
[root@5centos opt]# docker exec -it 603f7eb7f17d /bin/bash
/var/www/html$
コンテナー
Docker停止コンテナーIDを停止します
[root@5centos opt]# docker stop 603f7eb7f17d
603f7eb7f17d
コンテナーを起動してバックグラウンドで実行する
[root@docker ~]# docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"
6101ea6eedbf7a1dcc75bb9d7cc1eb94e83b343b6829b6546d6ceda318545df6
##-c:命令
コンテナ輸出
[root@5centos opt]# docker export 603f7eb7f17d > /opt/nginx
[root@5centos opt]# ls /opt/
containerd nginx nginxweb rh
コンテナをインポート
するとミラーが生成されますが、コンテナは作成されません
[root@5centos opt]# cat /opt/nginx | docker import - nginx01
sha256:3383211c95ee1c0f09306cf893852c0aa8a4e9366f826502a8a76e54c1c0fa6b
[root@5centos opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx01 latest 3383211c95ee 10 seconds ago 75.2MB
wodby/nginx nginx 971aceb353d9 4 weeks ago 75.4MB
wodby/nginx web 971aceb353d9 4 weeks ago
コンテナーを削除します。
コンテナーのステータスを
docker rmコンテナーIDにすることはできません
[root@5centos opt]# docker rm 603f7eb7f17d
603f7eb7f17d
バッチ
Docker ps -a | awk '{print "docker rm" $ 1}' | bashでコンテナーを削除します
[root@5centos opt]# docker ps -a |awk '{print "docker rm "$1}'|bash
Error: No such container: CONTAINER
88429fd11d13
d5a4fe53ebb1
[root@5centos opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES