ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

docker-k8s安装实践记录

2026/9/25 21:15:24 拓冰建站 浏览量
docker-k8s安装实践记录 一、在线安装docker、harbor在线安装docker# 安装yum工具集yuminstall-yyum-utils# 安装docker源yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 更新yum缓存yum makecache fast# 安装dockeryuminstall-ydocker-ce# 启动dockersystemctl startdocker# 设置docker开机自启动systemctlenabledocker# 验证dockerversion注1运行“sudo docker run hello-world”时报错docker: Error response from daemon。解决方法docker默认的源为国外官方源下载速度较慢可修改docker镜像源为国内:[rootlocalhost]# vim /etc/docker/daemon.json{registry-mirrors:[https://registry.docker-cn.com,http://hub-mirror.c.163.com]}重启docker:# systemctl restart docker注2非root用户解决运行docker命令时Get Permission Denied问题方法1 使用sudo获取管理员权限运行docker命令方法2 创建docker用户组并将当前用户加入到docker用户组中那么当前用户就有权限访问Unix socket了进而也就可以执行docker相关命令sudogroupadddocker#添加docker用户组sudogpasswd-a$USERdocker#将登陆用户加入到docker用户组中newgrpdocker#更新用户组dockerps#测试docker命令是否可以使用sudo正常使用安装docker-compose# 安装 EPEL 软件包sudoyuminstallepel-release# 安装pipsudoyuminstall-ypython-pip# 升级pipsudopipinstall--upgradepip# 安装docker-composesudopipinstalldocker-compose注安装docker-compose时报错(sudo pip install docker-compose时)ERROR: Cannot uninstallsubprocess32.It is a distutils installed project and thus we cannot accurately determinewhichfiles belong to itwhichwould lead to only a partial uninstall.解决# 搜索subprocess32-3.2.6-py2.7.egg-info文件sudofind/-name*subpro*.egg-info# 删除rm-rf/usr/lib64/python2.7/site-packages/subprocess32-3.2.6-py2.7.egg-info错误ERROR: Cannot uninstallrequests.It is a distutils installed project and thus we cannot accurately determinewhichfiles belong to itwhichwould lead to only a partial uninstall.解决# 搜索requests-2.6.0-py2.7.egg-info文件sudofind/-name*requests*.egg-info# 删除rm-rf/usr/lib/python2.7/site-packages/requests-2.6.0-py2.7.egg-inf重新安装sudopipinstalldocker-compose安装Harbor3.1下载并解压harbor安装包# wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.3.tgz# tar -zxvf harbor-offline-installer-v1.5.3.tgz #解压离线安装包# mv harbor /opt/ #移到/opt目录下# cd /opt/harbor #进入到/opt/harbor目录# ll #查看目录内容3.2修改配置文件# vim harbor.cfg #编辑配置文件hostname localhost #修改harbor的启动ip这里需要依据系统ip设置harbor_admin_password admin #修改harbor的admin用户的密码3.3安装启动harbor./prepare#配置Harbor./install.sh#安装Harbor3.4登录验证二、离线安装k8s注用离线安装的docker在初始化k8s时报错尚未解决。用上述方式在线安装docker准备安装包离线安装包制作教程https://www.jianshu.com/p/93e7cb4da070离线安装包部署教程https://www.jianshu.com/p/fd9f1076ea2dx86 包k8sOfflineSetup_x86_64-k8sv1.23.1.ziphttp://192.168.4.141:50075/webhdfs/v1/k8s/k8sOfflineSetup_x86_64-k8sv1.23.1.zip?opOPENnamenoderpcaddressjxbdnamenodeoffset0arm64 包k8sOfflineSetup_arm64-k8sv1.23.1.ziphttp://192.168.4.141:50075/webhdfs/v1/k8s/k8sOfflineSetup_arm64-k8sv1.23.1.zip?opOPENnamenoderpcaddressjxbdnamenodeoffset02.解压、配置、安装将对应的zip包解压然后把里面的k8sOfflineSetup移到服务器/root目录下注意必须是root目录下master节点部署# master节点部署chmodx-R/root/k8sOfflineSetup# 填写环境变量exportHOSTNAMEk8s-master(hostname主机名根据需要调整)exportMASTER_IP192.168.1.30(master主机ip)exportPOD_SUBNET192.11.0.0/16(pod网段可使用该网段值)exportSERVICE_SUBNET192.96.0.0/16(service cluster网段可使用该网段值)exportSETUP_DOCKERyes(是否安装dockeryes安装no不安装前提是机器必须已经安装了docker,建议yes使用本安装包进行安装docker)exportDOCKER_DIR/var/lib/docker docker镜像存储路径若不设置 默认是存放在/var/lib/docker下建议修改(该选项在SETUP_DOCKERyes才有效)# 开始部署安装cd/root/k8sOfflineSetup ./setup_master.sh# 等待其自动部署完毕后即可访问kuboardhttp://ip:30080# 登录账号密码是: admin/Kuboard123# 在 master 节点执行获取token和证书下面安装worker有用kubeadm token create --print-join-command注意MASTER_IP需要根据机器的ip地址进行设置。worker节点部署# worker节点部署chmodx-R/root/k8sOfflineSetup# 填写环境变量exportHOSTNAMEk8s-worker1(hostname主机名根据需要调整)exportMASTER_IP192.168.1.30(master主机ip)exportTOKENedz861.g6eci15slbefibj8(master输出的token)exportCERTsha256:23a7e1b4...(master输出的cert)exportSETUP_DOCKERyes(是否安装dockeryes安装no不安装前提是机器必须已经安装了docker,建议yes使用本安装包进行安装docker)exportDOCKER_DIR/var/lib/docker docker镜像存储路径若不设置 默认是存放在/var/lib/docker下建议修改(该选项在SETUP_DOCKERyes才有效)# 开始部署安装cd/root/k8sOfflineSetup ./setup_worker.sh注意MASTER_IP 需要根据master节点的ip进行设置。TOKEN,CERT由master节点通过kubeadm token create --print-join-command命令生成。生产环境开通端口控制平面节点master协议方向端口范围作用使用者TCP入站6443Kubernetes API 服务器所有组件TCP入站2379-2380etcd 服务器客户端 APIkube-apiserver, etcdTCP入站10250Kubelet APIkubelet 自身、控制平面组件TCP入站10251kube-schedulerkube-scheduler 自身TCP入站10252kube-controller-managerkube-controller-manager 自身工作节点worker协议方向端口范围作用使用者TCP入站10250Kubelet APIkubelet 自身、控制平面组件TCP入站30000-32767NodePort 服务†所有组件† NodePort 服务 的默认端口范围。使用 * 标记的任意端口号都可以被覆盖所以你需要保证所定制的端口是开放的。虽然控制平面节点已经包含了 etcd 的端口你也可以使用自定义的外部 etcd 集群或是指定自定义端口。你使用的 Pod 网络插件 (见下) 也可能需要某些特定端口开启。由于各个 Pod 网络插件都有所不同 请参阅他们各自文档中对端口的要求。3.开通端口# vi /etc/kubernetes/manifests/kube-apiserver.yaml然后在Command下增加以下配置- --service-node-port-range1-65535然后wq保存。 这个时候 k8s会自动重启要等待一段时间。直到你在服务器上敲入以下命令kubectl get all -n kube-system 所有状态都为running之后。就可以了但页面上还是会显示30000-32767这个不管他你照样设置想要的端口是可以保存成功的4…k8s关闭重启k8s关闭k8s开启servicedockerstopservicedockerstartservicedockerrestart直接 service docker stop 就能把k8s关了如果要开启k8s则 service docker start 机器重启之后输入 service docker restart 就能把k8s启动连通你部署在k8s上自己的服务都会自动启动。三、镜像打包docker将镜像推到私库1.打标签dockertag 镜像名字:镜像版本号 harbor地址/仓库名字/镜像名字:镜像版本号2.推送dockerpush harbor地址/仓库名字/镜像名字:镜像版本号四、docker常用操作命令1.帮助启动类命令1、启动命令systemctl start docker2、停止命令systemctl stop docker3、重启命令systemctl restart docker查看docker状态命令systemctl status docker开机启动命令systemctl enable docker查看docker概要信息命令docker info查看docker整体帮助文档命令docker --help查看docker命令帮助文档命令docker 具体命令 --help2.镜像命令1、列出本地主机上的镜像展示的是一个列表表头含义如下repository表示镜像的仓库源tag镜像的标签images ID镜像IDcreated镜像创建时间size镜像大小命令docker images-a列出本地所有镜像包括历史镜像-q只显示镜像ID2、某个×××镜像名字展示的是一个列表表头含义如下name镜像名称description镜像说明stars点赞数量official是否是官方的automated是否是自动构建的命令docker search–limit只列出N个镜像默认为25个–limit 5 redis只列出5个redis3、下载镜像命令docker pull 某个×××镜像名字有两种命令a.docker pull 镜像名字[:TAG]b.docker pull 镜像名字 没有tag就是最新版等价于。4、查看镜像/容器/数据卷所占的空间命令docker system df5、删除某个×××镜像名字ID这里就不展示删除了命令docker rmi删除单个命令docker rmi -f 镜像ID删除多个命令docker rmi -f 镜像名1TAG镜像名2TAG删除全部命令docker rmi -f $(docker images -qa)3.容器命令1、新建启动容器命令docker [options] image [command] [ARG…]启动交互式容器前端服务器–name“容器新名字”-d后台运行容器启动交互式命令docker run -it-i以交互模式运行容器 interactive-t为容器重新分配一个为输入终端 tyy前台有伪终端等待交互命令docker run -it Ubuntu bash/binP随机终端口映射大写Pp指定终端口映射小写p常用此写法。2、列出当前所运行的容器命令docker -ps [options]常用命令docker-ps-a列出当前所有正在运行的容器历史上运行过的docker-ps-l显示最近创建的容器docker-ps-q静默模式只显示容器ID3、退出容器有两种退出命令这里不做展示。a.exitrun进去容器exit推出容器停止。b.ctrlpqrun进去容器ctrlpq退出容器不停止。4、启动已经停止的容器命令docker start 容器ID或容器名5、重启容器命令docker restart 容器ID或容器名6、停止容器命令docker stop 容器ID或容器名7、强制停止容器命令docker kill 容器ID或容器名8、删除已停止的容器命令如下dockerrm容器ID先停下来再删除dockerrm-f容器ID/容器名 强制删除一次性删除多个容器实例docker rm -f $(docker ps -a -q)dockerps-a-q|xargsdockerrm9、启动守护式容器后台服务器命令docker run -d 容器名dockerrun-itredis6.0.8 前台交互式启动启动镜像命令docker run -it 容器id /bin/bashdockerrun-dredis6.0.8 后台守护式启动10、查看容器日志命令docker logs 容器ID11、查看容器内运行的进程命令docker top 容器ID12、查看容器内部进程命令docker inspect 容器ID13、进入正在运行的容器并进行命令交互命令docker exec -it 容器ID bashshell重新进入命令docker attach 容器IDattach直接进入容器启动命令的终端不会启动新的进程用exit退出会导致容器停止。exec是在容器中打开新的终端不会启动新的进程用exit退出不会导致容器终止一般推荐使用这一种。14、从文件拷贝内容到主机上命令docker cp 容器ID容器内路径目的主机路径15、导出和导入容器。export导出容器的内容留作为一个tar归档文件对应import命令。import从tar包中的内容创建一个新的文件系统再导入为镜像对应export命令。案例dockerexport容器ID文件名.tarcat文件名.tar|dockerimport-镜像用户/镜像名镜像版本号4.外网联通的情况下安装vim命令1、apt-get update2、apt-get-yinstallvim五、镜像打包