Dockerのインストールと基本的な操作コマンド(詳細な写真とテキスト!)

Dockerのインストールと基本的な操作コマンド(詳細な写真とテキスト!)

記事のディレクトリ

1.Dockerの概要

Dockerは、開発と実装にGoogleが立ち上げたGo言語を使用します。これは、Linuxカーネルのcgroup、名前空間、およびAUFSのようなUnion FSテクノロジーに基づいて、オペレーティングシステムレベルの仮想化テクノロジーであるプロセスをカプセル化および分離します。分離されたプロセスは、ホストや他の分離されたプロセスから独立しているため、コンテナとも呼ばれます。最初の実装はLXCに基づいていました。バージョン0.7以降、LXCは削除され、自己開発のlibcontainerが使用されています。1.11から、runCとcontainerdを使用するようにさらに進化しました。

Dockerは、コンテナーに基づいて、ファイルシステム、ネットワーク相互接続からプロセス分離などに至るまで、さらにカプセル化を実行しました。これにより、コンテナーの作成と保守が大幅に簡素化されます。これにより、Dockerテクノロジーは仮想マシンテクノロジーよりも移植性が高く、高速になります。

1.従来の仮想マシンとDockerの比較

  • 次の図と表は、Dockerと従来の仮想化方法の違いを比較しています。従来の仮想マシンテクノロジーは、ハードウェアのセットを仮想化し、その上で完全なオペレーティングシステムを実行してから、システム上で必要なアプリケーションプロセスを実行することです。一方、コンテナー内のアプリケーションプロセスは、ホストのカーネル上で直接実行されます。コンテナには独自のカーネルがなく、ハードウェア仮想化もありません。したがって、コンテナは従来の仮想マシンよりもポータブルです。

従来の仮想マシンとDockerのアーキテクチャの比較
ここに画像の説明を挿入
従来の仮想マシンとDockerの特性の比較

特性 仮想マシン 容器
始まる時間 スロー 速い
占有容量 大(GBレベル) 小(MBレベル)
システム 論理的分離 カーネルに依存します(共有)
システムサポート 一般的に数十 単一のマシンが数千のコンテナをサポート
パフォーマンス ネイティブより弱い ネイティブに近い
安全性 強い 弱い

2.Dockerとは

  • 軽量の「仮想マシン」です
  • Linuxコンテナでアプリケーションを実行するためのオープンソースツール

ここでの仮想マシンの二重引用符は、システムをコンテナにインストールする必要がないためです。

3.Dockerの使用シナリオ

パッケージ化されたアプリケーションは展開を簡素化
し、基盤となるハードウェアから自由に移行できます(たとえば、TencentCloudからAlibabaCloudへのサーバー移行)
。典型的なDockerシナリオは、DockerWebサイトに記載されています。

Automating the packaging and deployment of applications(使应用的打包与部署自动化)

Creation of lightweight, private PAAS environments(创建轻量、私密的PAAS环境)

Automated testing and continuous integration/deployment(实现自动化测试和持续的集成/部署)

Deploying and scaling web apps, databases and backend services(部署与扩展webapp、数据库和后台服务)
由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)

4.Dockerを使用する理由

1)システムリソースのより効率的な使用

2)起動時間の短縮

3)一貫した動作環境

4)継続的デリバリーと展開

5)より簡単な移行

6)より簡単なメンテナンスと拡張

5.クラウドコンピューティングの3層構造

SAAS(应用即服务) devops CI/CD 持续交付/持续集成  极速迭代产品(亚马逊11.6秒)
PAAS(平台即服务) 环境(架构) docker kubernets mysql
IAAS(基础设施即服务) 硬件(服务器、网络设备、防火墙等)虚拟化、网络虚拟化——>大二层

6.Dockerのコアコンセプトとインストール方法

1)Dockerのコアコンセプト

  • ミラー
    Dockerコンテナエンジンの読み取り専用テンプレート

  • イメージから作成されたコンテナ実行インスタンス
  • 倉庫
    鏡像を一元的に保管する場所

2)CentOSにDockerをインストールする2つの方法

  • CURLを使用して、インストール用のDockerインストールスクリプトを取得します
  • YUMリポジトリを使用してDockerをインストールします

次に、Dockerをインストールします

1.最新バージョンのDocker依存バージョン環境をインストールします

iptables -F
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install -y yum-utils device-mapper-persistent-data lvm2 		#在线源安装

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

ここに画像の説明を挿入

2.dockerコミュニティバージョンのAlibabaCloudイメージソースを設定します

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

ここに画像の説明を挿入

メタデータキャッシュの確立
yumソースの更新またはyumソースの構成、通常、yum makecacheを使用してキャッシュを生成します。
このコマンドは、ソフトウェアの検索とインストールの速度を向上させるために、パッケージ情報を事前にローカルにキャッシュします。

yum makecache fast

ここに画像の説明を挿入

3. dockerをインストールし、起動後に自動的に起動するように設定して、dockerのバージョンを確認します

yum -y install docker-ce
cd /etc/docker  #这里因为还没启动docker所以还没生成目录

systemctl start docker
systemctl enable docker
cd /etc/docker
ls

ifconfig

docker version

ここに画像の説明を挿入
ここに画像の説明を挿入

4. AlibabaCloudのイメージアクセラレータを構成します

Alibaba Cloudの公式ウェブサイト:https//account.aliyun.com/AlibabaCloudに
ログイン->コンソール->コンテナミラーリングサービスを検索->左下隅にある[ミラーツール]ドロップダウンをクリックして、 「MirrorAccelerator」でアクセラレータを
設定し、Loadサービスを再起動します

tee /etc/docker/daemon.json <<-'EOF'
{
    
    
  "registry-mirrors": ["阿里云镜像加速地址"]
}
EOF

systemctl daemon-reload 
systemctl restart docker

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

5.ネットワークの最適化

vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
service network restart
systemctl restart docker

ここに画像の説明を挿入

3つの基本的なコマンド

Dockerのバージョン情報を表示する

docker version

ここに画像の説明を挿入

1.ミラーリングの操作

指定されたミラーを検索します

docker search 服务名
例如:
docker search nginx

ここに画像の説明を挿入

ミラーをダウンロード

docker pull 服务名
例如:
docker pull nginx

ここに画像の説明を挿入

ミラー情報を表示する

docker images
docker inspect 镜像的ID
例如
docker images
docker inspect f6d0b4767a6c

ここに画像の説明を挿入

ミラーにタグを付ける

注:ミラーIDは、ラベル付け後も変更されません。

docker tag 仓库名:原镜像名 仓库名:新镜像名
例如:
docker tag nginx:latest nginx:test
docker images
docker images | grep nginx

ここに画像の説明を挿入

ミラーを削除する

docker rmi 镜像的ID
docker rmi 仓库名:镜像名
例如:
docker rmi f6d0b4767a6c
docker images
docker rmi nginx:test
docker images

ここに画像の説明を挿入

ミラーストレージ

docker save -o 存放镜像的位置 仓库名:镜像名
例如:
docker save -o /opt/nginx_latest nginx:latest

ここに画像の説明を挿入

画像を読み込んでいます

方法一:
docker load < 本地导出的镜像名
方法二:
docker --input 本地导出的镜像名

例如:
docker load < nginx_latest
docker load --input nginx_latest

ここに画像の説明を挿入

画像をアップロード

docker push [OPTIONS] NAME[:TAG]

例如:按照下面的流程就可以上传到公有云,有兴趣的可以上传
#改标签
docker tag 仓库名:镜像名 用户名/仓库名:镜像名
#登录
docker login
Username:   #用户名
Password:   #密码

#上传
docker push 用户名/仓库名:镜像名

2.コンテナの操作


コンテナの実行ステータスを表示します。コンテナのステータスステータス
アップです。終了
(0)は、正常に停止したコンテナです。終了(0では
ない)異常に停止したコンテナです。

docker ps       #查看运行中的容器
docker ps -a    #加-a 列出所有的容器,包括未运行的容器

ここに画像の説明を挿入

コンテナを作成する

docker create [选项] 镜像运行的程序
-i:让容器的标准输入保持打开
-t:让Docker分配一个伪终端

例;
docker create -it nginx:latest /bin/bash

ここに画像の説明を挿入

コンテナを開始、停止、および再起動します

docker start 容器ID:启动一个或多个已经被停止的容器
docker stop 容器ID:停止一个运行中的容器
docker restart 容器ID:重启容器
例:
docker start 25827a2ed368
docker ps -a
docker stop 25827a2ed368
docker ps -a
docker restart 25827a2ed368

ここに画像の説明を挿入

コンテナ操作

docker run [选项] 镜像 [命令] [变量]
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-c 命令表示后面的参数将会作为字符串读入作为执行的命令
-v: 绑定一个卷
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
--name="名称": 为容器指定一个名称
--link name:alias 添加链接到另一个容器,格式“--link容器名:别名”
例如:
docker run nginx
docker run -d nginx
docker run -d nginx /bin/bash -c "ls" #命令表示后面的参数将会作为字符串读入作为执行的命令

注:初めてrunを使用し、その後のメンテナンスにstart / stop / restartを使用してみてください。
ここに画像の説明を挿入

コンテナに出入りする

注:コンテナが実行されている場合にのみ入力できます

docker exec [选项] 容器 命令
例:
docker exec -it 22550a179349 /bin/bash
docker exec -it 344fb940bebf /bin/bash
exit//退出容器

ここに画像の説明を挿入

コンテナの輸出入

#容器导出
docker export 容器ID > 备份文件名

#容器导入(会生成镜像,而不会创建容器)
cat 备份文件名 | docker import - 仓库名:镜像名

例如:
docker export 22550a179349 > nginx_up
docker export 344fb940bebf > nginx_exited

cat nginx_up | docker import - nginx:web

ここに画像の説明を挿入

コンテナを削除する

docker rm 容器ID
例如:
docker rm 4d8dcf51a4ef
//批量删除容器
docker ps -a | awk '{print "docker rm "$1}' | bash

ここに画像の説明を挿入

3.民間倉庫の運営

プライベート倉庫を作成する

ここに画像の説明を挿入
/etc/docker/daemon.json構成ファイルを変更します
注:上記の角かっこの後に必ず英語の記号コンマを追加してください。そうしないと、エラーが報告されます。

vim /etc/docker/daemon.json
{
    
    
"insecure-registries": ["192.168.2.4:5000"],     这里添加
"registry-mirrors": ["阿里云加速地址"]
}
systemctl restart docker.service
docker create -it registry /bin/bash
docker ps -a

docker start 8480e3f87c8e

ここに画像の説明を挿入

コンテナの取り付け

注:docker runは、関連するディレクトリを自動的に作成し、コンテナを再作成します

docker run -d -p 宿主机端口:容器内部端口 -v 宿主机目录:容器内目录 镜像
例:
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry

ここに画像の説明を挿入

タグ付け

docker tag nginx:latest 192.168.2.4:5000/nginx

ここに画像の説明を挿入

画像をプライベートウェアハウスにアップロードする

docker push 192.168.2.4:5000/nginx

ここに画像の説明を挿入

プライベートリポジトリのリストを取得する

curl -XGET http://192.168.2.4:5000/v2/_catalog
//显示上传成功
(""repositories":[""nginx"")

ここに画像の説明を挿入

プライベートリポジトリのダウンロード

先移除原有的
docker rmi 192.168.2.4:5000/nginx
再下载测试下
docker pull 192.168.2.4:5000/nginx

ここに画像の説明を挿入

4.データボリュームとデータボリュームコンテナ

データ量

docker runコマンドを実行すると、関連するディレクトリが自動的に作成されます

docker run -v /var/www:/data1 --name test -it centos:7 /bin/bash

cd /data1/
touch test01

返回宿主机进行查看
ls /var/www/

ここに画像の説明を挿入

データボリュームコンテナ

//数据卷容器
docker run --name sjj -v /data1 -v /data2 -it centos:7 /bin/bash
//新容器挂载数据卷容器juan
docker run -it --volumes-from sjj --name test2 centos:7 /bin/bash

ここに画像の説明を挿入
注:
データボリュームとデータボリュームコンテナの違い
データボリュームはホストにマウントされ
ますデータボリュームコンテナはコンテナとコンテナの間に–volumes-fromを介してマウントされます

5.ポートマッピング

ランダムポートマッピング

docker run -d -P nginx

ここに画像の説明を挿入
ブラウザで
192.168.2.4:49153
アクセスして、nginxホームページ直接アクセスします
ここに画像の説明を挿入

ポートマッピングを指定する

docker run -d -p 40000:80 nginx

ここに画像の説明を挿入
ここに画像の説明を挿入

6.コンテナの相互接続

//创建并运行容器取名web1,端口号自动映射
docker run -itd -P --name web1 centos /bin/bash

//创建并运行容器取名web2,链接到web1和其通信进web22容器 ping web1
docker run -itd -P --name web2 --link web1:web1 centos /bin/bash

--link name:alias                  --link容器名:别名

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_35456705/article/details/115122226