検索
ホームページ運用・保守DockerDocker イメージを作成するにはいくつかの方法があります

Docker イメージを作成するには 2 つの方法があります: 1. 「docker commit」コマンドを使用して、既存のコンテナに基づいてイメージを手動で構築します; 2. Dockerfile を使用してイメージを自動的に構築します。 Dockerfile ビルド ファイルの指示を読み、イメージを自動的に生成します。

Docker イメージを作成するにはいくつかの方法があります

このチュートリアルの動作環境: linux5.9.8 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。

Docker イメージ ウェアハウスからダウンロードしたイメージが要件を満たさない場合があります。基本的なイメージに基づいて独自のイメージを構築できます。

イメージ構築の概要

状況 次に、自分でイメージを構築する必要がありますか?

(1) 自社開発アプリケーションなど既存のイメージが見つからない場合

(2) イメージに特定の機能を追加する必要がある

docker buildイメージングには 2 つの方法があります: docker commit コマンドと DockerfileBuild file

docker commit build image

既存のコンテナに基づいたイメージのビルドこれは主に、新しいイメージを構築するための docker commit コマンドを通じて行われます。

dockercommit 構築には 3 つの主な手順があります。

  • コンテナの実行
  • コンテナの変更
  • コンテナを新しいイメージとして保存

たとえば、centos イメージに vim エディターをインストールし、新しいイメージとして保存します

(1) コンテナーを実行します

[root@ken1 docker]# docker run -it centos
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
a02a4930cb5d: Pull complete 
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for centos:latest

(2) をインストールしますvim editor

vim エディタでインストールされていないことを確認します

[root@69f501e858a6 /]# vim
bash: vim: command not found

インストールします

[root@69f501e858a6 /]# yum install vim -y

(3) 新しいイメージとして保存します

最初の確認現在実行中のイメージ

[root@ken1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
69f501e858a6        centos              "/bin/bash"         2 minutes ago       Up 2 minutes                            quizzical_torvalds

Use commit Save as a new image

[root@ken1 ~]# docker commit 69f501e858a6 centos-vim
sha256:42083b89a179368bc29a8f40d14f8824990183c8e4b28fd84411d440c26342e5

69f501e858a6 は実行中のコンテナの ID です。name の下の名前も使用できます。
centos-vim は新しいイメージの名前

centos-vim が利用可能かどうかを確認します。 Mirror

新しいミラーを再起動し、 vim エディターを使用できます

新しいミラーは vim エディターで使用できることがわかります

[root@ken1 ~]# docker run -it centos-vim 
[root@61d090898bad /]# vim
[root@61d090898bad /]# vim test

上記は commit を使用して新しいイメージを作成する方法を示していますが、docker は推奨しません

  • これは手動でイメージを作成する方法である、コンテナが間違っている、効率が低く再現性が低いなどの理由から、この方法を使用してイメージを作成します。 ###さらに重要なことには。ユーザーは画像がどのように作成されるかを知りません。内部に悪意のあるプログラムはありますか?
  • Dockerfile はイメージを構築します

Dockerfile は一連の命令で構成されるファイルです。各命令は Linux のコマンドに対応します。Docker プログラムは次のようになります。 Dockerfile の命令により、最終的にイメージが生成されます。

最初の Dockerfike

ステップ 1: 新しいディレクトリを作成する

[root@ken1 ~]# mkdir /test

ステップ 2: Dockerfile を作成する

名前は Dockerfile、最初の D大文字にする必要があります

[root@ken1 ~]# cat Dockerfile
FROM centos
RUN yum install vim -y

FROMcentos は centos 基本イメージを使用することを意味します

RUN は centos に vim エディターをインストールすることを意味します

ステップ 3: イメージをビルドする

[root@ken1 ~]# docker build -t centos-vim2 .

-t の後に、新しいイメージ

のタグ名 (タグ) を指定します。最後のドットは、docker コンテキストが現在のディレクトリであることを示します。 Docker は、デフォルトでビルド コンテキストから Dockerfile ファイルを検索します。また、-f パラメーターを使用して Dockerfile の場所を指定することもできます。

#ステップ 4: イメージを表示する

# イメージの階層構造の表示

## Docker 履歴には、Dockerfile の実行プロセスであるイメージの構築履歴が表示されます。

Dcokerfile の共通手順

1.FROM

ベースイメージを指定します

2.MAINTAINER

イメージの作成者を設定します。任意の文字を使用できます

3.COPY

ビルド コンテキストからイメージにファイルをコピーします

COPY は、COPY src dest と COPY ["src", "dest"]

注: src は、ビルド コンテキスト内、つまり Dockerfile

と同じディレクトリ内のファイルまたはディレクトリのみをブレーキできます。4.ADD

およびCOPY 同様に、ファイルをビルド コンテキストからイメージにコピーします。

違いは、srcがアーカイブファイル(tar、zip、tgz、xz)の場合、ファイルは自動的にdestに接続されることです

5.ENV

Set環境変数と環境変数は、後続の命令で使用できます。例:

ENV name ken RUN echo $name

6.EXPOSE

指定されたコンテナ内のプロセス特定のポートを監視します。Docker はポートを公開できます。

7.VOLUME

ファイルまたはディレクトリをボリュームとして宣言します

8.WORKDIR

は、後続の RUN 、ENTRYPINT、ADD、COPY 命令は、イメージ内の現在の作業ディレクトリを設定します。

9.RUN

コンテナ内の指定されたコマンドを実行します

  10.CMD

容器启动时运行指定的命令

dockerfile中可以多个CMD指令,但是只要最后一个生效。CMD可以被docker run之后的参数替换

  11.ENTRYPOINT

设置容器启东市的命令

dockerfile中可以有多个ENTRYPOINT,但是只有最后一个生效。

CMD或者docker run之后的参数会被当做参数传递给ENTERYPOINT.

Dockerfile演示

下面演示一个比较全面的dockerfile

[root@ken1 test]# cat Dockerfile 
#my Dockerfile
FROM busybox
MAINTAINER ken
WORKDIR /ken
RUN touch test
COPY ["ken1","."]
ADD ["wordpress.tar.gz","."]
ENV name "ken"

注意:Dockerfile支持以#开头的注释

构建镜像

[root@ken1 test]# docker build -t myimage .
Sending build context to Docker daemon  4.281MB
Step 1/7 : FROM busybox
 ---> 3a093384ac30
Step 2/7 : MAINTAINER ken
 ---> Running in 2a73a83507ce
Removing intermediate container 2a73a83507ce
 ---> 8c3df9b3d823
Step 3/7 : WORKDIR /ken
 ---> Running in 31c6f9fe2195
Removing intermediate container 31c6f9fe2195
 ---> a458cf986072
Step 4/7 : RUN touch test
 ---> Running in e1b08ebd363c
Removing intermediate container e1b08ebd363c
 ---> 41601920009a
Step 5/7 : COPY ["ken1","."]
 ---> 2ebfa0933fca
Step 6/7 : ADD ["wordpress.tar.gz","."]
 ---> d0ad29d3aa34
Step 7/7 : ENV name "ken"
 ---> Running in fceae6e20e63
Removing intermediate container fceae6e20e63
 ---> 7efe0600e48f
Successfully built 7efe0600e48f
Successfully tagged myimage:latest

查看镜像

运行该镜像

[root@ken1 test]# docker run -it myimage
/ken # ls
ken1       test       wordpress
/ken # echo $name
ken
  •  可以发现当前工作目录为/ken,且自动创建
  • ken1是我们从docker context目录中复制过去的
  • test是使用touch创建的
  • wordpres压缩包已经被自动解压
  • $name为变量值为ken

推荐学习:《docker视频教程

以上がDocker イメージを作成するにはいくつかの方法がありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
docker中rm和rmi有什么区别docker中rm和rmi有什么区别Jul 14, 2022 am 11:02 AM

docker中rm和rmi的区别:rm命令用于删除一个或者多个容器,而rmi命令用于删除一个或者多个镜像;rm命令的语法为“docker rm [OPTIONS] CONTAINER [CONTAINER...]”,rmi命令的语法为“docker rmi [OPTIONS] IMAGE [IMAGE...]”。

docker官方镜像有哪些docker官方镜像有哪些May 12, 2022 pm 02:23 PM

docker官方镜像有:1、nginx,一个高性能的HTTP和反向代理服务;2、alpine,一个面向安全应用的轻量级Linux发行版;3、busybox,一个集成了三百多个常用Linux命令和工具的软件;4、ubuntu;5、PHP等等。

docker是免费的吗docker是免费的吗Jul 08, 2022 am 11:21 AM

docker对于小型企业、个人、教育和非商业开源项目来说是免费的;2021年8月31日,docker宣布“Docker Desktop”将转变“Docker Personal”,将只免费提供给小型企业、个人、教育和非商业开源项目使用,对于其他用例则需要付费订阅。

docker容器重启后数据会丢吗docker容器重启后数据会丢吗Jun 17, 2022 am 10:41 AM

docker容器重启后数据会丢失的;但是可以利用volume或者“data container”来实现数据持久化,在容器关闭之后可以利用“-v”或者“–volumes-from”重新使用以前的数据,docker也可挂载宿主机磁盘目录,用来永久存储数据。

docker能安装oracle吗docker能安装oracle吗Jul 08, 2022 pm 04:07 PM

docker能安装oracle。安装方法:1、拉取Oracle官方镜像,可以利用“docker images”查看镜像;2、启动容器后利用“docker exec -it oracle11g bash”进入容器,并且编辑环境变量;3、利用“sqlplus /nolog”进入oracle命令行即可。

docker存储空间不足怎么办docker存储空间不足怎么办Jul 22, 2022 pm 03:44 PM

解决方法:1、停止docker服务后,利用“rsync -avz /var/lib/docker 大磁盘目录/docker/lib/”将docker迁移到大容量磁盘中;2、编辑“/etc/docker/daemon.json”添加指定参数,将docker的目录迁移绑定;3、重载和重启docker服务即可。

什么是docker最早支持的存储引擎什么是docker最早支持的存储引擎May 12, 2022 pm 03:27 PM

AUFS是docker最早支持的存储引擎。AUFS是一种Union File System,是文件级的存储驱动,是Docker早期用的存储驱动,是Docker18.06版本之前,Ubuntu14.04版本前推荐的,支持xfs、ext4文件。

docker中的镜像会自动更新吗docker中的镜像会自动更新吗Jun 22, 2022 pm 04:23 PM

docker中的镜像会自动更新;可以利用Watchtower工具来自动更新镜像,Watchtower是一个可以监控正在运行的容器镜像是否更新的工具,当本地镜像与远程镜像有差异的时候,可以自动使用当前容器的运行参数以新镜像重新创建一个新的容器,并删除旧的容器。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター