Docker/Kubernetes技术分享
与众多开发者分享在Docker容器使用与开发过程中的各种技术和坑,让Docker来提高我们的开发与部署效率,让我们一起进入容器的世界
乞力马扎罗的雪CYF
一只不孤独的猿。
展开
-
Kubernetes无法删除pod问题排查
需要删除下面的pod,但是直接使用下面的命令无法删除:kubectl delete pod kong-rc-2364486572-3hgpk查看这个实例的信息,发现这个容器是运行在Kubernetes的node上的,但是现在这个node已经宕机了。所以现在node已经宕机了,就直接移除node好了。可以发现node删除后,这个node里面的pod也就被删除了。但是如果本身不想删除这个node,那就...原创 2018-04-07 18:27:06 · 8013 阅读 · 0 评论 -
Kubernetes集群部署tomcat容器/Java web应用流程-docker cp方式
kube-tomcat.yaml实现如下。这里是把Deployment和Services在一个文件中实现了。也可以分为两个文件来实现。# Copyright 2015 Google Inc. All Rights Reserved.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use ...原创 2018-04-07 18:13:42 · 3855 阅读 · 2 评论 -
一句话概括Kubernetes架构
Kubernetes是主从分布式架构。原创 2018-04-07 17:44:41 · 2150 阅读 · 0 评论 -
一句话概括Docker
Docker是轻量级的虚拟化技术。原创 2018-04-07 16:20:18 · 2349 阅读 · 1 评论 -
docker挂载目录失败/权限拒绝 解决方案
把宿主机的一个目录挂载到容器中的一个目录,当访问容器中的这个目录时,出现如下问题:ls: cannot open directory .: Permission denied无法访问目录,权限拒绝。该问题通常在centos7下出现。或者一个容器启动成功后,里面的服务无法成功访问,这是因为centos7中的安全模块selinux把权限禁掉了,一般的解决方案有以下两种:(1)临时关闭selinux直接...原创 2018-04-07 16:09:27 · 12186 阅读 · 1 评论 -
Docker Hub镜像构建错误:returned a non-zero code: 8
对于同一个Dockerfile,Docker Hub不同时间来进行构建会出现不同的结果,如下构建Tomcat的镜像为例:# 基于centos6基础镜像FROM centos:6MAINTAINER chenyufeng "yufengcode@gmail.com"# 设置当前工具目录# 该命令不会新增镜像层WORKDIR /home# 安装必要的工具RUN yum install -y wget ...原创 2018-04-07 15:37:19 · 14952 阅读 · 0 评论 -
Docker Hub结合Github自动化构建镜像
让Github与Docker Hub进行绑定Docker Hub->Create->Create Automated Build第一次进行该步骤需要Github的授权。会自动跳到Github同意授权即可。在Github上创建一个Docker构建项目,在里面实现Dockerfile。该步骤可以在本地完成,然后提交到自己的Github仓库中。然后继续进行第一个步骤,在右侧选择Github中...原创 2018-04-07 11:10:57 · 3578 阅读 · 1 评论 -
centos7.2安装/卸载docker最新版本流程
一.docker安装更新yumyum update创建docker.repo文件进行该步骤是因为默认使用yum下载的docker不是最新版的。不推荐使用docker6来进行安装、升级docker,关于docker6上的参考:docker在centos6.8上的升级。vim /etc/yum.repos.d/docker.repo该文件本身不存在,创建然后增加以下内容:name=Docker Rep...原创 2018-04-07 10:53:18 · 2373 阅读 · 0 评论 -
Docker DeviceMapper占用空间太大解决方案
Docker的所有镜像、缓存资源都会存储在devicemapper这个目录下,所以会导致这个目录占用磁盘极大,甚至会耗尽所有的服务器硬盘。如下图所示:解决方案1:失败问题主要在于原先分配的空间过大导致的,使用“docker info”查看:首先备份需要的容器和镜像,使用“docker save”或者“docker export”.然后暂停docker;删除/var/lib/docker目录;重建目...原创 2018-04-07 10:44:24 · 20589 阅读 · 2 评论 -
Docker Machine简介
Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行就可以在相应的平台上安装Docker,比如VirtualBox虚拟机,Azure等。官方提供的docker machine图示:查看machine列表docker-machine ls查看machine环境配置docker-machine env注意点:目前docker Machine还在开发中,还没有一个稳定...原创 2018-04-07 10:33:28 · 1497 阅读 · 0 评论 -
centos7作为Docker基础镜像须知
centos7基础镜像Dockerfile来构建mysql镜像可能会有问题,在Docker hub上构建失败:Build failed: The command '/bin/sh -c /etc/init.d/mysqld start && mysql -e "grant all privileges on *.* to 'root'@'%' identified by '1234...原创 2018-04-07 10:07:32 · 5250 阅读 · 1 评论 -
Docker基础镜像centos6与centos6.x比较
在编写Dockerfile时,比较常用的基础镜像就是centos。在centos的版本中,也主要分为主版本和次版本。目前centos docker官方提供的镜像版本如下:latest, centos7, 7centos6, 6centos7.4.1708, 7.4.1708centos7.3.1611, 7.3.1611centos7.2.1511, 7.2.1511centos7.1.1503,原创 2018-02-04 23:57:28 · 5668 阅读 · 0 评论 -
Kubernetes操作命令汇总
查看nodes节点一般该命令在master执行,想要查看到所有nodes节点的IP和状态。kubectl get nodes查看集群情况一般该命令在master执行。kubectl cluster-info查看事件kubectl get events查看已经创建的pods同时可以查看到pod的状态、重启次数和已经启动的时间。kubectl get pods查看某个pod详情kubectl get原创 2018-02-04 11:29:42 · 5759 阅读 · 0 评论 -
多节点部署Kubernetes dashboard UI详细流程
Kubernetes要做的一个最重要的工作就是实现Docker容器的集群,并且一般都是在不同的物理机器上。我们通过使用命令行来操作Kubernetes,但是如果有一个UI界面来可视化操作,岂不是更方便。本篇博客将要实现的是在两台机器上来部署dashboard ui的详细流程。(1)阿里云centos 7.2master是Kubernetes主服务器,nodes是Kubernetes的从服务器,推荐原创 2018-02-04 10:59:34 · 10932 阅读 · 0 评论 -
Kubernetes创建pod一直处于ContainerCreating解决方案
当我们编写一个pod yaml文件后,然后使用如下的命令来创建这个pods:kubectl create -f ***.yaml 但是发现创建完成后,状态一直都处于“ContainerCreating”中,实际上创建并没有真正成功。如果使用“kubectl describe”命令查看pod详情,会发现有错误:其中最主要的问题是:details: (open /etc/docker/cer原创 2018-01-21 12:01:27 · 15417 阅读 · 1 评论 -
解决gcr.io/google_container/***镜像下载失败的解决方案
可能由于某些原因,导致gcr.io/google_container的镜像无法下载,经过测试,可能通过普通的翻墙也会下载失败。 目前一个常见的解决方案是使用Docker Hub来做一个代理。步骤如下:编写Dockerfile,然后提交到Github。Dockerfile只需用一行代码:也就是你要真正拉取的镜像名称,把该镜像作为一个基础镜像即可。FROM gcr.io/google_con原创 2018-01-21 09:57:13 · 6979 阅读 · 1 评论 -
docker-engine conflicts with 2:docker-1.12.6-68.gitec8512b.el7.centos.x86_64解决方案
当在服务器上安装Kubernetes时,执行以下命令安装时出现问题:yum install -y etcd kubernetes错误:docker-engine conflicts with 2:docker-1.12.6-68.gitec8512b.el7.centos.x86_64详细的错误描述如下: 解决办法:因为安装kubernetes时会自动安装docker,如果机器上面已经有原创 2018-01-21 10:11:38 · 3270 阅读 · 0 评论 -
centos7.2单节点安装kubernetes
推荐在centos7+上面安装Kubernetes,测试在centos6.x上安装Kubernetes可能会有各种异常问题。在centos7+上安装Kubernetes步骤如下:关闭centos防火墙systemctl disable firewalldsystemctl stop firewalld安装etcd和kubernetes该步骤会默认安装docker。所以建议在原机器上没有安装Dock原创 2018-01-21 10:23:33 · 3366 阅读 · 3 评论 -
Docker: 精通ENTRYPOINT指令
ENTRYPOINT简介:docker run命令行中指定的任何参数都会被当做参数再次传递给ENTRYPOINT指令中指定的命令。一个Dockerfile中只能有一个ENTRYPOINT命令。如果有多条,只有最后一条有效。无参的方式:ENTRYPOINT [“/usr/sbin/nginx"]指定参数的方式:ENTRYPOINT [“/usr/sbin/nginx”, “-g”, “deamon原创 2017-12-10 19:13:36 · 11225 阅读 · 0 评论 -
Docker chenyufeng/nginx-centos镜像实现负载均衡
在之前的一篇博客中我们实现了使用Docker的官方nginx镜像来实现负载均衡,使用起来并不是很方便,这里使用我自己的镜像:chenyufeng/nginx-centos来实现负载均衡。使用chenyufeng/nginx-centos镜像更符合在Linux上对nginx的配置,将会更加方便。/usr/local/nginx/conf/nginx.conf配置如下:#user nobody;wo原创 2017-12-10 18:52:39 · 1052 阅读 · 0 评论 -
Docker官方nginx镜像实现负载均衡
这里使用官方nginx镜像,可以使用以下命令拉取:docker pull nginx负载均衡主要的配置在以下两个文件中:/etc/nginx/conf.d/default.conf:server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/ho原创 2017-12-10 18:40:02 · 2817 阅读 · 0 评论 -
优化Docker镜像大小方案
我们如果使用Dockerfile来构建Docker镜像,如果一不小心就会导致镜像大小超过1G,这是非常恐怖的。一般也都是好几百兆。较大的镜像往往会导致移植,迁移缓慢。Dockerfile就像代码一样需要持续去进行优化。使用下面的4个优化方案,可以大幅度的减小镜像的大小。最重要的因素是减少镜像的层数,这样能大大减小镜像的大小;使用链式代码“&&”把多行指令结合成一行。该方式创建的镜像大小为:837.原创 2017-12-10 17:54:46 · 5729 阅读 · 0 评论 -
Dockerfile:redis镜像编写
redis镜像在centos6.7上的Dockerfile实现如下:FROM centos:6.7MAINTAINER chenyufeng "yufengcode@gmail.com"WORKDIR /homeRUN yum install -y wget gcc && \ rpm --rebuilddb && \ yum install -y tar && \原创 2017-12-10 17:42:55 · 2238 阅读 · 0 评论 -
Dockerfile:RabbitMQ镜像编写
RabbitMQ镜像在centos6.7上的Dockerfile实现如下:FROM centos:6.7MAINTAINER chenyufeng "yufengcode@gmail.com"WORKDIR /usr/localRUN yum install -y gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget xz原创 2017-12-10 17:37:01 · 3782 阅读 · 1 评论 -
Dockerfile:nginx镜像编写
nginx镜像在centos6.7上的Dockerfile实现如下:FROM centos:6.7MAINTAINER chenyufeng "yufengcode@gmail.com"# 设置当前工具目录# 该命令不会新增镜像层WORKDIR /home#安装wgetRUN yum install -y wget && \ rpm --rebuilddb && \ yum insta原创 2017-12-10 17:26:56 · 1776 阅读 · 0 评论 -
Dockerfile:mysql镜像编写
mysql镜像在centos6.7上的Dockerfile实现如下:FROM centos:6.7MAINTAINER chenyufeng "yufengcode@gmail.com" # 使用yum的方式安装mysql;RUN yum install -y mysql-server mysql # 安装完成以后,执行以下命令。配置用户名密码相关信息;RUN /etc/init.d/mysq原创 2017-12-10 17:12:22 · 7717 阅读 · 1 评论 -
Dockerfile:tomcat镜像编写
tomcat8镜像在centos6.7上的Dockerfile实现如下:FROM centos:6.7MAINTAINER chenyufeng "yufengcode@gmail.com"# 设置当前工具目录# 该命令不会新增镜像层WORKDIR /home# 安装必要的工具RUN yum install -y wget && \ rpm --rebuilddb && \ yum i原创 2017-12-10 17:05:57 · 1301 阅读 · 0 评论 -
Docker Tomcat容器部署web应用(war)
创建tomcat容器docker run tomcat --name mytomcat -p 8080:8080 -d进入容器内部交互式的进入tomcat容器。“docker exec”命令表示在运行中的容器中开启一个新的进程。查看到webapps路径为:/usr/local/tomcat/webapps。等下需要把war包拷贝到该路径下。上传war包到容器docker中也可以使用cp命令完成和宿原创 2017-11-12 19:49:15 · 9266 阅读 · 0 评论 -
Docker安装官方Redis镜像
拉取redis官方镜像启动redis镜像因为redis默认端口是6379,所以这里使用宿主机的6379端口。“redis-server”表示启动redis的服务器端,可以接收客户端的连接。以下命令等同于:docker run redis --name myredis -p 6379:6379 -d redis-serverredis客户端连接redis服务这里有两种方式来连接Docker中的red原创 2017-11-12 18:25:35 · 11463 阅读 · 0 评论 -
Docker安装官方MySQL镜像
拉取mysql官方镜像启动容器初始化root用户的密码。-v:挂载宿主机的一个目录。”:“冒号前面的是宿主机目录,冒号后面的是容器目录。这样启动后,容器会自动创建/etc/mysql/my.cnf目录。的内容会被替换为。默认容器对这个目录有读写权限。-e:初始化root用户的密码;登录mysql出现问题:ERROR 2002 (HY000): Can't connect to local MySQ原创 2017-11-12 17:19:30 · 2008 阅读 · 0 评论 -
Docker安装官方nginx镜像
拉取nginx官方镜像到本地启动镜像docker run nginx --name mynginx -p 80:80 -d两条命令相同。浏览器中测试nginx出现以下界面表示nginx已经安装成功了。与本地真正安装nginx的效果是一样的。原创 2017-11-12 17:28:23 · 1992 阅读 · 1 评论 -
Docker安装官方Tomcat镜像
拉取Tomcat官方镜像 默认拉取最新的,这里的pull命令可以理解为git中的pull命令。就是一个简单的下载到本地。启动容器--name:手动指定这个容器的名字,否则是自动随机生成的名字,不方便记忆;-p:指定端口映射。把宿主机的8080端口映射到Docker中的8080端口。如果不指定,将会随机。建议手动指定。-d:让容器在后台运行。以下的命令等同于:docker run tom原创 2017-11-12 19:32:50 · 1595 阅读 · 0 评论 -
Docker创建自己需求的镜像
在前面几篇博客中,我们使用的镜像都是从Docker Hub下载的,要么是官方的,要么是别人上传的。我们有没有办法自己来构建一个镜像,以后就使用自己的镜像呢?答案当然是可以的。这样当我们从docker镜像仓库中下载的镜像不能满足需求时,我们就可以来构建符合自己需求的镜像了。 目前有两种方式来创建镜像:从已经创建的镜像中更新镜像,并且提交这个镜像;使用Dockerfile指令来创建一个新的原创 2017-11-12 15:33:09 · 13965 阅读 · 0 评论 -
Docker运行交互式容器
在之前的一篇博客中《Docker入门——Hello World》中我们通过命令下载了一个Ubuntu镜像,并使用Ubuntu中的bash打印出了信息。但是这个操作并不是交互式的,并没有侵入Ubuntu本身。在本篇博客中,我们可以进入Ubuntu,然后使用shell交互式的对容器进行交互。 docker的两个参数-i,-t可以实现交互式功能:docker run -i -t ubuntu原创 2017-11-12 15:36:03 · 19993 阅读 · 0 评论 -
Docker镜像与容器的区别
Docker入门首先需要了解的两个重要的概念就是镜像与容器。这两个概念非常相似,很容器混淆。这里就来好好的区分一下。镜像 一个Docker镜像可以构建于另一个Docker镜像之上,这种层叠关系可以是多层的。第一层的镜像层是基础镜像(Base Image),其它层的镜像(除了最顶层)称为父层镜像(Parent Image)。这些镜像继承了他们父层镜像的所有属性和设置,并在Dockerfi原创 2017-11-12 16:16:20 · 2150 阅读 · 0 评论 -
docker: Error response from daemon: unauthorized: incorrect username or password.
当我们在下载一个镜像过程中,可能会出现以下的问题:docker: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: unauthorized: incorrect username or password.详细说明如下:只要Mac上的Docker原创 2017-11-12 13:35:11 · 10760 阅读 · 4 评论 -
Docker镜像下载缓慢解决方法
由于Docker Hub的中央仓库是在国外,下载一些官方镜像会比较慢,有时可能还下载失败,这里推荐使用使用一个中科大的开源镜像:打开Docker-Daemon,在Registry mirrors中添加url,然后Apply&Restart即可。是不是突然发现下载镜像快了很多。。。原创 2017-11-12 13:09:19 · 2302 阅读 · 0 评论 -
Docker入门——Hello World
每当我们学习一门新的技术,总是会尝试使用“Hello World”的方式去入门,从这篇博客开始我们将会来学习如何使用Docker,如何使用Docker来提高我们的开发、部署、运维的效率。 Docker以Ubuntu15.10作为操作系统镜像创建一个新容器,然后在容器里执行/bin/echo “Hello world”,然后输出结果。这里我们可以简单的理解为在Docker这个容器中安装了原创 2017-11-12 12:46:36 · 1490 阅读 · 0 评论