コンテナDockerCommitを介してイメージを送信し、DockerPushでイメージをプッシュします。

コンテナDockerCommitを介してイメージを送信し、DockerPushでイメージをプッシュします。

ローカルでコンテナを作成した後、このコンテナに基づいてローカル イメージを作成し、このイメージを Docker ハブにプッシュして、インターネット上でダウンロードして使用することができます。

イメージを表示する [root@docker-test1 ~]# docker images
リポジトリ タグ イメージ ID 作成 サイズ
docker.io/ubuntu 16.04 7aa3602ab41e 5 週間前 115 MB
 
myubuntu という名前のコンテナを作成します [root@docker-test1 ~]# docker run -ti --name myubuntu -d docker.io/ubuntu
[root@docker-test1 ~]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
651a8541a47d docker.io/ubuntu "/bin/bash" 37 秒前 36 秒前 myubuntu
 
 docker commit : コンテナから新しいイメージを作成します。
# docker commit [オプション] コンテナ [リポジトリ[:タグ]]
-a: 提出されたミラー作成者;
-c: Dockerfile の指示を使用してイメージを作成します。
-m: 送信時の説明テキスト。
-p: コミット時にコンテナを一時停止します。
 
この myubuntu コンテナ [root@docker-test1 ~] に基づくイメージを送信します # docker commit -a "wangshibo" -m "this is test" 651a8541a47d myubuntu:v1
sha256:6ce4aedd12cda693d0bbb857cc443a56f9f569106e09ec61aa53563d0932ea4d
 
イメージを再度確認すると、イメージ myubuntu:v1 がローカルの [root@docker-test1 ~]# docker images に送信されていることがわかります。
リポジトリ タグ イメージ ID 作成 サイズ
myubuntu v1 6ce4aedd12cd 59 秒前 84.1 MB
docker.io/ubuntu 16.04 7aa3602ab41e 5 週間前 115 MB
 
mybuntu:v1 イメージを docker hub リポジトリにプッシュします # docker push [OPTIONS] NAME[:TAG]
オプションの説明:
--disable-content-trust: イメージ検証を無視します。デフォルトで有効になっています。まず、docker hub にログインします (ユーザー名: wangshibo パスワード: *******)
[root@docker-test1 ~]# dockerログイン
Docker ID でログインして、Docker Hub からイメージをプッシュおよびプルします。Docker ID をお持ちでない場合は、https://hub.docker.com にアクセスして作成してください。
ユーザー名 (wangshibo): wangshibo
パスワード:
ログインに成功しました
 
[root@docker-test1 ~]# docker push wangshibo/myubuntu:v1
プッシュはリポジトリ [docker.io/wangshibo/myubuntu] を参照します
タグ docker.io/wangshibo/myubuntu のイメージがローカルに存在しません
 
ここで、ubuntu:v1イメージの名前を変更し、名前の前に独自のDockerハブのDocker IDを追加する必要があります。つまり、wangshiboです。
 
[root@docker-test1 ~]# docker タグ 6ce4aedd12cd wangshibo/myubuntu:v1
[root@docker-test1 ~]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
myubuntu v1 6ce4aedd12cd 6分前 84.1 MB
wangshibo/myubuntu v1 6ce4aedd12cd 6分前 84.1 MB
docker.io/ubuntu 16.04 7aa3602ab41e 5 週間前 115 MB
 
もう一度プッシュします (注: 以下の v1 タグは省略できます。デフォルトは最新です)。プッシュ操作時間は少し長くなりますので、しばらくお待ちください〜
[root@docker-test1 ~]# docker push wangshibo/myubuntu:v1           
プッシュはリポジトリ [docker.io/wangshibo/myubuntu] を参照します
b5948ba9486d: プッシュ
8d7ea83e3c62: library/ubuntu からマウント
6a061ee02432: library/ubuntu からマウント
f73b2816c52a: library/ubuntu からマウントされました
6267b420796f: library/ubuntu からマウント
a30b835850bf: library/ubuntu からマウント
v1: ダイジェスト: sha256:e9cd9075d262848a307c92751e1a5890d883b814a31abd118161442461a1ca2d サイズ: 1564
 
最後に、Docker Hub(https://hub.docker.com/)にログインします。
ログインすると、上でプッシュしたイメージ wangshibo/myubuntu:v1 がリポジトリに表示されます。これは外部イメージであり、インターネットからダウンロードできます。
このイメージのダウンロードコマンドはDocker hubで確認できます(ダウンロード時にはタグに従う必要があることに注意してください。最新のデフォルトタグの場合は省略できます)
このイメージはDockerハブで直接削除することもできます(リポジトリ-イメージ-設定-削除)
 
たとえば、このイメージを別のサーバー [root@kevin-test ~] にダウンロードします# docker pull wangshibo/myubuntu
リポジトリ wangshibo/myubuntu をプルします
リポジトリが見つかりません
 
タグ [root@kevin-test ~] を最新の状態に保つ必要があります # docker pull wangshibo/myubuntu:v1
v1: wangshibo/myubuntu からプル
68e2a091ef24: プル完了
8f9dd35f6299: プル完了
a81a6171600b: プル完了
a211a2bc7010: プル完了
9e71a0b4f83a: プル完了
0cf75bb335aa: プル完了
c393a882769e: プル完了
ダイジェスト: sha256:845fa3dcc9d0de1b9c701e1009918995da35a29012015f6c297a05edc489e018
ステータス: wangshibo/myubuntu:v1 の新しいイメージをダウンロードしました
[root@kevin-test ~]# docker イメージ
リポジトリ タグ イメージ ID 作成 仮想サイズ
wangshibo/myubuntu v1 c393a882769e 12 分前 84.11 MB
 
このマシン上のこのイメージを削除します [root@docker-test1 ~]# docker images
リポジトリ タグ イメージ ID 作成 サイズ
myubuntu v1 6ce4aedd12cd 15分前 84.1 MB
wangshibo/myubuntu v1 6ce4aedd12cd 15分前 84.1 MB
docker.io/ubuntu 16.04 7aa3602ab41e 5 週間前 115 MB
 
上記では6ce4aedd12cdのイメージIDが2つあることに注意してください。この時点ではイメージIDを直接使用して削除することはできません [root@docker-test1 ~]# docker rmi 6ce4aedd12cd
デーモンからのエラー応答: 競合: 6ce4aedd12cd を削除できません (強制する必要があります) - イメージが複数のリポジトリで参照されています
 
まず、docker タグの名前を変更する前にイメージを削除し、イメージ名を使用して削除する必要があります。 (一般的に、docker タグ イメージの名前を変更した後は、名前を変更する前にイメージを削除するのが最適です)
[root@docker-test1 ~]# docker rmi myubuntu:v1
タグなし: myubuntu:v1
タグなし: wangshibo/myubuntu@sha256:e9cd9075d262848a307c92751e1a5890d883b814a31abd118161442461a1ca2d
 
[root@docker-test1 ~]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
wangshibo/myubuntu v1 6ce4aedd12cd 15分前 84.1 MB
docker.io/ubuntu 16.04 7aa3602ab41e 5 週間前 115 MB
 
この時点で、イメージID [root@docker-test1 ~]# docker rmi 6ce4aedd12cd を削除できます。
タグなし: wangshibo/myubuntu:v1
削除済み: sha256:6ce4aedd12cda693d0bbb857cc443a56f9f569106e09ec61aa53563d0932ea4d
削除済み: sha256:0ddeb6a16badd042914c2e72b9ef0331550c1cdcc4bdc6650a90cd9f57f1501b
[root@docker-test1 ~]# docker イメージ         
リポジトリ タグ イメージ ID 作成 サイズ
docker.io/ubuntu 16.04 7aa3602ab41e 5 週間前 115 MB

画像削除失敗例

[root@docker-test1 ~]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
[root@docker-test1 ~]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
 
docker の nginx イメージを削除したいのですが、削除できないようです。-f を追加しても削除できません。エラー: そのようなイメージはありません というメッセージが繰り返し表示されます。
ついにファイルを直接削除する方法を見つけました!
 
[root@docker-test1 ~]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
nginx 最新 62f816a209e6 7日前 109MB
 
[root@docker-test1 ~]# docker rmi nginx
エラー: そのようなイメージはありません: nginx
 
[root@docker-test1 ~]# docker rmi 62f816a209e6
エラー: そのような画像はありません: 62f816a209e6
 
[root@docker-test1 ~]# docker rmi 62f816a209e6 -f
エラー: そのような画像はありません: 62f816a209e6
 
上記の通り、nginx イメージをまったく削除できません!!!!
 
解決:
[root@docker-test1 ~]# systemctl dockerを停止します
[root@docker-test1 ~]# rm -rf /var/lib/docker
rm: '/var/lib/docker/containers' を削除できません: デバイスまたはリソースがビジーです
 
削除できない理由: コンテナが作成されたとき、対応するディレクトリがマウントされ、アンインストールされていないため、デバイスまたはリソースがビジー状態です。
 
解決策: マウントされたディレクトリを見つけてアンインストールします [root@docker-test1 ~]# cat /proc/mounts | grep "docker"
/dev/mapper/centos-root /var/lib/docker/containers xfs rw、relatime、attr2、inode64、noquota 0 0
proc /run/docker/netns/default proc rw、nosuid、nodev、noexec、relatime 0 0
proc /run/docker/netns/a0626c54fd03 proc rw、nosuid、nodev、noexec、relatime 0 0
proc /run/docker/netns/b18072de4224 proc rw、nosuid、nodev、noexec、relatime 0 0
proc /run/docker/netns/b5298f643455 proc rw、nosuid、nodev、noexec、relatime 0 0
proc /run/docker/netns/9f5e97637c98 proc rw、nosuid、nodev、noexec、relatime 0 0
 
[root@docker-test1 ~]# /var/lib/docker/containers をアンマウントします
[root@docker-test1 ~]# rm -rf /var/lib/docker
 
[root@docker-test1 ~]# systemctl dockerを起動します
 
もう一度確認すると、そのようなイメージはありません [root@docker-test1 ~]# docker images
リポジトリ タグ イメージ ID 作成 サイズ

以上がDockerCommitでイメージを送信し、DockerPushでイメージをプッシュする手順です。コンテナの送信とイメージのプッシュの詳細については、123WORDPRESS.COMの他の関連記事もご覧ください。

以下もご興味があるかもしれません:
  • Dockerイメージの作成Dockerfileとコミット操作
  • Dockerイメージ送信コマンドcommitの動作原理と使い方の詳細な説明
  • Docker 学習ノート: コンテナをイメージにコミットする方法
  • 既存のイメージを変更する Docker の詳細な説明 (コミット)
  • コミットコマンドを使ってイメージを作成するDocker学習の詳細な説明
  • Dockerイメージコミット操作の例と機能

<<:  史上最もクリエイティブな404ページのデザインは、ウェブサイトのユーザーエクスペリエンスを効果的に向上させます

>>:  MySQLインデックスマージの使い方

推薦する

js での遅延読み込みとプリロードの具体的な使用法

遅延読み込み(レイジー読み込み)とプリロードは、Web 最適化によく使用される手段です。 。 1. ...

MySQLデータベース入門:マルチインスタンス構成方法の詳しい説明

目次1. マルチインスタンスとは2. 複数インスタンスのインストールの準備3. MYSQLの複数イン...

マウスを傾けた状態でのフリップナビゲーションの問題に関する研究

この記事では、マウス フリップナビゲーションの制作についてまだ疑問を持っている友人の役に立つことを期...

MySQL公式エクスポートツールmysqlpumpの使用

目次導入説明書実際の経験長所と短所総括する導入mysqlpump は mysqldump の派生です...

MySQLデータベースの基礎知識

目次1. データベースを理解する1.1 データベースとデータ構造の関係1.2 なぜデータベースが必要...

Vue ローカルコンポーネントデータ共有 Vue.observable() の使用

コンポーネントが詳細になるにつれて、複数のコンポーネントが状態を共有する状況に遭遇するでしょう。Vu...

スクロールバーを非表示にする HTML の簡単な実装

1. 属性付きHTMLタグXML/HTML コードコンテンツをクリップボードにコピー< htm...

Linuxでブーストライブラリをインストールするための完全な手順

序文Boost ライブラリは、標準ライブラリのバックアップとして機能し、C++ 標準化プロセスの開発...

MySQL インデックスの効率的な使用ガイド

序文ほとんどの方がMySQLとインデックスを使用したことがあると思いますが、適切なインデックスを作成...

CSS スタイルの読み込みの優先順位に関する経験の共有

昨日のプロジェクト開発中に、スタイルの読み込み優先順位に関する問題が発生しました。クラスは定義され、...

MySQL のバックアップとリカバリの設計アイデア

背景まず、背景を説明します。ある制約により、当社の現在のバックアップ戦略では、1 日おきにフル バッ...

Linux で文字列を整理するためのヒント

Linuxの操作では、ファイル内の文字列を置換したりカウントしたりすることが多いです。ここでまとめを...

HTML での Li タグの使用例

タイトルを左に、日付を右に揃えたいのですが、日付の範囲に float:right を直接追加すると、...

divとspanの違いと使い方

目次1. DIVとSPANの違いと特徴2. スパンタグの概要3. 拡大と改善4. 凡例の効果の実証例...

HTML はテキストの外側に省略記号を表示します...テキストオーバーフローによって実装されます

div または span に同時に CSS を適用する必要があります。コードをコピーコードは次のとお...