2017年3月29日 星期三

Docker export and import

docker export 指令讓我們能夠將現有的image重新打包至其他docker平台上使用

使用方式如下 :

1. 先下載並執行一個centos docker image

# docker run -it centos /bin/bash

2. 進入container之後,進行任何想要的變更,並退出container

3. 查看執行狀態 (記下CONTAINER ID)

# docker ps -a
CONTAINER ID       IMAGE            COMMAND          CREATED            
0ae760c48e30            centos              "/bin/bash"              About a minute ago

3. export docker image

# docker export 0ae760c48e30 > centos.tar

4. import docker image

# cat centos.tar | docker import - centos:v1.1
sha256:e5d5c21610200d3f06f189b56bca111a54e85da0ce0ce296dbe19482738ad896
# docker images
REPOSITORY          TAG               IMAGE ID             CREATED            SIZE
centos                        v1.1                e5d5c2161020        7 seconds ago       192.5 MB

請注意:

The docker export command does not export the contents of volumes associated with the container.

所以,如果要把完整的image做export,建議使用docker save and docker load




2017年3月2日 星期四

CentOS 7 安裝 Kubernetes

公司內部限制聯外網路,安裝k8s的部分用了很慘烈的方式來安裝

1. 自建yum server
2. 自建docker registry
3. 打包所有rpm相依性檔案

事實上,對外網路開放之後,根本就是無腦裝完呀!!

以下是我在GCP的安裝方式 (根本輕鬆啊!!)


  • 在每一台主機上


1. 關閉阿哩不達的東西

    setenforce 0
    systemctl stop firewalld
    systemctl disable firewalld

2. 增加kubernetes yum repo

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF

3. 安裝相關套件

    yum install docker kubelet kubeadm kubectl kubernetes-cni

4. 啟動docker service
 
   systemctl enable docker

   systemctl start docker

5. 啟動kubelet

   systemctl enable kubelet

   systemctl start kubelet


  • 在 master node


1. kubeadm init

    跑完後記得記下以下內容
    You can now join any number of machines by running the following on each node:
    kubeadm join --token=da9646.60c02a85541104a0 10.128.0.2

2. 安裝pod overlay network
   
     kubectl apply -f https://git.io/weave-kube


  • 在 work node


1. 執行剛剛記下來指令內容

    kubeadm join --token=da9646.60c02a85541104a0 10.128.0.2


  • 在 maste node


     確認以下資訊

    # kubectl get nodes
       NAME         STATUS           AGE
       k8s-master   Ready,master     17h
       k8s-node      Ready                17h

打完收工

了解/usr/bin的工具

看完真的覺得我只是比較會用liunx而已啊...

先筆記下來,有空慢慢品味

kubernets service 介紹

kubernets (簡稱k8s)中的容器如果要對外服務,需要透過server元件來進行 service元件有以下幾種類型可供選擇 : clusterip : 預設類型,只在k8s cluster內部IP中提供服務,外部無法訪問 nodeport : 在每個n...