WeChatパブリックアカウントのJava Book Clubをフォローして、より良い記事を入手してください。
前のセクションでは、Dockerコアコンポーネントイメージを分析しましたが、このセクションでは、イメージレイヤーの上にあるコンテナーを拷問します。下の図から、コンテナが画像レイヤーに基づいて生成されていることがわかります。画像とコンテナの関係は、クラスとオブジェクトの関係と同様に理解できます。Dockerの世界では、イメージは読み取り専用ですが、コンテナーは読み取りと書き込みが可能です。
神の港湾労働者の最初の光景でコンテナーを作成する方法はすでに紹介しました。たとえば、tomcatを作成するコマンドは次のとおりです。
docker run -d --name my-tomcat -p 9090:8080 tomcat
コンテナから画像を反転
魂の拷問1:コンテナーが画像に基づいて作成されていることがわかっているので、コンテナーから画像を逆に取得できますか?
波を練習する例を見てみましょう
#1.拉取centos镜像
docker pull centos
#2.根据centos镜像创建出centos container
docker run -d -it --name my-centos centos
#3.进入my-centos容器中
docker exec -it my-centos bash
#4.输入vim命令,显示
bash: vim: command not found
#5.我们要做的是 对该container进行修改,也就是安装一下vim命令,然后将其生成一个新的centos #6.在centos的container中安装vim
yum install -y vim
#7.退出容器(exit或者Ctrl+d),将其生成一个新的centos,名称为"vim-centos-image"
docker commit my-centos vim-centos-image
#8.查看镜像列表,并且基于"vim-centos-image"创建新的容器
docker run -d -it --name my-vim-centos vim-centos-image
#9.进入到my-vim-centos容器中
docker exec -it my-vim-centos bash
#10.检查vim命令是否存在
vim
上記の操作の後、コンテナーの逆方向に作成してから新しいコンテナーを生成した画像は、元のコンテナーの特性を継承していることがわかりました。ただし、この方法はお勧めしません。通常の操作ではDockerファイルを使用してイメージを生成するため、これを行うと、イメージの作成プロセスを知ることができません。より推奨される方法は、前のセクションのカスタムイメージです。
コンテナーの一般的なコマンド
上記のコンテナを操作するためにいくつかのコマンドを使用しました。ここに要約を示します。
#1.根据镜像创建容器
docker run -d --name -p 9090:8080 my-tomcat tomcat
#2.查看运行中的container
docker ps
#3.查看所有的container[包含退出的]
docker ps -a
#4.删除container
docker rm containerid
#5.删除所有container
docker rm -f $(docker ps -a)
#6.进入到一个container中
docker exec -it container bash
#7.根据container生成image
docker commit my-centos vim-centos-image
#8.查看某个container的日志
docker logs container
#9.查看容器资源使用情况
docker stats
#10.查看容器详情信息
docker inspect container
#11.停止/启动容器
docker stop/start container
補足:画像とコンテナの削除コマンド
#1.杀死所有正在运行的容器
docker kill $(docker ps -a -q)
#2.删除所有已经停止的容器
docker rm $(docker ps -a -q)
#3.删除所有未打 dangling 标签的镜
docker rmi $(docker images -q -f dangling=true)
#4.删除所有镜像
docker rmi $(docker images -q)
#5.强制删除 无法删除的镜像
docker rmi -f <IMAGE_ID>
docker rmi -f $(docker images -q)
~/.bash_aliases
#1.杀死所有正在运行的容器.
alias dockerkill='docker kill $(docker ps -a -q)'
#2.删除所有已经停止的容器.
alias dockercleanc='docker rm $(docker ps -a -q)'
#3.删除所有未打标签的镜像.
alias dockercleani='docker rmi $(docker images -q -f dangling=true)'
#4.删除所有已经停止的容器和未打标签的镜像.
alias dockerclean='dockercleanc || true && dockercleani'
コンテナーリソースの監視
名前が示すように、コンテナとして、彼には独自の「サイズ」が必要であり、コンテナのリソースを適切に使用するだけでパフォーマンスを向上させることができます。
以上で、コンテナーの基本的な操作コマンドを理解しました。DockerStatsを実行して、Dockerコンテナーのステータス情報を詳細に確認できます。
デフォルトのメモリ割り当てがホストの最大メモリを使用していることがわかります。これにより、リソースが制御不能になります。
リソースの制約に関しては、主に次の2つの方法で対処できます。
-
メモリ制限
#--memory memory limit docker run -d --memory 100M --name tomcat1 tomcat
-
CPU制限
#--cpu-shares cpu权重 docker run -d --memory 100M --cpu-shares 10 --name tomcat02 tomcat
上の写真から、設定が成功したことがわかります。特定のサイズは実際の状況に応じて柔軟に調整できます。
コマンドラインは操作して見るのには問題ありませんが、実稼働環境では、コンテナーの数が多いと、コマンドラインが拡張されます。現時点では、強力なコンテナ監視ツールを使用する必要があります
織り機
githubアドレス:https://github.com/weaveworks/scope
このツールは強力で簡単に構築できますが、小さな障害があるかもしれませんが、簡単に解決できます。
#1.配置weavescope环境
sudo curl -L git.io/scope -o /usr/local/bin/scope
sudo chmod a+x /usr/local/bin/scope
scope launch 192.168.110.164
#2.页面访问http://192.168.110.164:4040/,此时可能会出现页面无法访问的问题.我们要检查下4040端口是否启用。
#2.1 查看端口状态
firewall-cmd --query-port=4040/tcp
#2.2 添加端口
firewall-cmd --add-port=4040/tcp --permanent
#2.3 端口重载
firewall-cmd --reload
織り方の詳細な紹介:
公式ウェブサイトを参照できます:https://www.weave.works/docs/
次の記事もご覧ください:https://www.jianshu.com/p/1155b97bfdd8
コンテナ技術サポート
上記では、コンテナーのいくつかの重要なポイントについて説明しました。
コンテナは、仮想マシンを作成するためにハードウェアをシミュレートする必要がない軽量の仮想化テクノロジーです。Dockerは、Linuxカーネルの名前空間、CGroups、UnionFileSystem、および一連の仮想オペレーティング環境を提供するその他のテクノロジーに基づいてカプセル化されたカスタムコンテナー形式です。
名前空間:pid [process]、net [network]、mnt [mount point]などの分離に使用されます。
CGroups:コントローラグループは、メモリやCPUなどのリソースを制限するために使用されます
ユニオンファイルシステム:イメージとコンテナーのレイヤーに使用
さらに詳しく知りたい場合は、次の記事「運用と保守のDockerネットワーク分析」を参照してください。