Docker和K8S命令


 一、安裝docker

1Docker 要求 CentOS 系統的內核版本高於 3.10  

通過 uname -r 命令查看你當前的內核版本

 $ uname -r

2、使用 root 權限登錄 Centos。確保 yum 包更新到最新。

$ sudo yum update

3、卸載舊版本(如果安裝過舊版本的話)

$ sudo yum remove docker  docker-common docker-selinux docker-engine

4、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5、設置yum

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

6、可以查看所有倉庫中所有docker版本,並選擇特定版本安裝

$ yum list docker-ce --showduplicates | sort -r

 

7、安裝docker

$ sudo yum install docker-ce  #由於repo中默認只開啟stable倉庫,故這里安裝的是最新穩定版17.12.0

$ sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

 

8、啟動並加入開機啟動

$ sudo systemctl start docker

$ sudo systemctl enable docker

9、驗證安裝是否成功(clientservice兩部分表示docker安裝啟動都成功了)

$ docker version

 

 

 二、問題

1、因為之前已經安裝過舊版本的docker,在安裝的時候報錯如下:

Transaction check error:

  file /usr/bin/docker from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

  file /usr/bin/docker-containerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

  file /usr/bin/docker-containerd-shim from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

  file /usr/bin/dockerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

2、卸載舊版本的包

$ sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

 

3、再次安裝docker

$ sudo yum install docker-ce

 

配置加速器:

對於使用 systemd 的系統,請在 /etc/docker/daemon.json 中寫入如下內容(如果文件不存在請新建該文件)

{ "registry-mirrors": [  "https://registry.docker-cn.com" ]}

 

命令:

Docker rm -f(強制) 刪除

Docker run -it tomcat bash 進入並進入容器

Docker exec -it xx 進入容器

Docker logs -f <container id> 命令查看容器的啟動日志:

Docker run -p(-rm只是使用一次)  8080:8080(端口映射 主機:容器)  tomcat 跑一個新容器

Docker run -p(-rm只是使用一次)  8080:8080 --name  別名 tomcat

跑並給他一個特定的名字

Docker run -p 8081:8080 --name xx  -d tomcat

(使用守護線程啟動新的(多線程?后台?))

firewall-cmd --list-ports 查看那些端口打開了

systemctl start firewalld 打開防火牆

firewall-cmd --permanent --zone=public --add-port=8083/tcp 

允許打開端口

systemctl reload firewalld 重啟防火牆

Docker stop 容器名/ID

Docker ps -a 查看所有容器

Docker container ls -a(查看容器)

Docker images 查看鏡像

Docker restart 容器ID/容器名 重啟容器

Docker exec -it 容器id bash 已交互的模式 進入已有容器

Exit 退出容器

Docker image prune 刪除虛懸鏡像

Docker-compose up -d 執行yml腳本

docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql

可以完成分發,負載均衡入口.

  

DockerFile

實現在容器外面創建 Dockerfile 文件

From xxx (繼承哪個容器)

Copy xx zz xx拷貝到zz

Workdir xx(切換工作目錄,進到xx目錄)  ==  cd

Run <命令>(自己額外的東西)

EXPOSE 暴露服務的端口  (同防火牆類似,允許端口號)

CMD 啟動容器中的應用

 

 Docker build -t 名字 . (.表示Context上下文)(使用上面的Dockerfile創建對象)

Context:是將當前目錄打包給Server,API操作實在Server操作,所以在上下文操作需要路徑的話,需要將該路徑用上下文打包給服務器。

Docker C/S模式 通過RestAPI訪問  server

 

Docker數據卷

 其實就是Window中的文件映射

Docker容器中某個目錄替換成宿主機的中某個目錄(共享空間)

也可以是某些數據持久化 docker持久化技術

 Mysql(last8.0)共享數據實例:數據卷

 -e password 初始化密碼

5.7.22版本

docker run -p 3306:3306 --name mysql \

-v /usr/local/docker/mysql/conf:/etc/mysql \

-v /usr/local/docker/mysql/logs:/var/log/mysql \

-v /usr/local/docker/mysql/data:/var/libmysql \

-e MYSQL_ROOT_PASSWORD=123456 \

-d mysql:5.7.22

 

在容器的my.cnf:  配置能傳輸的最大值

Echo “max_allowed_packet=20M”>>mysql.conf.d/mysqld.cnf

拷貝容器目錄到宿主機

前提是你的有一個 非映射的完整配置。

創建一個完整的mysql容器,將里面的配置拷貝出來,

下次就可以基於數據卷創建了。

將容器 mysql下的/etc/mysql /* 拷貝到usr/local/docker/mysql/conf

  

 

DockerCompose 快速部署分布式項目

sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

  1. 加可執行權限

chmod +x /usr/local/bin/docker-compose 

Elasticsearch:檢索

 n/docker-compose

 

 

 

 

K8S命令

一、啟動服務

 systemctl start etcd

 systemctl start docker

 systemctl start kube-apiserver  

 systemctl start kube-controller-manager 

 systemctl start kube-scheduler

 systemctl start kubelet

 systemctl start kube-proxy

l etcd保存了整個集群的狀態;

l apiserver提供了資源操作的唯一入口,並提供認證、授權、訪問控制、API注冊和發現等機制;

l controller manager負責維護集群的狀態,比如故障檢測、自動擴展、滾動更新等;

l scheduler負責資源的調度,按照預定的調度策略將Pod調度到相應的機器上;

l kubelet負責維護容器的生命周期,同時也負責Volume(CVI)和網絡(CNI)的管理;

l Container runtime負責鏡像管理以及Pod和容器的真正運行(CRI);

l kube-proxy負責為Service提供cluster內部的服務發現和負載均衡;

 

二、操作命令

Kubectl run 名字 --image=鏡像 --port=容器端口 --replicas=幾個 --env=”DOMAIN=域名”     --------啟動鏡像

Kubectl run -i --tty <> --image=鏡像 --port -- sh

 ---交互式shell運行容器(測試沒有,有待...)

Kubectl expose deployment/名字 --type=”NodePort” --port=80

----暴露Node的端口  

Kubectl get services ----獲取所有服信息(如下80<>:32269<>)

記得打開防火牆端口

Kubectl get pods    -------查看所有pods

Kubectl get replicaset      --------查看所有副本

Kubectl get events  -------查看所有時間(:錯誤)

Kubectl get nodes   -----查看管理的node

Kubectl describe pod/replicaset/deployments/service 名字

------查看pod/repicas/deployments/service詳情(日志)

Kubectl cluster-info  ----查看集群信息

Kubectl delete pod ----刪除pod(會重新啟一個完全一樣的pod)

Kubectl delete deployment   ---刪除服務(會刪除pod)

Kubectl attach <pod> -i  ---連接到運行的容器(沒用,有待...)

Kubectl scale deployment <> --replicas=-擴展/縮減到N

Kubectl set image deployment <deployment> <容器名>:<鏡像>   -------改變容器的構建鏡像版本。Tomcat8.0->tomcat9.0

Kubectl rollout status deployment <deployment>  

         --------確認是否更新成功

Kubectl rollout undo deployment <deployment>

                -------回滾到修改版本前

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM