
深入浅出Docker
文章平均质量分 79
Docker最新动态介绍,以及从入门到进阶的介绍,涵括docker从安装到基础使用,从docker-compose到swarm,从数据卷到Network应用,以及各种流行开源软件从Sonarqube到gitlab如何使用docker进行最佳应用。
淼叔
资深架构师,PMP、OCP、CSM、HPE University讲师,EXIN DevOps Professional与DevOps Master认证讲师,曾担任HPE GD China DevOps & Agile Leader,帮助企业级客户提供DevOps咨询培训以及实施指导。熟悉通信和金融领域,有超过十年金融外汇行业的架构设计、开发、维护经验,在十几年的IT从业生涯中拥有了软件开发设计领域接近全生命周期的经验和知识积累,著有企业级DevOps技术与工具实战。
展开
-
从ARM镜像的三种方式看统一镜像构建
Java虚拟机所提出的“一处编译、处处运行”的机制使得Java得到了极大的发展,不依赖与底层的操作系统,在JVM层进行解耦,同一份Java字节码在不同平台的运行真正实现了跨操作系统的需求,从此Java应用基本上默认被认为跨操作系统可用的。这种思路显然对于容器的发展具有同样的借鉴作用,在前面的文章曾介绍过使用QEMU在x86体系架构的机器上进行ARM镜像构建的方式,这篇文章以ARM镜像的三种构建方式为例对镜像的统一构建进行展开。原创 2020-10-31 05:33:50 · 2115 阅读 · 0 评论 -
Docker跨平台架构的新特性buildx的启用方式
Docker在19.03引入了一个新的特性,使得Docker可以构建不同CPU体系结构的镜像,比如ARM镜像,这是不必引入模拟器的情况下,Docker自身所提供的原生统一构建机制,但是使用时需要进行设定才能进行使用,这篇文章以此实验特性的开启为例,如何暂时开启或者永久开启的方式进行说明。原创 2020-10-30 21:32:24 · 2430 阅读 · 0 评论 -
Docker基础:Docker Desktop community的手动更新方法
这篇文章介绍一下MacOS上的Docker Desktop community手动更新的方法。原创 2020-10-30 19:56:34 · 5279 阅读 · 0 评论 -
Dockerfile实践之多阶段构建
在Docker 17.05之后,Docker在构建中支持了多阶段构建,简单来说,Dockerfile中可以有多个FROM,这篇文章通过一个简单的示例来说明多阶段构建的使用场景和方式。原创 2020-10-30 05:23:16 · 1119 阅读 · 0 评论 -
GitLab基础:Permission denied的对应记录
这篇文章记录一下SELinux对于GitLab的一个影响示例。原创 2020-08-12 06:56:01 · 2530 阅读 · 0 评论 -
MySQL基础:容器化的主从模式
这篇文章介绍一下使用容器化方式构成一主两从的MySQL数据库。原创 2020-06-07 17:01:31 · 748 阅读 · 0 评论 -
Redis基础:哨兵模式下主节点宕机的自动对应
在上一篇文章中,介绍了Redis哨兵模式的构建,这篇文章继续来看一下主节点宕机的情况下的自动对应方式。原创 2020-06-07 10:08:47 · 2043 阅读 · 0 评论 -
Redis基础:哨兵模式
在上篇文章中介绍了Redis主从模式的优点和缺点,哨兵模式是建立在主从模式基础之上的,主从模式中一点主节点发生故障,必须引入手工切换,而哨兵模式则可以解决这个问题。原创 2020-06-07 09:47:12 · 1071 阅读 · 0 评论 -
Redis基础:主从模式的优点和缺点
上篇文章使用容器化的方式构建了一个一主两丛的Redis服务,这篇文章继续在此基础之上确认一下相应的优点和缺点。原创 2020-06-07 09:19:54 · 3152 阅读 · 0 评论 -
Redis基础:容器化方式的主从模式
Redis有主从、哨兵和集群三种常见模式,这篇文章使用Docker来说明Redis的主从模式的使用方式。原创 2020-06-06 09:09:50 · 997 阅读 · 0 评论 -
JEECG容器化部署:Alpine镜像方式
在前面的一篇文章中提到了JEECG的Alpine镜像使用时出现的问题,就是验证码需要使用到fontmanager,而环境中的OPENJDK的JRE中又没有提供,所以退而求其次使用官方的Dockerfile中的CentOS的方式安装JDK来完成,通过验证发现提供openjdk8-jre、 fontconfig和ttf-dejavu就可以解决此问题。原创 2020-06-05 06:52:01 · 991 阅读 · 0 评论 -
JEECG容器化部署
JEECG代码中有一个Dockerfile,基本思路是以CentOS为基础镜像,在其中安装了nginx、jdk、mysql和redis,将编译出来的前端文件拷贝至nginx的指定目录,后端的jar文件放至根目录,并生成nginx的配置文件和脚本启动文件,在脚本启动文件中启动redis、nginx和java -jar的后端服务,这篇文章将MySQL和Redis拿出来,作为容器化部署的一种粗糙的解决方式。原创 2020-06-04 22:31:53 · 1625 阅读 · 2 评论 -
JEECG部署:Alpine镜像的问题
这篇文章memo一下JEECG部署时使用Alpine镜像会产生的问题。原创 2020-06-04 20:42:51 · 709 阅读 · 0 评论 -
CentOS7安装docker经常出现的两个问题
这篇文章memo一下CentOS 7安装Docker经常出现的两个问题和对应方法。原创 2020-06-04 19:50:47 · 7129 阅读 · 0 评论 -
socat使用指南:5:打开MacOS上的Remote API服务
Docker提供了Remote API,可以通过REST方式的接口进行操作,但是在MacOS上Docker Desktop CE的缺省安装,却无法使用,这篇文章继续介绍如何使用socat实现在MacOS上开启Docker Remote API的方式。原创 2020-03-19 21:19:05 · 1316 阅读 · 1 评论 -
Consul:12:使用容器方式构建Consul集群
这篇文章介绍使用官方镜像构建Consul集群的方式。原创 2020-03-03 21:03:27 · 767 阅读 · 0 评论 -
MySQL: 容器化方式启动
这篇文章记录一下使用容器化方式启动MySQL的执行命令与docker-compose.yml文件。原创 2020-02-22 12:18:44 · 1335 阅读 · 0 评论 -
Kubernetes基础:可以用作示例演示的tornado镜像
这篇文章说明一个可以在后续进行蓝绿部署、灰度发布以及负载均衡的tornado镜像。原创 2020-02-10 08:10:04 · 500 阅读 · 0 评论 -
Prometheus:监控与告警:12:使用cadvisor + Node Exporter进行监控
cadvisor和Node Exporter都可以提供监控数据,前者重点关注与容器的状态,后者关注与节点的状态,这篇文章使用Prometheus Server + cadvisor + Node Exporter + Grafana介绍如何进行设定以进行监控。原创 2020-01-21 06:25:41 · 3119 阅读 · 0 评论 -
Prometheus:监控与告警:9:容器化方式使用Node Exporter和Prometheus
前面的文章介绍了如何通过Node Exporter提供节点监控信息,然后使用Prometheus Server进行搜集,通过Grafana进行展示的示例。示例中Prometheus Server是使用Docker方式启动,而Node Exporter是通过二进制文件直接启动的,而这篇文章介绍一下Node Exporter和Prometheus都使用Docker方式启动和配置的方法。原创 2020-01-20 04:58:56 · 1158 阅读 · 0 评论 -
Grafana基础:定制化启动的缺省配置
Grafana配置文件中的设定基本都可以通过环境变量的方式来设定,用户在使用的时候也就会更加方便地通过环境变量的设定来对需要修改的设定进行调整,这篇文章以Docker方式启动的Grafana为例,介绍一下如何使用环境变量设定来修改Grafana启动时的缺省配置。原创 2020-01-19 07:13:00 · 2836 阅读 · 0 评论 -
持续构建:Alpine镜像下构建的Go语言应用的运行问题
Go语言虽然是平台无关性的语言,但是构建出来的应用由于是可执行文件,所以注定无法像Java那样“一次编译、处处运行”,因为Java应用程序的二进制字节码下的解释由JVM这一层来实现,所以能够实现一次编译之后随处运行的平台无关性。这篇文章通过Alpine下编译的二进制文件的运行方式来说明在实际使用中需要注意的一个细节。原创 2020-01-02 07:03:37 · 1076 阅读 · 0 评论 -
持续构建:使用Docker镜像方式构建go语言项目
go官方提供了各种版本的,在Easypack中根据官方的Alpine镜像创建go语言的镜像,因为go 1.13开始GOPROXY 默认为 https://proxy.golang.org,将GOPROXY缺省设定为goproxy.cn,以方便更简单地使用go镜像进行构建。原创 2020-01-02 05:39:47 · 2275 阅读 · 1 评论 -
Prometheus:监控与告警:2:安装方法
这篇文章介绍一下Prometheus常见的安装方式,比如镜像方式或者二进制文件方式等。原创 2019-12-31 06:07:41 · 721 阅读 · 0 评论 -
Android应用构建:14:构建Android SDK的自定义镜像
使用容器能更方便地进行持续集成和持续部署的实践,这篇文章介绍一下如何构建Android SDK的自定义镜像。原创 2019-12-21 05:36:08 · 714 阅读 · 0 评论 -
Gradle进阶:6:结合容器进行构建
这篇文章使用容器方式执行Gradle的构建,使用Gradle对示例代码进行jar包的构建并验证结果,来说明容器方式如何进行Gradle构建。原创 2019-12-19 20:46:42 · 600 阅读 · 0 评论 -
SSL基础:27:支持https的Nginx镜像(Alpine版)
前一篇文章介绍了如何使用OpenSSL为nginx服务生成所要使用的证书,这篇文章将继续将运行在普通nginx镜像中的https服务集成到Alpine版本的nginx镜像中。我们将在nginx的alpine镜像的基础之上,安装openssl,然后为此镜像提供一个证书生成工具,并默认配置一个启动即可运行的证书。原创 2019-12-16 21:58:50 · 2405 阅读 · 0 评论 -
SSL基础:26:nginx配置https服务
使用nginx可以快速搭建http的服务,结合自签名证书则能很容易地提供https服务,这篇文章以容器方式介绍如何快速搭建nginx的https服务。原创 2019-12-16 21:39:36 · 1184 阅读 · 0 评论 -
Dockerfile实践指南之依赖管理
使用Dockerfile进行构建镜像的构建自然而然地会碰到各种依赖,而Dockerfile的本质就是将所有这些依赖构成的版本基线的一个管理,如何更好的管理依赖,当依赖变化的时候,当镜像重构进构建的时候,是否存在多重的管理,这些都是Dockerfile在进行依赖管理时说需要考虑的内容。原创 2019-11-12 07:49:14 · 1260 阅读 · 0 评论 -
Docker容器启动错误对应
现象:docker run出现错误,详细信息如下所示[root@liumiao ~]# docker run -p 38818:8888 --name nginxtest -d nginxaf28ef608d84764961a477d567662c133844ab09a38c1d601e9948b7705fae09/usr/bin/docker-current: Error respon...原创 2019-11-04 05:07:37 · 1513 阅读 · 0 评论 -
Jenkins基础:Jenkinsfile使用实例:12:在Jenkins分布式构建环境中执行构建
Jenkins支持多种方式实现分布式构建,这篇文章介绍在一主节点(Master)三从节点(Slave)的Jenkins分布式构建环境中使用Jenkinsfile的构建方式。原创 2019-07-02 05:00:43 · 2848 阅读 · 0 评论 -
Jenkins基础:Jenkinsfile使用实例:11:使用dockerfile生成镜像
在前面的文章中介绍了如何使用docker{}结合image来使用Maven容器,而此Maven容器是使用已经存在的Maven镜像启动的。这种使用方法的限制在于事前需要准备Maven镜像,而如果希望流水线即代码更加彻底的话,一种常见的做法是此Maven镜像也动态生成,Jenkinsfile中提供了dockerfile{}来完成这类需求。原创 2019-06-30 10:27:06 · 6681 阅读 · 0 评论 -
Jenkins基础:Jenkinsfile使用实例:10:在Jenkinsfile中使用多个docker容器
在上篇文章中介绍了如何在Jenkinsfile中使用单个docker容器的方法,而实际情况中使用多国Docker容器的情况非常普遍,比如仅仅在构建阶段,很有可能就有前端和后端分别需要构建的需要,比如前端使用NODE的镜像进行构建,而后端使用Maven镜像进行构建。这篇文章主要介绍如何在Jenkinsfile中使用多个docker镜像原创 2019-06-29 05:20:24 · 3224 阅读 · 0 评论 -
Jenkins基础:Jenkinsfile使用实例:Cannot connect to the Docker daemon对应方法
在Jenkinsfile中通过使用docker{}可以进行镜像和容器的相关操作,但是使用的时候经常会出现Cannot connect to the Docker daemon的提示信息,这篇文章整理一下常见的对应方法。原创 2019-06-29 04:07:35 · 5246 阅读 · 0 评论 -
Jenkins基础:Jenkinsfile使用实例:9:在Jenkinsfile中docker容器
随着容器的使用越来越多,在持续集成和部署的过程中对容器的操作也成为了常见操作之一。在pipeline2.5以及后续版本本中,在Jenkinsfile中已经有了对于Docker的内置支持,Jenkinsfile中通过docker{}来指定可以使用的容器。这篇文章以如何在Jenkinsfile中使用Maven镜像为例进行相关说明。原创 2019-06-29 04:39:05 · 5033 阅读 · 1 评论 -
Easypack:基于Alpine的Oracle的JDK镜像
昨天在Dockerhub上搜了一下,目前提供出来的Alpine版本的Oracle的JDK镜像大多不好用,加上Oracle本身的下载方式发生变化,结合Alpine镜像本身的MUSL的libc并不能得到Oracle的支持,暂时在Easypack中添加对Oracle的Alpine镜像的支持。原创 2019-04-30 21:48:15 · 3796 阅读 · 0 评论 -
Alpine镜像中Gnu Libc的设定方法
Alpine镜像中的musl的libc,所以一般来说使用gnu libc的软件最好使用其他发行版的linux,但是Alpine镜像小而简单的特性是很多用户无法放弃的,这篇文章介绍一下使用Alpine中支持Gnu Libc的方法。原创 2019-04-30 20:53:56 · 7713 阅读 · 0 评论 -
Alpine镜像中not found引出的gnu libc和musl libc的争论
在一个使用旧版的Oracle的JDK的Alpine版本的镜像时出现了问题,这篇文章作为后续的整理,以此为契机,简单介绍一下Alpine版本中的musl libc和gnu libc的设定。原创 2019-04-30 07:19:12 · 61059 阅读 · 9 评论 -
使用容器方式进行编译的经验和技巧小结
使用容器方式进行编译指定当前工作目录的小技巧原创 2019-04-25 21:24:42 · 1900 阅读 · 2 评论 -
ubuntu容器下时区修改方法
这篇文章简单memo一下ubuntu或者debian容器下的时区设定。这本来是timedatectl 直接设定就可以解决的问题。原创 2019-04-12 05:32:15 · 9285 阅读 · 1 评论