---
slug: "local-docker-image-deploy-to-remote-microk8s-ctr"
title: "ローカルにある docker イメージをリモートサーバの microk8s のリポジトリに読み込ませる方法"
description: "ローカルでビルドした Docker image を、リモートの microk8s クラスタに `ctr` (containerd CLI) 経由で直接デプロイする手順。レジストリを経由しないデプロイ。"
url: "https://www.ytyng.com/blog/local-docker-image-deploy-to-remote-microk8s-ctr"
publish_date: "2022-06-19T11:51:28Z"
created: "2022-06-19T11:51:28Z"
updated: "2026-05-11T13:21:29.392Z"
categories: ["kubernetes"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20250605/7dbf3e8a32ba4eec99a7b8c9ee1b01e1.png.webp?width=768"
has_video: true
has_music: true
video_urls: ["https://media.ytyng.net/ytyng-blog/236/featured-video-1.mp4", "https://media.ytyng.net/ytyng-blog/236/featured-video-2.mp4", "https://media.ytyng.net/ytyng-blog/236/featured-video-3.mp4"]
music_urls: ["https://media.ytyng.net/ytyng-blog/236/featured-music-236-1.mp3", "https://media.ytyng.net/ytyng-blog/236/featured-music-236-2.mp3"]
lang: "ja"
---

# ローカルにある docker イメージをリモートサーバの microk8s のリポジトリに読み込ませる方法

<p>自宅サーバや社内サーバで Kubernetes を運用している際、手元の Mac でビルドした Docker イメージを、外部のイメージリポジトリ(DockerHub, ECR等) を介さずに、SSH でサーバに Push したい場合のやりかた。</p>
<h2>ローカルの Docker イメージを、リモートサーバの Docker 用のイメージとしてロードさせる場合</h2>
<p>まずは、Kubernetes に関係なく、ローカルの Docker から リモートの Docker にイメージを送る方法。&nbsp;</p>
<pre>docker save ${image_name}:${image_tag} | ssh -C username@remote.example.com docker load</pre>
<p>とすれば、ローカルの Docker イメージを直接リモートサーバに送信できる。</p>
<p>ただし、イメージリポジトリを使って docker push / docker pull を使う方法と比べると、更新のあったレイヤのみの差分更新はされず、全レイヤをすべて通信するため、比較して動作は遅い。</p>
<h2>リモートサーバで MicroK8s (ctr) を使っている場合</h2>
<p>サーバで MicroK8s を使っている場合、サーバ内の docker のイメージリポジトリとは別に、ctr 用のイメージリポジトリが作られ、MicroK8s ではその ctr を使うため、docker load してたイメージは使えない。</p>
<p>MicroK8s で ctr にイメージをインポートするには、</p>
<pre>docker save mynginx &gt; myimage.tar<br />microk8s ctr image import myimage.tar</pre>
<p>参考 https://microk8s.io/docs/registry-images</p>
<p>上記のように、 <code>ctr image import</code> コマンドを使う。このコマンドは標準入力からのインポートはサポートしていないため、一旦イメージをファイルに保存する必要がある。</p>
<p>ローカルのイメージを、リモートの ctr に読み込ませるには</p>
<pre>docker save ${image_name}:${image_tag} | ssh -C username@remote.example.com "cat &gt; /tmp/_exported_image.tar"<br />ssh username@remote.example.com "sudo microk8s ctr image import /tmp/_exported_image.tar"</pre>
<p>このように、一旦ファイルに書き込んでから <code>microk8s ctr image import</code>&nbsp;するとできる。</p>
<p>sudo が必要なので、sudores に下記のように登録しておくと良いと思う。</p>
<h4>/etc/sudoers.d/91-working-users</h4>
<pre>username ALL=(ALL) NOPASSWD: /snap/bin/microk8s</pre>
<p></p>
