Docker

コンテナのプライベートリポジトリを作る。

Dockerのインストール

最初にdockerのインストールが必要。
CentOSの場合は以下のとおり。

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

コンテナが実行できるか確認。

sudo docker run hello-world

参考

レジストリのコンテナ

dockerレジストリ用のコンテナでレポジトリを作成できる。

sudo docker run --restart=always -d -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 -p 5000:5000 --name registry registry:2

docker hubから、alpineのコンテナイメージを落としてきて、ローカルレジストリにpushしてみる。

$ sudo docker pull alpine:3.8.4
3.8.4: Pulling from library/alpine
Digest: sha256:04696b491e0cc3c58a75bace8941c14c924b9f313b03ce5029ebbc040ed9dcd9
Status: Image is up to date for alpine:3.8.4
docker.io/library/alpine:3.8.4
[root@localhost ~]# docker image tag alpine:3.8.4 localhost:5000/local-alpine
[root@localhost ~]# docker push localhost:5000/local-alpine
The push refers to repository [localhost:5000/local-alpine]
d9ff549177a9: Pushed
latest: digest: sha256:899a03e9816e5283edba63d71ea528cd83576b28a7586cf617ce78af5526f209 size: 528

コンテナイメージをダウンロードできているようである。

リモートマシンからのダウンロード

リポジトリはセキュアな環境である必要がある。
ここでは簡単なテストのため、インセキュアな環境で試してみる。

docker ホストマシン上で以下のように設定する。
daemon.jsonというファイルを作成する。

[root@localhost docker]# cat /etc/docker/daemon.json
{
  "insecure-registries" : ["<ホストマシンのIP>:5000"]
}

別のクライアントマシンからイメージをpullしてみる。
ここでは、vagrantでクライアント用のVMを起動する。
また、今回はデーモンレスのコンテナエンジンであるpodmanを使ってみる。

vagrant init centos/7
vagrant up
vagrant ssh
sudo yum install -y podman

インセキュアなアクセスのため、クライアントマシン上で以下の編集をする。

# /etc/containers/registries.conf
[registries.insecure]
registries = ['<dockerホストのIP>:5000']

イメージをpullしてみる。podmanは、dockerと同様なコマンドライン指定で動作する。

[vagrant@localhost ~]$ sudo podman pull 192.168.56.101:5000/local-alpine
Trying to pull 192.168.56.101:5000/local-alpine...Getting image source signatures
Copying blob c87736221ed0 done
Copying config dac7051149 done
Writing manifest to image destination
Storing signatures
dac7051149965716b0acdcab16380b5f4ab6f2a1565c86ed5f651e954d1e615c
[vagrant@localhost ~]$ sudo podman images
REPOSITORY                         TAG      IMAGE ID       CREATED         SIZE
192.168.56.101:5000/local-alpine   latest   dac705114996   12 months ago   4.67 MB

コンテナを起動してみる。

[vagrant@localhost ~]$ sudo podman run -it --rm  --name test-container local-alpine ash -c "hostname"
1b866c0253cc

コンテナイメージは、以下にダウンロードされていることを確認できる。

[root@localhost ~]# ls /var/lib/containers/storage/overlay/d9ff549177a94a413c425ffe14ae1cc0aa254bc9c7df781add08e7d2fba25d27/
diff  empty  link  merged  work

削除してみる。

[root@localhost ~]# sudo podman images
REPOSITORY                         TAG      IMAGE ID       CREATED         SIZE
192.168.56.101:5000/local-alpine   latest   dac705114996   12 months ago   4.67 MB
[root@localhost ~]# sudo podman rmi 192.168.56.101:5000/local-alpine
dac7051149965716b0acdcab16380b5f4ab6f2a1565c86ed5f651e954d1e615c
[root@localhost ~]# ls /var/lib/containers/storage/overlay/
backingFsBlockDev  l

参考リンク


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
目次
ダブルクリックで閉じるTOP | 閉じる
GO TO TOP