web-dev-qa-db-ja.com

Amazonで実行中のコンテナーから新しいDockerイメージを作成するにはどうすればよいですか?

これが私の問題です:

Amazon ECSでdockerイメージを実行するタスクがありますが、コンテナーの実行中のインスタンスから新しいdockerイメージを作成したいと思います。

Amazon EcsにインスタンスのIDが表示されます。AMIを作成しましたが、Amazonからプルできる新しいDockerイメージを作成したいと思います。

何か案は ?

よろしくお願いします

11
user462794

@Ben Whaleyの回答とは別に、個人的にはDocker APIを使用することをお勧めします。Docker APIを使用するには、Dockerデーモンポートを構成し、手順はここで説明されていますDockerデーモンポートの構成

ベースのUbuntuイメージを使用してコンテナーを実行し、コンテナー内にフォルダーを作成します

#docker run -it ubuntu:14.04 /bin/bash
root@58246867493d:/# 
root@58246867493d:/# cd /root
root@58246867493d:~# ls
root@58246867493d:~# mkdir TEST_DIR
root@58246867493d:~# exit

終了したコンテナのステータス:

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
58246867493d        ubuntu:14.04        "/bin/bash"         2 minutes ago       Exited (127) 57 seconds ago                       hungry_turing

コンテナーをコミットするための入力であるJSONファイル:

#cat container_create.json 
{
  "AttachStdin": true,
  "AttachStdout": true,
  "AttachStderr": true,
  "ExposedPorts": {
    "property1": {},
    "property2": {}
  },
  "Tty": true,
  "OpenStdin": true,
  "StdinOnce": true,
  "Cmd": null,
  "Image": "ubuntu:14.04",
  "Volumes": {
    "additionalProperties": {}
  },
  "Labels": {
    "property1": "string",
    "property2": "string"
  }
}

コンテナをコミットするAPI

# curl -X POST http://127.0.0.1:6000/commit?container=58246867493d\&repo=ubuntu\&tag=15.0 -d @container_create.json --header "Content-Type: application/json" | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   593  100    81  100   512    175   1106 --:--:-- --:--:-- --:--:--  1108
{
  "Id": "sha256:acac1f3733b2240b01e335642d2867585e5933b18de2264315f9b07814de113a"
}

生成されるIDは、コンテナのコミットから作成される新しいイメージIDです。

Dockerイメージを取得

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
**ubuntu              15.0                acac1f3733b2        10 seconds ago      188MB**
ubuntu              14.04               132b7427a3b4        10 hours ago        188MB

新しくビルドしたイメージを実行して、前のコンテナでコミットされた変更を確認します。

# docker run -it ubuntu:15.0 /bin/bash
root@3a48af5eaec9:/# cd /root/
root@3a48af5eaec9:~# ls
TEST_DIR
root@3a48af5eaec9:~# exit

Dockerファイルからイメージを構築するには、 Docker APIを使用してイメージを構築する方法

Docker APIの詳細についてはこちらを参照してください。

3
Here_2_learn

コンテナーからイメージを作成するには、以下のコマンドを実行します。

docker commit hw_container hw_image

16
Renato Coutinho

docker commitdocs )コンテナをイメージに保存してから、そのイメージを新しいタグでレジストリにプッシュします。

4
Ben Whaley

これは、「docker commit」を使用して簡単に実行できます。

NGINXの最新のイメージに基づいて、PHP、ビルド必須、nanoがインストールされたイメージが必要だとします。イメージをプルし、コンテナーを実行し、コンテナーにアクセスし、ソフトウェアを追加し、変更を新しいイメージにコミットして、開発コンテナーのベースとして簡単に使用できるようにするプロセスについて説明します。

イメージをプルしてコンテナーを実行する:

Sudo docker pull nginx
Sudo docker run  -it --name nginx-template-base -p 8080:80 nginx

コンテナーの変更:

apt-get install nano
​apt-get install php5

変更をコミットします。

Sudo docker commit CONTAINER_ID nginx-template

新しく作成されたテンプレートが準備できました。次を使用して実行できます。

Sudo docker run -it --name nginx-dev -p 8080:80 nginx-template
0