これが私の問題です:
Amazon ECSでdockerイメージを実行するタスクがありますが、コンテナーの実行中のインスタンスから新しいdockerイメージを作成したいと思います。
Amazon EcsにインスタンスのIDが表示されます。AMIを作成しましたが、Amazonからプルできる新しいDockerイメージを作成したいと思います。
何か案は ?
よろしくお願いします
@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の詳細については、 こちらを参照してください。
コンテナーからイメージを作成するには、以下のコマンドを実行します。
docker commit hw_container hw_image
docker commit
( docs )コンテナをイメージに保存してから、そのイメージを新しいタグでレジストリにプッシュします。
これは、「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