Opensourcetechブログ

OpensourcetechによるNGINX/Zabbix/Neo4j/Linuxなどオープンソース技術に関するブログです。

kubenetesでローカルコンテナイメージからコンテナを作成する方法

こんにちは、LinuCエバンジェリストこと、鯨井貴博@opensourcetechです。

 

今回は、kubenetesでローカルコンテナイメージからコンテナを作成する方法を紹介します。

 

 

以下では、Docker Hubへ接続できない状態でコンテナを作成しています。

YAMLファイルで「image:nginx」としか書いてないので、以下から頑張って取ろうとしますが、当然イメージ取得ができません。

https://hub.docker.com/_/nginx

bash-3.2$ cat nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
bash-3.2$ kubectl apply -f nginx.yaml
pod/nginx created
bash-3.2$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 0/1 ImagePullBackOff 0 4s   <----イメージを取ろうとしてるのだが、、、
bash-3.2$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 0/1 ErrImagePull 0 30s   <----無理だった orz

 

 

 

しかし、ローカルには「nginx」があるので、どうにかこれを利用したい!

bash-3.2$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kujiraitakahiro/nginx_unit unit-1.7-full-ready 74c74a4a7dda 4 days ago 263MB
<none> <none> d7e90ef0890d 6 days ago 263MB
nginx latest f09fe80eb0e7 13 days ago 109MB   <----これを使いたい!
nginx/unit 1.7-full 6460aea482f7 2 months ago 215MB
k8s.gcr.io/kubernetes-dashboard-amd64 v1.10.1 f9aed6605b81 2 months ago 122MB
k8s.gcr.io/kube-proxy-amd64 v1.10.11 7387003276ac 2 months ago 98.3MB
k8s.gcr.io/kube-apiserver-amd64 v1.10.11 e851a7aeb6e8 2 months ago 228MB
k8s.gcr.io/kube-controller-manager-amd64 v1.10.11 978cfa2028bf 2 months ago 151MB
k8s.gcr.io/kube-scheduler-amd64 v1.10.11 d2c751d562c6 2 months ago 51.2MB
docker/kube-compose-controller v0.4.12 02a45592fbea 5 months ago 27.8MB
docker/kube-compose-api-server v0.4.12 0f92c77fa676 5 months ago 41.2MB
nginx/unit 1.3-php7.0 899eac6ee7bf 7 months ago 125MB
k8s.gcr.io/etcd-amd64 3.1.12 52920ad46f5b 11 months ago 193MB
k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64 1.14.8 c2ce1ffb51ed 13 months ago 41MB
k8s.gcr.io/k8s-dns-sidecar-amd64 1.14.8 6f7f2dc7fab5 13 months ago 42.2MB
k8s.gcr.io/k8s-dns-kube-dns-amd64 1.14.8 80cc5ea4b547 13 months ago 50.5MB
k8s.gcr.io/pause-amd64 3.1 da86e6ba6ca1 14 months ago 742kB

 

 

 

そこで使うのが、「imagePullPolicy」です。

このパラメータを「IfNotPresent」や「Never」とすることで、ローカルイメージを使用からコンテナ作成ができます。

IfNotPresent・・・ローカルになければ、Docker hubからpull

Never・・・ローカルのみからpull

f:id:opensourcetech:20190223163838p:plain

https://kubernetes.io/docs/concepts/configuration/overview/

 

 

imagePullPolicy: IfNotPresentの場合

bash-3.2$ cat nginx2.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent <-------ここ
ports:
- containerPort: 80
bash-3.2$ kubectl apply -f nginx2.yaml
pod/nginx created
bash-3.2$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 6s

 

imagePullPolicy: Neverの場合

bash-3.2$ cat nginx3.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: Never <-------ここ
ports:
- containerPort: 80
bash-3.2$ kubectl apply -f nginx3.yaml
pod/nginx created
bash-3.2$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 4s

 

 

 

www.slideshare.net

github.com

www.facebook.com

twitter.com

www.instagram.com

 

 

にほんブログ村 IT技術ブログ Linuxへ
Linux

にほんブログ村 IT技術ブログ オープンソースへ
オープンソース

 

 

Opensourcetech by Takahiro Kujirai