1. なぜ勉強するのか
私たちは何かを学ぶたびに、ある要件に基づいてそれを学ばなければなりません.誰もが知っているように、ソフトウェア開発で最も厄介な部分は環境の構成です.開発がうまくいくと、問題を展開するのが難しくなります.したがって、開発、テスト、および展開環境が一貫していることを確認するため、および効率的な展開のために、VM の代わりにコンテナー テクノロジが選択され、Docker は Linux コンテナー テクノロジに基づくオープン ソース プロジェクトです。そのマントラは次のとおりです。どこでも」、軽量、スピード、アクティブなコミュニティ、高いスケーラビリティを備えています。家の手伝いから建物の移動まで、どこでも実行
(1) 機能:
動作環境と構成の問題を解決し、継続的な統合を促進し、コンテナ Unreal テクノロジの全体的なリリースを支援します
(2) 具体的なシナリオ:
アプリケーションの配信と展開の高速化
アップグレードとスケーリングの高速化
システムの運用と保守が容易
コンピューティング リソースの使用率の向上
二、docker構成
(1) 鏡像:イメージ
読み取り専用のテンプレート。ミラーリングを使用して Docker コンテナーを作成できます. 1 つのミラーリングで多数のコンテナーを作成できます. Docker イメージ ファイルは Java クラス テンプレートに似ており、Docker コンテナー インスタンスは Java の新しいインスタンス オブジェクトに似ています.
(2)コンテナ:コンテナ
これはミラーリングで作成された実行中のインスタンスであり、ミラーリング用の標準的な分離実行環境を提供し、開始、開始、停止、および削除することができます。Java のクラスやインスタンス オブジェクトと同様に、イメージは静的な定義であり、コンテナーはイメージが実行されているときのエンティティです。
(3)倉庫:保管場所
画像ファイルが集中的に保存される場所です。さまざまな git プロジェクトが保存されている github リポジトリに似ています。倉庫は公営倉庫と私設倉庫に分かれており、最大の公営倉庫であるDocker Hubには、ユーザーがダウンロードできる大量の画像が保存されており、国内の公営倉庫にはAlibaba CloudやNetEase Cloudなどがあります。
3. インストール
パスをダウンロードし、対応するオペレーティング システム (window10 システム、Developers - Docker)を選択し、ダウンロードした exe ファイルをダブルクリックします。最初の起動で仮想マシンが作成されます。数分待ちます。
インストールが成功したかどうかを確認します。ターミナル コマンドで docker -v と入力して、docker のバージョンを確認できます。
Docker デスクトップのインストール プロセス中にインストール エラーが発生した場合は、2 番目の手順の対応する手順を再実行して、hyper-v を有効にし、コンピューターを再起動してから、Docker デスクトップをインストールします。
4. 簡単なコマンド
#启动docker
systemctl start docker
#停止docker
systemctl stop docker
#重启docker
systemctl restart docker
#查看docker状态
systemctl status docker
#查看docker信息
docker info
ミラー コマンド:
#拉取镜像
docker pull 镜像名
docker pull 镜像名:tag
#查看镜像
docker images
#删除镜像
docker rmi -f 镜像名/镜像ID #删除一个
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID #删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f $(docker images -aq) #删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
#搜索镜像
docker search 镜像名
docker search --filter=STARS=9000 mysql 搜索 STARS >9000的 mysql 镜像
#运行镜像
docker run 镜像名
docker run 镜像名:Tag
#保存镜像
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
コンテナ コマンド:
#运行nginx容器
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash
docker run -d --name test-nginx -p 3000:80 nginx
# 查看正在运行的容器
docker ps
# 查看所有创建过的容器(运行或者关闭)
docker ps -a
# 停止容器
docker stop [container]
# 启动容器
docker start [container]
# 删除容器
docker rm -f [containerid]
# 查看后台运行的日志
docker logs [containe]
#进入容器的shell
docker container exec -it [containe] /bin/bash
5.画像を引っ張る場合
1.nginx イメージをプルする
docker pull nginx
2. nginx ミラーを開始します
docker run -d --name test-nginx -p 3000:80 nginx
3. localhost:3000 を開いて、使い慣れた nginx ページにアクセスします。
初心者は間違いなくnginxとは何ですか?
Nginx (「engine-x」と発音) は、HTTP、HTTPS、SMTP、POP3、および IMAP プロトコル用のオープン ソース リバース プロキシ サーバーであり、ロード バランサー、HTTP キャッシュ、および Web サーバー (オリジン サーバー) も備えています。nginx プロジェクトは、高い同時実行性、高いパフォーマンス、および低いメモリ使用量に重点を置いて開始されました。BSD のような条項 2 ライセンスの下でライセンスされ、Linux、BSD バリアント、Mac OS X、Solaris、AIX、HP-UX、およびその他の *nix フレーバーで実行されます。また、Microsoft Windows への移植の概念実証も提供します。
6. 遭遇した問題
1. イメージをプルするときに、次のエラー メッセージが表示される場合があります。
この問題の主な原因は、docker デスクトップが開始されていないことです。
2. 起動後、次のポップアップが表示されます (表示されない場合は無視してください。表示されている場合は、以下の手順に従って続行します)。再起動をクリックすると、WLS 2 を更新する必要があるため、常に失敗します。
Windows は WSL1 を WSL2 にアップグレードすることをお勧めします_Xeon-Shao のブログ - CSDN blog_wsl1 は wsl2学習にアップグレードします。
古いバージョンの WSL の手動インストール手順に従って実行することもできます| Microsoft Docs の手順
(上記の2つの推奨ソリューションを読んだ後、最初に片側を実行することをお勧めします)
3. wsl_update_x64.msi をダウンロードし、ダブルクリックしてインストールします
4. powershell で wsl-set-default-version-2 と入力します。
この手順が完了したら、[再起動] をクリックし、しばらく待つと docker が起動します
5. docker pull nginx と入力し、nginx イメージを正常にプルします。
7. Dockerfile でミラーを構築する (Windows 環境)
(1) ケース 1: hello Docker を出力する
1. デスクトップに新しい docker-test フォルダーを作成し、そこに Dockerfile を配置します。Dockerfile の内容は次のとおりです。
#指定基础的镜像为nginx。
FROM nginx:latest
#: 指定镜像创建者TTT和联系方式。
MAINTAINER TTT [email protected]
#容器内部执行的命令(在index.html中输出‘hello, Docker!’)。
RUN echo '<h1>hello, Docker!</h1>' > /usr/share/nginx/html/index.html
2. docker-test フォルダに対応するディレクトリ アドレス バーに cmd と入力し、コマンド プロンプト ウィンドウを開き、コマンドを入力します。
# 生成一个名为 nginx 标签为0.0.1 的镜像 ,注意最后还有一个 .
docker image build -t nginx:0.0.1 .
以下に示すように
3.鏡像を表示します。自分で生成した追加の鏡像があります
4.コンテナを起動する
# 根据刚生成的镜像 启动容器
docker run -d --name test-nginx1 -p 3001:80 nginx:0.0.1
5. locahost:3001 へのアクセスは、デフォルトの nginx アクセス ページではなくなりました
ここでパラメータを説明します
- -p パラメーターは、コンテナーのポート 80 がマシンのポート 3001 にマップされることを意味します。
- -d 実行中のデーモン (アプリケーションおよびサービスの実行に適しています)
- --name 指定されていない場合のコンテナ名はランダムな名前です
(2) ケース 2、index.html を出力する
1. ケース 1 のフォルダーに index.html ファイルを追加します。docker-test フォルダーに新しい index.html を作成します。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Hello World</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
2. Dockerfile ファイルを変更します。焦点は次のとおりです。 COPY index.html /usr/share/nginx/html/index.html
# 声明基于 nginx 最新的镜像 这里说一下镜像名:后面的是标签 默认是latest
FROM nginx:latest
# 把刚才 index.html 复制到 nginx 的 html 路径去
COPY index.html /usr/share/nginx/html/index.html
# 声明暴露80端口,要是运行不成功就把这句去掉
EXPOSE 80
3. コマンドを実行します. ここで以前のコンテナとイメージを削除する必要があることに注意してください (コンテナとイメージを削除するコマンドをテストし、最初にコンテナを停止し、コンテナを削除してからイメージを削除します), そうしないとできません.ケース1で生成されたイメージを削除します。 以下を変更しますイメージのラベルを変更し、コンテナ起動時の名前を変更します
# 生成一个名为 nginx 标签为0.0.1 的镜像 ,注意最后还有一个 .
docker image build -t nginx:0.0.1 .
# 根据刚生成的镜像 启动容器
docker run -d --name test-nginx1 -p 3001:80 nginx:0.0.1
4. locahost:3001 にアクセスします。
もちろん、実際の開発では、このように変更することは絶対に不可能です. たとえば、以前のポート マッピングは、コンテナーの内部ディレクトリをマッピングして共有共有を実現することもできます. ボリュームを使用することもできます. ここで最初に学び、ボリュームを使用します.後で学習して更新する