記事ディレクトリ
この記事では主に、Dockerがミラーを作成する2つの方法に関する関連情報を紹介します。Dockerはミラーを作成します。1つはdocker commitコマンドを使用する方法、もう1つはローカルテンプレートを使用する方法、3つ目はDockerfileファイルを使用する方法です。必要な友達は参照できます。
Docker作成イメージ
最近Dockerについて学びましたが、Dockerがインターネット上でオブジェクトを作成するための2つの方法を偶然目にしました。ここに記録しておくとよいでしょう。おそらく、役立つかもしれません。
Dockerでは、イメージに基づいてコンテナーを実行していることは誰もが知っています。イメージを作成するにはどうすればよいですか。ミラーを作成する方法は2つあります。1つはdockercommitコマンドを使用する方法、もう1つはdocker buildコマンドを使用する方法、もう1つはDockerfileを使用する方法です。ここでは、まったく新しいイメージを最初から作成するのではなく、ubuntuなどの既存の基本イメージに基づいてイメージを作成することについて説明します。
1:Dockerイメージの階層化
-
FROMとそれに続くベースイメージ
-
追加:アレイシステムからミラーコンテナに命令ファイルを追加します
-
VOLUME:アレイで共有できるリソーススペースは、共有マウントアレイシステムで提供されるスペースに似ています。スペースには、事前にインストールされたソフトウェアパッケージが格納され、コンテナは共有スペースを直接マウントします。
-
CMD:イメージの作成が終了したら、コンテナーを開始するための指示を定義します。
2:Dockerイメージの作成
Dockerイメージ
-
应用发布的标准格式
-
支持一个Docker容器的运行
Dockerイメージを作成する方法
-
基于已有镜像创建
-
基于本地模板创建
-
基于Dockerfile创建!!【重点】(关注:参数)
-
ケース環境
ホスト | オペレーティング・システム | ホスト名/ IPアドレス | 主なソフトウェアとバージョン |
---|---|---|---|
サーバ | Centos 7.6 | ローカルホスト/20.0.0.42 | Docker-19.03.13: |
2.1:すでにミラーリングされているものに基づいて作成する
使用docker commit创建
docker commit [选项] 容器ID/名称 仓库名称:[标签]
-m 说明信息
-a 作者信息
-p 生成过程中停止容器的运行
示例
#获取centos:7镜像
[root@localhost ~]# docker pull centos:7
#创建容器
[root@localhost ~]# docker create -it centos:7 /bin/bash
-i:让容器的标准输入保持打开
-t:让Docker分配一个伪终端
#查看容器列表
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5ad432b34512 centos:7 "/bin/bash" About a minute ago Created dazzling_swanson
#启动容器
[root@localhost ~]# docker start 5ad432b34512
#使用docker commit创建
[root@localhost ~]# docker commit -m "shuai" -a "daoke" 5ad432b34512 daoke:test
这里5ad432b34512是修改过的容器ID,daoke:test是镜像名跟标签
上面-m选项指定了镜像的提交信息,-a选项标注了作者信息,最后的:test是标签。
#查看镜像列表 可以看到已经创建成功
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
daoke test 0ade30d9aa5a About a minute ago 203MB
nginx latest 7e4d58f0e5f3 10 days ago 133MB
centos 7 7e6257c9f8d8 :5 weeks ago 203MB
2.2:ローカルテンプレートに基づいて作成
- オペレーティングシステムテンプレートファイル
をインポートして新しいイメージを生成するwgetコマンドを使用して、ローカルイメージとしてインポートします
通过导入系统模板文件可以生成镜像,模板可以从OPENVZ开源项目下载
地址为:https://wiki.openvz.org/Download/template/precreated
或者使用wget下载:wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
- インポートが成功すると、ローカルミラー情報を表示できます
docker images lgrep new
- 例
[root@localhost opt]# ls
debian-7.0-x86-minimal.tar.gz rh
#基于模板生成
[root@localhost opt]# cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:shuai
#可以看到已经生成 标签为shuai
[root@localhost opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
daoke shuai df9e22f0a57e About a minute ago 215MB
daoke test 0ade30d9aa5a 15 minutes ago 203MB
nginx latest 7e4d58f0e5f3 10 days ago 133MB
centos 7 7e6257c9f8d8 5 weeks ago : 203MB
2.3:dockerfileを使用してミラーを作成する
- Dockerfileビルドイメージは基本イメージに基づいています。Dockerfileは、ユーザーが作成したいくつかのdocker命令を含むテキストファイルです。各命令はレイヤーをビルドするため、各命令の内容はレイヤーの構築方法を説明します。:
2.31:Dockerfileの13の基本的な手順
分再是:FROM、MAINTAINER、RUN、CMD、EXPOSE、ENV、ADD、COPY、ENTRYPOINT、VOLUME、USER、WORKDIR、ONBUILD
2.31:Dockerfile構造の4つの部分
-
基本的な画像情報
-
メンテナ情報
-
ミラー操作手順
-
コンテナの起動時に命令を実行する
Dockerfileは、1行に1つの命令をサポートし、各命令は複数のパラメーターを運ぶことができ、「#」で始まるコメントの使用をサポートします。
2.4:Dockerfileを使用してミラーを作成する
-
Dockerfileを使用してhttpdミラーを作成し、実行します
-
Dockerfileを書く
#创建一个名称为apache的工作目录
[root@localhost opt]# mkdir apache
#在工作目录创建一个Dockerfile文件 一定不能改名字
[root@localhost opt]# cd apache/
[root@localhost apache]# vim Dockerfile
'//编写信息'
##基于的基础镜像
FROM centos
##维护镜像的用户信息
MAINTAINER THIS IS SHUAI
##镜像操作指令安装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"]
- スクリプトホームページコンテンツの作成と実行
[root@localhost apache]# echo "this is test web" > index.html
[root@docker apache]# vim run.sh
#!/bin/bash
rm -rf /run/httpd/* '//清除缓存'
exec /usr/sbin/apachectl -D FOREGROUND '//启动apache'
- ミラーを生成
#最后一个千万注意“.” -t:镜像文件名称:标签
[root@localhost apache]# docker build -t httpd:centos .
...省略信息...
Complete!
Removing intermediate container 9bdc2873b24f '//每层缓存都会生成一个临时的容器来执行命令,然后在删除'
---> 40c76ad7fb84
Step 5/9 : EXPOSE 80
---> Running in 49402cd8d904
Removing intermediate container 49402cd8d904
---> 32033d970f7d
Step 6/9 : ADD index.html /var/www/html/index.html
---> f2362d265c6e
Step 7/9 : ADD run.sh /run.sh
---> f0a73b8e4103
Step 8/9 : RUN chmod 755 /run.sh
---> Running in 51c8d3736c06
Removing intermediate container 51c8d3736c06
---> b7cf62b05664
Step 9/9 : CMD ["/run.sh"]
---> Running in 290d45883cce
Removing intermediate container 290d45883cce
---> e85ac386fe3e
Successfully built e85ac386fe3e
Successfully tagged httpd:centos
#查看镜像,已经生成
[root@localhost apache]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd centos 073365dcb0eb 37 seconds ago 283MB
centos 7 7e6257c9f8d8 5 weeks ago 203MB
centos latest 0d120b6ccaa8 5 weeks ago 215MB
- 新しいイメージ実行コンテナ
# -d:守护进程 -p:映射端口 对外提供端口随意写 不宿主机冲突就行 -P:大写P是随机端口号
[root@localhost apache]# docker run -d -p 1216:80 httpd:cetnos
#查看容器列表
[root@localhost apache]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd1bc0acea9f httpd:cetnos "/run.sh" 11 seconds ago Up 10 seconds 0.0.0.0:1216->80/tcp beautiful_northcutt
- クライアントログインテスト
見てくれてありがとう、学習は止まらない!!