docker logs 查看实时日志

docker logs -f -t --since="2017-05-31" --tail=10 edu_web_1   --since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。 -f : 查看实时日志 -t : 查看日志产生的日期 -tail=10 : 查看最后的10条日志。 edu_web_1 : 容器名称   from:https://www.cnblogs.com/qufanblog/p/6927411.html

Centos7上安装docker

Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。 社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。  一、安装docker 1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。 通过 uname -r 命令查看你当前的内核版本

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

3、卸载旧版本(如果安装过旧版本的话)

4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

5、设置yum源

6、可以查看所有仓库中所有docker版本,并选择特定版本安装

7、安装docker

8、启动并加入开机启动

9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

   二、问题 1、因为之前已经安装过旧版本的docker,在安装的时候报错如下:

2、卸载旧版本的包

3、再次安装docker

  from:https://www.cnblogs.com/yufeng218/p/8370670.html

docker: Error response from daemon: driver failed programming external connectivity on endpoint lamp

Docker容器做端口映射报错 docker: Error response from daemon: driver failed programming external connectivity on endpoint lamp3 (46b7917c940f7358948e55ec2df69a4dec2c6c7071b002bd374e8dbf0d40022c): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 86 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name. 解决方法 docker服务启动时定义的自定义链DOCKER被清除 重启即可

  ———————————————— 版权声明:本文为CSDN博主「米粥粥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_41545647/article/details/102679560

Kubernetes(一) 跟着官方文档从零搭建K8S

前言 本文将带领读者一起, 参照着Kubernetes官方文档, 对其安装部署进行讲解. Kubernetes更新迭代很快, 书上、网上等教程可能并不能适用于新版本, 但官方文档能. 阅读这篇文章你能收获到: 如何阅读Kubernetes官方安装指南并搭建一个Kubernetes环境. Kubernetes安装过程中的注意事项. 避过常见的坑. 阅读本文你需要: 熟悉Linux命令. 知道Kubernetes是用来干什么的 (不然装它干啥(ಥ_ಥ)). 知道Docker 器材准备 文档链接: Before you begin 序号 名称 数量 备注 1 服务器 2 操作系统: Linux(centos7, 其它操作系统也可, 安装过程类似, 可参考官方文档) 机器配置: CPU >= 2, 内存 >= 2G 从官网找到kubeadm安装文档入口, 文档很详细. 英文阅读没有障碍的读者推荐直接查看英文文档, 中文文档不全且更新不及时安装时可能存在问题. 前期准备 笔者已经预先安装好了两台虚拟机, centos7(CPUx2, 内存2.5G). 并在路由器上固定了这两个虚拟机的IP地址. 修改hostname

  修改后, 两台虚拟机的配置如下:

  确认MAC和product_uuid的唯一性 文档链接: Verify the MAC address and product_uuid are unique for every node

  注: 如果你的centos7没有ifconfig命令, 可以执行yum install net-tools进行安装. 配置防火墙 文档链接: Check required ports 由于是本地内网测试环境, 笔者图方便, 直接关闭了防火墙. 若安全要求较高, 可以参考官方文档放行必要端口.

  […]

《K8S权威指南》读书笔记-入门篇

一. k8s介绍 1. 是什么 kubernetes:古希腊“舵手”的意思(指引鲸鱼-docker) Production-Grade Container Orchestration:生产级别的容器编排系统 is an open-source system for automating deployment, scaling, and management of containerized applications:用于自动部署,扩展和管理容器化应用程序的开源系统 2. 发展历程 google内部使用十年之久的大规模机器管理系统-Borg,k8s是其他开源版本。 2014年6月 谷歌在旧金山的发布会为这款新的开源工具揭牌 2015年4月:google发布论文,高调宣传k8s 2015年7月:发布1.0版本 2015-2016:1.0-1.5,主要发布了五个版本 2017年: 相继推出 1.6、1.7、1.8、1.9,围绕稳定性、性能和平台的 cloud availability 做了改进 2018年3月27日,v1.10 发布。此版本持续增强了 Kubernetes 2018年6月28 日,v1.11 发布。此版本增强了网络功能、可扩展性与灵活性。Kubernetes 1.11 功能的更新为任何基础架构、云或内部部署都能嵌入到 Kubernetes 系统中增添了更多可能性的成熟性、可扩展性以及可插拔性,并在存储、安全、网络增强了其稳定性 2018年9月28日,v1.12 发布。此版本新增了两个备受期待的功能,Kubelet TLS Bootstrap 和对 Azure 虚拟机规模集支持(并已达到 GA 阶段)。同时该版本在安全性和 Azure 等关键功能上作出了改进; 2018年12月4日,v1.13发布。此版本的三个主要特性已逐渐过渡到 GA。此版本中的显着特征包括:使用 kubeadm 简化集群管理、Container Storage Interface(CSI)、以 CoreDNS 作为默认 DNS 大约每100天更新一次,如今已是 V 1.15.0版本(2019.7.17) 3. 特点 一切以服务为中心 自动化:自我扩展、自我诊断 底层不仅仅依赖docker,还支持Rocket 不局限于语言,对现有代码、框架没有任何侵入 4. 功能 基于容器的、一站式的分布式平台和分布式解决方案 主要功能是生产环境的容器编排,包括: 滚动升级 在线扩缩容 资源自动调度 资源配额管理 服务注册、服务发现 负载均衡 故障发现和自我修复 5. 为什么要用k8s 容器逐渐替代宿主机,k8s是业界广泛认可和看好的容器分布式解决方案 […]

我把SpringBoot应用部署到了K8S上,怎么感觉用起来像Docker!

SpringBoot实战电商项目mall(40k+star)地址:github.com/macrozheng/… 摘要 想要把一个复杂的微服务项目部署到K8S上去,首先我们得学会把单个SpringBoot应用部署上去。今天我们来讲下如何把SpringBoot应用部署到K8S上去,和使用Docker Compose部署非常类似,希望对大家有所帮助! 学前准备 学习本文需要有一些K8S基础,对K8S还不了解的朋友可以参考如下的文章。 《K8S太火了!花10分钟玩转它不香么?》 《自从上了K8S,项目更新都不带停机的!》 推送镜像到Docker Hub 之前我们都是自建的镜像仓库,这次我们换种方式,把镜像上传到Docker Hub中去。 首先我们得注册个Docker Hub的账号,Docker Hub地址:hub.docker.com/ 部署应用使用之前的mall-tiny-fabric项目,先修改pom.xml文件,主要是添加Docker Hub的认证信息和修改下镜像前缀,具体内容如下;

  修改完成后使用package命令先把镜像打包到Linux服务器,再使用docker:push命令把镜像推送到Docker Hub中去: 推送成功以后就可以在Docker Hub中看到镜像了。 应用部署 接下来我们将把应用部署到K8S上去,包含SpringBoot应用的部署和MySQL的部署。 部署MySQL 首先添加配置文件mysql-deployment.yaml用于创建Deployment,具体说明参考注释即可;

  通过应用配置文件来创建Deployment;

  运行成功后查询Deployment,发现mysql-deployment已经就绪;

  想要其他Pod可以通过服务名称访问MySQL,需要创建Service,添加配置文件mysql-service.yaml用于创建Service;

  通过应用配置文件来创建Service;

  运行成功后查询Service,发现mysql-service已经暴露在Node的30306端口上了;

  部署完成后需要新建mall数据库,并导入相关表,表地址:github.com/macrozheng/… 这里有个比较简单的方法来导入数据库,通过Navicat创建连接,先配置一个SSH通道; 之后我们就可以像在Linux服务器上访问数据库一样访问Minikube中的数据库了,直接添加Minikube中数据库IP和端口即可。 部署SpringBoot应用 首先添加配置文件mall-tiny-fabric-deployment.yaml用于创建Deployment,这里我们可以通过环境变量来覆盖SpringBoot中的默认配置;

  通过应用配置文件来创建Deployment;

  我们可以通过kubectl logs命令来查看应用的启动日志;

  如果想要从外部访问SpringBoot应用,需要创建Service,添加配置文件mall-tiny-fabric-service.yaml用于创建Service;

  通过应用配置文件来创建Service;

  此时服务已经暴露到了Node的30180端口上了;

  在Linux服务器上,我们可以通过curl命令来访问下项目的Swagger页面,不过只能查看到返回的一串HTML代码。

  外部访问应用 由于使用Minikube安装的K8S Node处于Linux服务器的内网环境,无法直接从外部访问,所以我们需要安装一个Nginx反向代理下才能访问。 首先我们需要安装Nginx,对Nginx不熟悉的朋友直接参考该文章即可:《Nginx的这些妙用,你肯定有不知道的!》 安装完成后添加一个Nginx的配置文件,这里我的配置路径为/mydata/nginx/conf/conf.d/,用于将mall-tiny.macrozheng.com域名的访问代理到K8S中的SpringBoot应用中去,proxy_pass为上面curl使用的路径;

  重启Nginx服务,再修改访问Linux服务器的本机host文件,添加如下记录;

  之后即可直接在本机上访问K8S上的SpringBoot应用了,访问地址:mall-tiny.macrozheng.com/swagger-ui.… 总结 通过把SpringBoot应用部署到K8S上的一顿操作,我们可以发现在K8S上部署和在Docker上部署有很多相似之处。K8S上很多部署用的脚本,直接翻译之前使用Docker Compose的脚本即可,非常类似。如果你之前用过Docker,那么你就可以轻松上手K8S! 项目源码地址 github.com/macrozheng/… 作者:MacroZheng 链接:https://juejin.cn/post/6924462821774196750 […]

解决报错WARNING: IPv4 forwarding is disabled. Networking will not work.

报错: [root@localhost /]# docker run -it ubuntu /bin/bash WARNING: IPv4 forwarding is disabled. Networking will not work. 解决方式: 第一步:在宿主机上执行echo "net.ipv4.ip_forward=1" >>/usr/lib/sysctl.d/00-system.conf 第二步:重启network和docker服务 [root@localhost /]# systemctl restart network && systemctl restart docker 第三步:验证是否成功 可见完美解决问题。   from:https://www.cnblogs.com/python-wen/p/11224828.html

docker部署springboot,并且查看运行日志

docker部署springboot(默认已经安装好docker) 第一步:构建镜像 创建Dockerfile文件,文件内容如下:

  其中 index-1.5.10.RELEASE.jar是你要发布的jar包。 然后把Dockerfile和index-1.5.10.RELEASE.jar建个文件夹,放到服务器上面。 cd进入你的文件夹,运行以下命令向docker中添加镜像:

  执行命令后,你的docker中就添加了名为jingxiangming的镜像。 查看镜像命令:

  第二步:启动容器

  关于上面的命令,我认为有必要具体讲解一下: -d: 后台运行容器,并返回容器ID; -p: 端口映射,格式为:主机(宿主)端口:容器端口;//意思是第一个访问服务器的端口,第二个8080是服务器本地占用访问的端口 jingxiangming:docker里面的镜像名称 当然除了上面基本的参数外,还有额外的参数,这个就需要大家自己去查阅资料了,我这里只列举比较重要的。   启动成功后,会返回一个容器id,然后就可以测试访问了!   日志查看 查看运行的容器日志:

 

  from:https://blog.csdn.net/qq_29611427/article/details/81534037

docker自动启动容器

Docker提供了重新启动策略 来控制容器在退出时或Docker重新启动时是否自动启动。重新启动策略可确保以正确的顺序启动链接的容器。Docker建议您使用重新启动策略,并避免使用进程管理器来启动容器。 重新启动策略--live-restore与dockerd 命令的标志不同。--live-restore尽管网络和用户输入中断,但使用允许您在Docker升级期间保持容器运行。 使用重启策略 要为容器配置重新启动策略,请--restart在使用该docker run命令时使用该标志。--restart标志的值可以是以下任何一种: 旗 描述 no 不要自动重启容器。(默认) on-failure 如果容器由于错误而退出,则重新启动容器,该错误表现为非零退出代码。 always 如果容器停止,请务必重启容器。如果手动停止,则仅在Docker守护程序重新启动或手动重新启动容器本身时才重新启动。(参见重启政策详情中列出的第二个项目) unless-stopped 类似于always,除了当容器停止(手动或其他方式)时,即使在Docker守护程序重新启动后也不会重新启动容器。 以下示例启动Redis容器并将其配置为始终重新启动,除非明确停止或重新启动Docker。

  重启政策详情 使用重启策略时请记住以下几点: 重启策略仅在容器成功启动后生效。在这种情况下,成功启动意味着容器启动至少10秒并且Docker已开始监视它。这可以防止根本不启动的容器进入重启循环。 如果手动停止容器,则会忽略其重新启动策略,直到Docker守护程序重新启动或手动重新启动容器。这是防止重启循环的另一种尝试。 重新启动策略仅适用于容器。群组服务的重新启动策略配置不同。请参阅与服务重新启动相关的 标志。 如果run时没有添加restart 可以通过update命令追加 docker update --restart=always web 1、先后台启动容器未加restart参数 2、docker ps 查看了当前运行的容器 3、重启docker 服务 4、再次docker ps 查看当前运行的容器,发现容器并没有运行 5、利用 update 设置 restart=always 6、重启docker 服务 7、再次docker ps 查看当前运行的容器,此时发现已经自动启动容器 ——————— 使用流程管理器 如果重新启动策略不适合您的需要,例如当Docker之外的进程依赖Docker容器时,您可以使用流程管理器,例如 upstart, systemd或supervisor。 警告:不要尝试将Docker重新启动策略与主机级进程管理器结合使用,因为这会产生冲突。 要使用进程管理器,请将其配置为使用您通常用于手动启动容器的相同docker start或docker service命令来启动容器或服务。有关更多详细信息,请参阅特定流程管理器的文档。 在容器内使用进程管理器 进程管理器也可以在容器内运行,以检查进程是否正在运行,如果没有则启动/重启进程   官方介绍在此,以上内容引用官网内容 https://docs.docker.com/engine/admin/start-containers-automatically/#use-a-process-manager   from:https://www.cnblogs.com/wei9593/p/11192908.html

docker 运行容器_如何修改运行中的docker容器挂载目录

当docker容器创建后,忘记挂接做本地与容器目录挂接后,导致数据存储都是存在容器中,如果想修改容器内文件或替换,就需要通过以下命令替换。

  为了方便,只要在linux目录替换,可以通过容器挂载的方式,只要替换linux的目录,就能实现容器内的文件变更。 挂载目录步骤如下: 1、停止docker运行

  2、修改容器的配制文件 容器路径:/var/lib/docker/containers/[容器ID] 修改的文件: 2.1、hostconfig.json 在"Binds"节点中增加挂载目录的关系,如:

  前面的是本地目录,后面的是容器目录,多个的话,用逗号隔开。 2.2、config.v2.json 在"MountPoints" 节点中增加挂载目录。如:

  3、重新docker,开启容器

  以上是以修改正在运行的容器的方式挂载目录。 还有简单的方式: 提交现有容器为新镜像,然后重新运行挂载。   from:https://blog.csdn.net/weixin_36431535/article/details/113067296

docker: Error response from daemon: driver failed programming external connectivity on endpoint lamp

Docker容器做端口映射报错 docker: Error response from daemon: driver failed programming external connectivity on endpoint lamp3 (46b7917c940f7358948e55ec2df69a4dec2c6c7071b002bd374e8dbf0d40022c): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 86 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name. 解决方法 docker服务启动时定义的自定义链DOCKER被清除 重启即可systemctl restart docker ———————————————— 版权声明:本文为CSDN博主「米粥粥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_41545647/article/details/102679560

Unknown instruction: FROM CENTOS:7

用Dockerfile构建jdk镜像的时候出的错 把Dockerfile文件删除之后重新建一个 把空格 符号全更换一遍英文 最后运行成功   from:https://blog.csdn.net/weixin_43555477/article/details/106480089