关于Docker与K8s的介绍

docker可以把它理解为一个应用程序执行的容器。但是docker本身和虚拟机还是有较为明显的出入的。
1.虚拟机的性能比较依靠硬件,而docker开源且轻量化,构建在操作系统中,更加轻便
2.docker的轻量化适用于部署少量的应用,例如说一个docker容器部署一个redis,一个mysql
3.docker基于dockerfile来进行构建容器,程序开发人员可以手动编写dockerfile来指定相应的系统环境和依赖

docker自身有着很多的优点:
1.文件系统隔离,每个不同的容器都存在不同的独立文件系统中
2.资源隔离,每个容器都有自己独立的ip,网络和虚拟接口
3.日志记录,docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索.

关于docker与k8s:docker笔记19-k8s的介绍

Docker安装(CentOS 7)

更新系统

#没安装wget的话,先安装wget
yum install wget  
yum update

设置下载源为阿里云

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下载阿里云 repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清除缓存
yum clean all 
# 生成缓存
yum makecache

安装docker

#卸载之前版本的docker
sudo yum remove docker  docker-common docker-selinux docker-engine
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

设置开机启动

systemctl enable docker

启动docker

systemctl start docker
systemctl status docker #查看docker状态
docker version       #查看docker版本

离线部署Docker

参考博客:Centos7中离线安装DockerCE最新版

安装docker-compose

安装最新版本请移步 github最新版地址 github上面安装命令[当前最新版本为1.25.0]

curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Docker镜像导出/导入

导出镜像命令:
docker save -o ./导出文件名.tar 镜像名:tag
例如:docker save -o ./test.tar hyperledger/fabric-ccenv:latest
导入镜像命令:
例如:docker load --input ./test.tar

Docker容器迁移

参考博客:docker容器的迁移

其它命令

docker重启:

systemctl daemon-reload && systemctl restart docker && systemctl status docker

docker删除所有容器:

docker stop $(docker ps -aq)  
docker rm $(docker ps -aq)

docker-compose启动容器:

docker-compose -f docker-compose.yaml up -d

docker-compose关闭容器:

docker-compose -f docker-compose.yaml down --volumes --remove-orphans

docker修改tag和image名称

docker tag 容器id 新image名称:新的tag
docker rmi 旧image名称:旧的tag
#如果删除失败,可能是有容器正在运行,先停止容器,再删除容器即可

删除所有未使用的本地卷

docker volume prune -f
#--filter		    Provide filter values (e.g. ‘label=’)
#--force , -f		Do not prompt for confirmation

为什么要使用K8S?

1、故障迁移:当某一个node节点关机或挂掉后,node节点上的服务会自动转移到另一个node节点上,这个过程所有服务不中断。
2、资源调度:当node节点上的cpu、内存不够用的时候,可以扩充node节点
3、资源隔离:通过namespace实现了资源的隔离

K8s常见命令

kubectl logs <pod_name>
kubectl logs -f <pod_name>
查看指定pod中指定容器的日志
kubectl logs <pod_name> -c <container_name>

K8S中的一些常见命令

kubectl get all nodes 获取所有node
kubectl get all pods --all-namespaces 获取所有namespaces的pod
kubectl describe pod XXX -n XXX 查看对应pod的启动日志
kubectl logs <pod_name> 查看k8s日志
kubectl logs -f <pod_name> 实时查看日志文件
kubectl logs <pod_name> -c <container_name> 查看指定pod中指定容器的日志