Dockerの基本的な管理

1つは、Dockerの概要

1.1 Dockerとは何ですか?

  • 軽量の「仮想マシン」です
  • Linuxコンテナーでアプリケーションを実行するためのオープンソースツールです。
  • DockerはGo言語に基づくクラウドオープンソースプロジェクトです
  • Dockerの主な目標は、「どこでも、あらゆるアプリケーションを構築、配布、実行する」ことです。つまり、パッケージング、配布、展開、操作などのアプリケーションコンポーネントのライフサイクル管理を通じて、ユーザーのAPP(WEBアプリケーションまたはデータベースアプリケーションにすることができます)です。など)とその動作環境では、「1つのパッケージでどこでも実行」を実現できます。

1.2 Dockerと仮想マシンの違い

Dockerは、Dockerの
安全なリソース割り当てのためにホストカーネルリソースcgroupを共有し、リソースが論理的に分離されるため、Dockerは仮想マシンほど安全ではありません

違い ドッカー 仮想マシン
必要なリソース もっと少なく たくさんの
始まる時間 短い(10ミリ秒) 長い(数分)
安全性 共有カーネル、安全ではない システムの論理的分離、安全性
サービス コンテナーごとに1つのサービスのみを実行する 複数を実行できます

1.3 Dockerの使用シナリオ

  • パッケージ化されたアプリケーションは導入を簡素化
  • 基盤となるハードウェアなしで自由に移動できます

1.4 Dockerの利点

●設定の簡素化
Dockerはソースコードから設定までコンテナにパッケージ化できるため、多くの設定を簡素化できます
●統合サーバー
●コードパイプライン管理
●デバッグ能力
●開発効率の
向上設定の簡素化により、開発効率が確実に向上します。Dockerのもう1つの特徴は、テスト環境を実現できることであり、準本番環境とオンライン環境はほぼ同じ環境と構成を維持します。これにより、開発およびデバッグのエラーと問題解決の効率が大幅に低下します。
●マルチテナント
●アプリケーションの分離
複数のアプリケーションを異なるコンテナーに配置して分離できます。各コンテナーは他のコンテナー内のアプリケーションに干渉しません

元の操作をすばやく展開しますメンテナンス担当者は多くのオンライン環境を構成する必要があります。ソフトウェアをデプロイするには、すべてのデータをコンテナにパッケージ化し、コンテナをダウンロードして起動し、
Dockerのコアコンセプトとデプロイメントをすばやく完了するようにコンテナを構成するだけです。

1.5 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コンテナーにパッケージ化できます:container

  • Dockerレジストリ:ミラーイメージが
    保存される場所。デフォルトでは、パブリックDocker Hubで検索され、個人用の倉庫を作成できます。

2. Dockerのインストールと最適化

2.1依存パッケージと環境をインストールする

[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data   lvm2 
##  yum-utils 提供了yum-config-manager     
 device-mapper-persistent-data  ## device magger 存储驱动程序需要device-mapper-persistent-data和lvm2
## Device Mapper是 Linux2.6内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构

2.2 Alibaba Cloudのミラーソース設定

[root@localhost yum.repos.d]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ## 设置阿里云镜像源
[root@localhost yum.repos.d]# ls
CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  CentOS-Vault.repo  docker-ce.repo

2.3 dockerをインストールする

[root@localhost yum.repos.d]# yum -y install docker-ce
[root@localhost yum.repos.d]# systemctl stop firewalld.service 
[root@localhost yum.repos.d]# setenforce 0
[root@localhost yum.repos.d]# vim /etc/selinux/config
SELINUXTYPE=disabled
[root@localhost yum.repos.d]# systemctl start docker.service 
[root@localhost yum.repos.d]# systemctl enable docker.service 

2.4ミラー加速

  • 誰もが独自のAlibaba Cloudイメージアクセラレーションアドレスを持っている
  • 特定の手順は次のとおりです。Alibaba Cloud Gatewayにログインします-ミラーアクセラレーションを検索します————最初の公式イメージアクセラレーションを
    クリックします————マウスを右下隅に移動し、ポップアップする小さなウィンドウをクリックして、コンテナーミラーサービスを選択します——————新規ウィンドウの管理コンソールをクリックし、ミラーイメージアクセラレータをクリックします。
    ここに画像の説明を挿入
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://pdvp1s0o.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2.5ネットワークの最適化

[root@localhost yum.repos.d]# vim /etc/sysctl.conf
[root@localhost yum.repos.d]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost yum.repos.d]# systemctl restart network
[root@localhost yum.repos.d]# systemctl restart docker

3、Dockerの基本的なコマンド

3.1ミラー操作

  • 検索ミラー
docker  search  nginx   ## 搜索nginx镜像
  • ミラーをダウンロード
docker pull  nginx     ## 下载nginx镜像   (stars–星级:代表着镜像的使用率)
  • ミラーを見る
[root@localhost ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
httpd                 centos              6d968a4bc824        6 hours ago         419MB
nginx                 latest              7e4d58f0e5f3        10 days ago         133MB
nginx                 web                 7e4d58f0e5f3        10 days ago         133MB
centos                7                   7e6257c9f8d8        5 weeks ago         203MB
paigeeworld/centos7   latest              4cbe7aa905e7        6 years ago         382MB

  • ミラーの詳細を表示
[root@localhost ~]# docker inspect  6d968a4bc824   ## 后面跟ID
  • 画像にタグを付ける
docker  tag  nginx:latest  nginx:web     ## 添加标签  并不是把原来的latest改掉了,而是以原来的基础上,添加了一个别名
  • ミラーを削除
docker  rmi  nginx:web      ## 删除 标签   i是image  不加就是删容器     ## 后面的标签也可以改为ID,但是ID对应是只有一个标签,有别名 不可以直接删
  • 画像をエクスポート
[root@docker ~]# docker save -o /opt/nginx001 nginx:latest	 ## docker save -o 相应目录 仓库名:标签
[root@docker ~]# ls /opt
containerd  nginx001
  • 画像をインポート
[root@docker ~]# docker load < /opt/nginx001 	'//方法一'docker load < 镜像
Loaded image: nginx:latest
[root@docker ~]# docker load --input /opt/nginx001	'//方法二'docker load --input 镜像
Loaded image: nginx:latest
  • 画像をアップロード
改标签
[root@localhost ~]# docker  tag  nginx:latest     //wang/nginx:web ##//用户名/仓库名/镜像名
 //登录
docker  login
Username:docker
password:
Email:[email protected]
//上传镜像
docker push  //wang/nginx:web

3.2コンテナの基本操作

  • コンテナーの作成:docker create -it Warehouse name:label login environment
docker  create -it  nginx:latest  /bin/bash   ## -i  表示让容器的标准输入保持打开  -t  让Docker分配一个伪终端  
  • コンテナリストを表示する
docker  ps  -a  ## 容器列表  -a 列出所有容器,包括未运行的容器   不加-a  只列出up状态的容器
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                       PORTS                  NAMES
275a7b973fae        httpd:centos          "/run.sh"                6 hours ago         Exited (255) 8 minutes ago   0.0.0.0:8080->80/tcp   recursing_darwin
9fb9c1835546        paigeeworld/centos7   "/bin/bash"              12 hours ago        Exited (255) 8 minutes ago                          xenodochial_chandrasekhar
db5b95050922        nginx:latest          "/docker-entrypoint.…"   12 hours ago        Exited (0) 8 minutes ago     80/tcp                 quizzical_curran

  • コンテナーを開始する
[root@localhost ~]# docker start 275a7b973fae
275a7b973fae
[root@localhost ~]# docker  ps  -a  
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                       PORTS                  NAMES
275a7b973fae        httpd:centos          "/run.sh"                6 hours ago         Up 2 seconds                 0.0.0.0:8080->80/tcp   recursing_darwin
9fb9c1835546        paigeeworld/centos7   "/bin/bash"              12 hours ago        Exited (255) 9 minutes ago                          xenodochial_chandrasekhar
db5b95050922        nginx:latest          "/docker-entrypoint.…"   13 hours ago        Exited (0) 9 minutes ago     80/tcp                 quizzical_curran

  • 実行中のコンテナーにログインします。2つのメソッド
    docker exec -itコンテナーID環境
    docker run -itコンテナー名:ラベル環境
[root@docker ~]# docker exec -it 36c6af332247 /bin/bash
[root@36c6af332247 /]# ls	'//可以输入命令'
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@36c6af332247 /]# exit	'//退出'
exit
[root@docker ~]# docker ps -a	'//刚刚的容器依旧是up状态'
  • コンテナを停止
[root@localhost ~]# docker stop 275a7b973fae
275a7b973fae
[root@localhost ~]# docker  ps  -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                        PORTS               NAMES
275a7b973fae        httpd:centos          "/run.sh"                6 hours ago         Exited (137) 4 seconds ago                        recursing_darwin
9fb9c1835546        paigeeworld/centos7   "/bin/bash"              12 hours ago        Exited (255) 12 minutes ago                       xenodochial_chandrasekhar
db5b95050922        nginx:latest          "/docker-entrypoint.…"   13 hours ago        Exited (0) 12 minutes ago     80/tcp              quizzical_curran

  • コンテナーを起動してコマンドを実行します(バックグラウンドで継続的に実行)
[root@docker ~]# docker run -d  centos:7 /bin/bash -c "while true;do echo hello;done"  ## 后面写一个死循环
6101ea6eedbf7a1dcc75bb9d7cc1eb94e83b343b6829b6546d6ceda318545df6
'//-c:命令'
  • コンテナ輸出
docker  export   ID号  > nginx_c
  • コンテナのインポ​​ート
## 容器导入  (会生成镜像,而不会创建容器)
cat nginx_c | docker import - nginx:web
  • コンテナを削除
docker  rm   ID 
docker rmi  id  ## 删除镜像,正在被容器使用不可删,镜像在某个容器里,即使已经关闭容器,镜像也不能删
  • コンテナーを一括で削除する
docker ps -a | awk '{print "docker rm" $1  }'  | bash     ## up 状态的也不会删 ,只会删除关闭状态得容器  bash   用bash命令执行
  • 実行コマンドを開始して、システムのルートディレクトリを表示します。
docker pull  paigeeworld/centos7    ## 下载centos 镜像
docker create -it paigeeworld/centos7  /bin/bash   ## 在/bin/bash 环境下  创建包含centos7镜像的容器
docker start 9fb9c1835546f2fa4d2e88a77210d17104fc968245613885dffe2a5d16e77268  ## 运行容器

docker run  paigeeworld/centos7  /usr/bin/bash -c ls /  ## run命令 上面命令三合一
## 执行完成直接关闭  状态时Exited

おすすめ

転載: blog.csdn.net/weixin_47219725/article/details/108691608