これは、昼も夜も欲しいドッカーです!!!--------- Dockerイメージの作成とプライベートウェアハウスの確立

1つ、ドッカー画像紹介

1. Dockerイメージとは

Dockerイメージは、ファイルシステム(ファイルストレージの形式)によってスーパーインポーズされます。下部には、ファイルブートシステムbootfsがあります。これは、一般的なLinux / Unixブートファイルシステムと非常によく似ています。Dockerユーザーがブートシステムを操作することはほとんどありません。実際、コンテナが起動すると、コンテナはメモリに移動され、ブートファイルシステムがマウント解除されて、ディスクミラーリング用のメモリが増えます。Dockerコンテナーの起動にはいくつかのファイルが必要で、これらのファイルはDockerイメージと呼ばれます。

ミラーを取得する方法:

  • リモート倉庫からダウンロード
  • 友達があなたにコピーします
  • ミラーDockerFileを自分で作成する

ここに画像の説明を挿入

2. Dockerイメージのロード原理

ダウンロードすると、レイヤー
ごとに次のようなUnionFS(ユニオンファイルシステム)
UnionFS(ユニオンファイルシステム):ユニオンファイルシステム(UnionFS)は、ファイルをサポートする階層型の軽量で高性能なファイルシステムです。システムの変更は、レイヤー上の単一の送信層として送信され、異なるディレクトリを同じ仮想ファイルシステムの下にマウントできます(単一の仮想ファイルシステムに複数のディレクトリを統合します)。Unionファイルシステムは、Dockerイメージの基盤です。ミラーリングはレイヤーを介して継承でき、基本的なミラーリング(親ミラーリングなし)に基づいて、さまざまな特定のアプリケーションのミラーリングを行うことができます。

機能:複数のファイルシステムを同時にロードしますが、外部からは1つのファイルシステムしか表示されません。共同ロードは、さまざまなレイヤーのファイルシステムを重ね合わせて、最終的なファイルシステムにすべての基礎となるファイルとディレクトリが含まれるようにします
ここに画像の説明を挿入

Dockerイメージは実際には、階層化ファイルシステム(この階層化ファイルシステムUnionFS)で構成されています。

  • Bootfs(ブートファイルシステム)は主にブートローダーとカーネルを含み、ブートローダーは主にbow |ガイドのロードカーネル、Linuxは起動時にbootfsファイルシステムをロードし、Dockerイメージの最下層はbootfsです。このレイヤーは、ブートローダーとカーネルを含む、私たちの典型的なLinux / Unixシステムと同じです。booが読み込まれると、カーネル全体がメモリ内に存在しますが、現時点では、メモリを使用する権利がbootfsからカーネルに移されており、このときシステムはbootfsもアンロードします。
  • rootfs(ルートファイルシステム)、bootfsの上。標準のLinuxシステムでは、標準のディレクトリと/ dev、/ proc、/ bin、/ etcなどのファイルが含まれます。Rootfsは、Ubuntu、Centosなど、さまざまなオペレーティングシステムのディストリビューションです。

通常、仮想マシンにインストールするCentOSは数Gですが、Dockerが200Mしかないのはなぜですか?
合理化されたOSの場合、rootfsは非常に小さく、最も基本的なコマンドのみを含める必要があり、プログラムライブラリのみを持っています。ホストのカーネルでは、rootfsを指定するだけで済みます。異なるLinuxディストリビューションでは、bootfsは基本的に同じであり、rootfsも異なるため、異なるディストリビューションでbootfsを共有できることがわかります。

4.ミラーの構成原理

ここに画像の説明を挿入

4.ミラーを構築するには3つの方法があります。

1. Dockerfileに基づいて作成(最も一般的に使用されます)

2.既存の画像コンテナに基づいて画像を作成します

3.ローカルテンプレートに基づいてビルドする

次に、ミラーを作成します

1. Dockerfileの概要?

Dockerfileは一連の指示で構成されるファイルです

Dockerfile構造は4つの部分に分かれています。

  • 1.基本的な画像情報

  • 2.メンテナ情報

  • 3.ミラー操作手順

  • 4.コンテナの起動時に指示を指定します

(1)Dockerfile共通操作手順

ここに画像の説明を挿入

(2)ミラーを作成するDockerfile

Dockerfileを使用してhttpdイメージを作成して実行する1. Dockerfileを
書き込みます

[root@docker ~]# mkdir apache
[root@docker ~]# cd apache/
[root@docker apache]# vim Dockerfile
##基于的基础镜像
FROM centos 
##维护镜像的用户信息
MAINTAINER The porject <CN-TangZheng> 
##镜像操作指令安装Apache软件
RUN yum -y update    
 ##安装Apache服务 
RUN yum -y install httpd 
##开启80端口
EXPOSE 80  
##复制网址首页文件
ADD index.html /var/www/html/index.html	'//此命令可以结合上图理解'
##将执行脚本复制到镜像中
ADD run.sh /run.sh           
RUN chmod 755 /run.sh
##启动容器时执行脚本
CMD ["/run.sh"]             

2.実行スクリプトとホームページコンテンツを作成する

[root@docker apache]# vim run.sh
#!/bin/bash
rm -rf /run/httpd/*	'//清除缓存'
exec /usr/sbin/apachectl -D FOREGROUND	'//启动apache'
[root@docker apache]# echo "this is test web" > index.html

3.ミラーを生成する

[root@docker apache]# ls
Dockerfile  index.html  run.sh
[root@docker apache]# docker build -t httpd:centos .	'//最后的一个"."要注意,-t:镜像的名字:标签'
    '//每一个缓存层都会生成一个临时容器来执行命令,然后删除'
[root@docker apache]# docker images	'//查看镜像,已经生成了两个'
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               centos              d2010670b33a        19 seconds ago      434MB
centos              latest              470671670cac        3 months ago        237MB

4.新しいイメージでコンテナを実行します

[root@docker apache]# docker run -d -p 1111:80 httpd:centos	'//-p 指定端口号,-P 随机端口号'
04b0f0f1bda36a4857f8d48e044cd17f442be19f4d32dee4cf3183827b451b55
[root@docker apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
04b0f0f1bda3        httpd:centos        "/run.sh"           4 seconds ago      

2.既存の画像コンテナに基づいて作成します

コンテナを作成

[root@docker apache]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               centos              d2010670b33a        23 minutes ago      434MB
centos              latest              470671670cac        3 months ago        237MB	'//使用此镜像创建容器'
[root@docker apache]# docker create -it centos /bin/bash
[root@docker apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
325c28cc9349        centos              "/bin/bash"         42 seconds ago      Created                                    infallible_poitras
04b0f0f1bda3        httpd:centos        "/run.sh"           21 minutes ago      Up 21 minutes       0.0.0.0:1111->80/tcp   nostalgic_greider

ミラーを作成

[root@docker apache]# docker commit -m "ceshi" -a "tang" 325c28cc9349 tang:centos	'//-m:说明文字,-a:提交的作者'
sha256:a49089651887dee9c9168532466542ca7ea0c9113da078230694ac30aebe064c
[root@docker apache]# docker images	'//镜像创建成功'
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tang                centos              a49089651887        14 seconds ago      237MB
httpd               centos              d2010670b33a        30 minutes ago      434MB
centos              latest              470671670cac        3 months ago        237MB

3.ローカルテンプレートに基づいて作成

ローカルテンプレートをダウンロードします。
ミラーは、システムテンプレートファイルをインポートすることで生成できます。テンプレートは、OPENVZオープンソースプロジェクトからダウンロードできます。
アドレスは次のとおりです:https
://wiki.openvz.org/Download/template/precreatedまたはwgetを使用してダウンロード:wget http://download.openvz .org / template / precreated / debian-7.0-x86-minimal.tar.gz
テンプレートはダウンロード後に直接インポートできます

[root@docker opt]# ls
debian-7.0-x86-minimal.tar.gz
[root@docker opt]# cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:new
[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
daoke               new                 487145d2411f        8 seconds ago       215MB

2. Docker専用倉庫の設立

Docker Registryツールは現在2.0シリーズバージョンです。このバージョンは、いくつかのライブラリおよびツールとともに、コンテナコンテンツの配布を担当するツールセットであるDocker Distributionにパッケージ化されています。現在、そのコア機能コンポーネントは、ミラーウェアハウスの管理を担当しています。Registryの新しいバージョンはGolangに基づいてリファクタリングされ、パフォーマンスとスケーラビリティが向上し、プライベートイメージ登録サーバーの構築に非常に適したDocker 1.6+ APIをサポートしています。レジストリイメージは公式の倉庫にも提供されているため、ユーザーはコンテナの操作やソースのインストールを通じてレジストリを使用できます。

1.個人倉庫の設置手順

1.レジストリイメージをダウンロードします
。2.クライアント側でdaemon.jsonファイルを設定し、プライベートウェアハウスの場所を指定します。3
.レジストリコンテナーを生成し、ポート5000を開きます
。4.イメージにラベルを付け
ます。5. イメージをアップロードし、Dockerプッシュします。6. イメージをダウンロードし、Docker
プルします。

2.専用倉庫を設置する

(1)サーバーがレジストリイメージをダウンロードする

[root@docker apache]# docker pull registry

(2)ミラー倉庫の住所を指定する

[root@docker apache]# vim /etc/docker/daemon.json 
{
    
    
  "insecure-registries": ["192.168.233.133:5000"],	'//添加此段'
  "registry-mirrors": ["https://yu1vx79j.mirror.aliyuncs.com"]
}
[root@docker apache]# systemctl restart docker

(3)レジストリコンテナーを生成し、ポート5000を開く

レジストリはサービスを提供するために稼働している必要があります

[root@docker apache]# docker create -it registry /bin/bash
87db162017924493a4dadefd1f58ff2fdf5a62921a9f4233c84143340e36e1e5
[root@docker apache]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                            PORTS                  NAMES
87db16201792        registry            "/entrypoint.sh /bin…"   12 seconds ago       Created                                                  agitated_darwin
[root@docker apache]# docker start 87db16201792
[root@docker apache]# docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry    '共享目录  宿主机的data共享到docker的tmp下'
60e04d648d5116ceb369eee810e8ed85f2043aa2f573b0ebf1e1233e8e13e2f6

(4)ミラーラベリング

[root@docker apache]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tang                centos              a49089651887        38 minutes ago      237MB
httpd               centos              d2010670b33a        About an hour ago   434MB
registry            latest              708bc6af7e5e        2 months ago        25.8MB
centos              latest              470671670cac        3 months ago        237MB
[root@docker apache]# docker tag tang:centos 192.168.233.133:5000/httpd  '要打上镜像仓库ip地址端口的tag'

(5)ミラーテストのアップロード

[root@docker apache]# docker push 192.168.233.133:5000/httpd
The push refers to repository [192.168.233.133:5000/httpd]
0683de282177: Pushed 
latest: digest: sha256:7a6f34c22ab081c96ee0b676244300691d7a2f63fe4aedd22f150f17fe4aa5a9 size: 529

(6)ミラーテストをダウンロードする

カールしてミラーディレクトリを表示する

[root@docker apache]#  curl -XGET http://192.168.233.133:5000/v2/_catalog
{
    
    "repositories":["httpd"]}
[root@docker apache]# docker pull 192.168.233.133:5000/httpd  '从本地下载镜像'

おすすめ

転載: blog.csdn.net/weixin_47219935/article/details/108702229