コンテナ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インデックスマージの使い方

推薦する

jQuery+h5 で 9 マス抽選特殊効果を実現 (フロントエンドとバックエンドのコード)

序文:フロントエンド: jq+h5 で 9 グリッドのダイナミック効果を実現バックエンド: thin...

MySQLデータベースのタイムアウト設定を構成する方法の例

目次序文1. JDBCタイムアウト設定2. 接続プールのタイムアウト設定3. MyBatisクエリの...

Vue コンポーネントはどのように解析され、レンダリングされるのでしょうか?

序文この記事では、Vue コンポーネントがどのように解析され、レンダリングされるかを説明します。 V...

divとspanの違いと使い方

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

Linux nslookup コマンドの使用方法の詳細な説明

[nslookup とは?] 】 nslookup コマンドは、Linux で非常によく使用されるネ...

Vue プロジェクトで垂直テーブルを 2 つの方法で実装するアイデアの分析

問題の説明私たちのプロジェクトでは、水平方向のテーブルが一般的ですが、必要に応じて垂直方向のテーブル...

Vueコンポーネントが相互に値を転送する方法の詳細な説明

目次概要1. 親コンポーネントが子コンポーネントに値を渡す2. 子コンポーネントが親コンポーネントに...

単語のグループ化シーケンスと複数フィールドのグループ化のための MySQL グループ方法

ここで商品テーブルを作成しました。その中のデータを見てみましょう。 mysql> 商品から *...

Docker データボリュームの一般的な操作コードの例

開発者が Dockerfile を使用してイメージをビルドする場合は、イメージをビルドするときにデー...

N キロメートル以内のデータを検索する MySQL の簡単な例

地球の円周率と半径、検索ポイントの経度と緯度から、検索ポイントと検索データテーブル間の距離はNキロメ...

LinuxシステムにおけるMySQLの一般的な操作コマンド

仕える: # chkconfig --list すべてのシステムサービスを一覧表示する# chkco...

etcd クラスターをデプロイするための docker-compose の実装手順

目次docker-compose.ymlを書くdocker-composeを実行するビルドステータス...

Docker 自動ビルド 自動ビルド実装プロセス図

自動ビルドとは、Docker Hub を使用して、Dockerfile ファイルを含む GitHub...

JavaScript のよりエレガントなエラー処理方法 async await

目次背景なぜエラー処理が必要なのでしょうか? async await より適切なエラー処理まとめ要約...

ウェブサイトのBGM実装方法

個々のウェブマスターにとって、自分のウェブサイトをいかにユニークで個性あふれるものにするかは、常に絶...