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>

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

 

 

 

 

 

 

posted @ 2019-06-12 10:49  懵懂的半壶  阅读(1463)  评论(0编辑  收藏  举报