Dockerで画像を作成する2つの方法
ドッカー2つの方法でミラーリング:ドッキングウィンドウはで、ミラーリングや建物dockerfileベースのミラーリングコミットDDDDのみFROMとRUNコマンドは、比較的単純であるdockerfileでミラーを構築する方法について話しました。
この記事では、docker commitを使用して画像やその他のコマンドを作成する方法と、dockerfileの使用方法について説明します。
まず、ドッカーは画像を作成することを約束します
docker commitでイメージを作成し、基本イメージを実行してから、ソフトウェアをインストールし、基本イメージの構成ファイルを変更します。次に、変更を新しい画像に送信します。
1、ドッカーラン
1)Dockerイメージは、最初に既存のローカルイメージがあるかどうかを確認し、必要な基本イメージを選択します。不要な場合は、docker pullを使用して必要なイメージをプルします。
2)次に、docker runを使用してイメージをコンテナーとして実行します
2. docker commit -a作成者情報-m説明情報コンテナー名ミラー名(自分で取得)
-a作成者情報を指定します-m説明情報を送信します-pコミット時にデフォルトでコンテナを一時停止します
具体的な実装は次のとおりです。
最後の赤いボックスで、docker commitコマンドは最終的に変更されたイメージの名前を保存します。自分で選択してください
3.イメージストレージレイヤーでのdocker diff Viewの変更
4、ドッカーの歴史
-qミラーIDのみを表示
説明:
1)コミットイメージで本当に変更したいものに加えて、コマンドの実行により、他のファイルが変更または追加されます。ソフトウェアパッケージをインストールし、コンパイルしてビルドする場合、多くの無関係なコンテンツが追加されます。鏡像が非常に肥大化する原因となる、
Docker commitとは、ミラー操作がすべてブラックボックス操作であり、内部で何が行われているのかを他の人が知るのが難しく、メンテナンスが非常に難しいことを意味します。当局はコミットによる作成を推奨していません。
2)この方法は、ミラーがどんどん大きくなることを心配しなければ、最も自由で簡単な方法です。
次に、Dockerfileコマンド
Dockerfileはテキストファイルで、一連の命令(命令)が含まれています。各命令はレイヤーを構築するため、各命令の内容は、レイヤーの構築方法を説明することです。
注:画像を作成するときは、各レイヤーに本当に追加する必要があるものだけを追加してください。無関係なものはすべてクリーンアップする必要があります。
1. FROMはベースイメージを指定します
格式:FROM <image>またはFROM <image>:<tag>
例:FROM centos:7
2. MAINTAINERが 指定したメンテナー情報
形式:MAINTAINER <名前>
例:MAINTAINER hxq [email protected]
3. コマンドを実行する
1)シェルモード:
RUN <command>は、コマンドラインで直接入力したコマンドに似ています
RUN <コマンド>はデフォルトでコマンドを実行するために `/ bin / sh -c`を使用します
例:RUN yum install -y httpd
例:RUN echo '<h1> Hello、Docker!</ h1>'> /usr/share/nginx/html/index.html
2)実行モード
RUN ["executable file"、 "parameter 1"、 "parameter 2"]、これは関数呼び出しの形式に似ています
注:RUNコマンドはコマンドラインを実行するために使用されます。RUN(dockerfileコマンド)を使用するたびに、イメージにレイヤーが1つずつ追加されます(最大数は127レイヤーです)。
&&で接続するために複数の指示を実行します(apt-get plus -yは、システムインストールプロンプトがデフォルトでyesを選択することを意味します。そうでない場合、ミラーリングは失敗します。&&コマンドの間に改行がある場合は、行の後に必ず\を付けてください)
4.コピーコピーファイル
格式:COPY src desc
复制本地主机src目录或文件到容器的desc目录,desc不存在时会自动创建。
5、ADD 高级复制
格式:ADD src dest
该命令将复制指定本地目录中的文件到容器中的dest中,src可以是是一个绝对路径,也可以是一个URL或一个tar文件,tar文件会自动解压为目录。
6、CMD 容器启动命令
是可以被 docker run 指令覆盖的,而ENTRYPOINT的参数可以被--entrypoint覆盖;会比CMD或者docker run指定的命令要靠前执行。
7、ENTRYPOINT 入口点
ENTRYPOINT ["executable","param1","param2"]
ENTRYPOINT command param1,param2 会在shell中执行。
用于配置容器启动后执行的命令,这些命令不能被docker run提供的参数覆盖。和CMD一样,每个Dockerfile中只能有一个ENTRYPOINT,当有多个时最后一个生效。
8、ENV 用设置环境变量
这些环境变量,后续可以被RUN指令使用,容器运行起来之后,也可以在容器中获取这些环境变量。
格式为:EVN key value
ENV word hello
RUN echo $word
9、ARG 构建参数
10、VOLUMN 定义匿名卷
格式: VOLUME ["/data"]
作用是创建在本地主机或其他容器可以挂载的数据卷,用来存放数据。
11、EXPOSE 暴露端口
在启动容器的使用使用-P,Docker会自动分配一个端口和转发指定的端口,使用-p可以具体指定使用哪个本地的端口来映射对外开放的端口。
格式: EXPOSE port [port2,port3,...]
比如:EXPOSE 80 这条指令告诉Docker服务器暴露80端口,供容器外部连接使用。
12、WORKDIR 指定工作目录
为后续的RUN CMD ENTRYPOINT指定配置工作目录,可以使用多个WORKDIR指令,若后续指令用得是相对路径,则会基于之前的命令指定路径。
格式: WORKDIR /path
比如: WORKDIR /path/to/workdir
13、USER 指定容器运行时的用户名或UID
后续的RUN也会使用指定的用户。要临时使用管理员权限可以使用sudo。在USER命令之前可以使用RUN命令创建需要的用户。
格式为:USER username
比如:RUN groupadd -r docker && useradd -r -g docker docker
14、HEALTHCHECK 健康检查
15、ONBUILD 镜像触发器
格式:ONBUILD [INSTRUCTION]
该配置指定当所创建的镜像作为其他新建镜像的基础镜像时所执行的指令。
例如下面的Dockerfile创建了镜像A:
ONBUILD ADD . /app
ONBUILD RUN python app.py
则基于镜像A创建新的镜像时,新的Dockerfile中使用from A 指定基镜像时,会自动执行ONBBUILD指令内容,等价于在新的要构建镜像的Dockerfile中增加了两条指令:
FROM A
ADD ./app
RUN python app.py
16、docker build
创建好Dockerfile之后,通过docker build命令来创建镜像,该命令首先会上传Dockerfile文件给Docker服务器端,服务器端将逐行执行Dockerfile中定义的指令。
通常建议放置Dockerfile的目录为空目录。另外可以在目录下创建.dockerignore文件,让Docker忽略路径下的文件和目录,这一点与Git中的配置很相似。
通过 -t 指定镜像的标签信息,例如:docker build -t regenzm/first_image . ## "."指定的是Dockerfile所在的路径