Docker 是一种操作系统级别的虚拟化实现方案,依赖于Linux内核特性 Namespace 和 Cgroup 实现。常用应用程序的开发、测试、部署服务。
容器技术的发展经过了以下几个阶段。以下是对其中几个关键节点做一个总结。
Docker
容器基于Linux namespace
技术构建,本文结合 unshare、nsenter介绍 Namespaces 如何在 Docker 中应用。
Docker 常见安装步骤,包括安装最新版本Docker和安装指定版本Docker
docker 端口映射是通过宿主机的
iptables
来实现的,本文通过示例介绍端口映射的原理。
Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
Docker 容器 client 使用介绍。
Docker
Docker 网络之 bridge 模式使用介绍。
一般代理监听在
127.0.0.1
端口,容器内通过127.0.0.1
无法正确访问到代理服务,本文解决如何配置容器通过代理上网问题
本文创建
docker
容器指定参数--net=none
,基于Linux Bridge
和netns
技术为容器配置IP
地址,实现容器和外界通信。
本文创建
docker
容器指定参数--net=<bridge-name>
,基于Linux Bridge
和 vxlan 技术为容器配置IP
地址,实现容器间通信。
Linux macvlan
在Docker
网络中只能以bridge
模式运行,本文以通过示例说明macvlan
在Docker
网络的连通性。
本文介绍如何使用 OpenvSwitch 连接 Docker 容器。实现思路:为 docker 默认创建的 docker0 网桥分配网段,通过在 OpenvSwitch 网桥建立 gre 隧道连接多个主机,并将 docker0 网桥和 OpenvSwitch 连接实现跨主机连接 docker 容器。
Dockerfile 是一个文本文件,它包含了生成镜像所需的所有命令,用来制作Docker的镜像。
本文介绍
Docker
包括5中常见的网路模式,并介绍容器间通信的常用方法。
Docker
Docker 开发
Docker
Docker Demo
Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。- github.com/docker/compose
Docker逃逸
指容器可以访问到宿主主机的权限。
构建
Docker
镜像时,我们都是通过FROM
指定一个已有镜像进行构建,该镜像一般称为基础镜像,它并不是凭空出现的,也是基于Dockerfile
构建的,那如何创建一个基础镜像呢,本文将通过示例构建 busybox 基础镜像。
没有使用
docker-compose
命令创建的容器(推荐),可以使用runlike
、rekcod
打印容器创建时的参数
Traefik
(发音像traffic
)是一个现代的HTTP反向代理
和负载均衡器
,用于轻松部署微服务。它支持多个后端(Docker
,Swarm mode
,Kubernetes
,Marathon
,Consul
,Etcd
,Rancher
,Amazon ECS
等)来自动和动态地管理其配置。
本文从零开始,介绍如何基于
moby
的源码构建docker
安装包。
Data Volume 本质上是宿主机文件系统中的目录或文件,本文介绍常见 Docker 共享 Volumes 方法
CoreDNS
是CNCF
中托管的一个域名解析项目,原生集成在Kubernetes
,为云原生的DNS
解析和服务发现功能。本文介绍使用Docker
搭建CoreDNS
服务
Docker API
认证可以采用TLS/SSL
证书来确保用户与API
之间连接的安全性,下面介绍如何签发自SSL
证书,并配置 docker api 使用 SSL 证书进行通信。
tini
是一个针对容器开发的、精简的init
服务。tini
的作用是生成子进程、避免僵尸进程生成、转发信号量(pid
为1
时)到子进程并等待它退出。使用tini
可以优雅的结束容器内的进程。
Docker v17.05
开始支持多阶段构建 (multistage builds),能有效减少images
的大小,本文以golang
helloword
为例,演示Docker 多阶段构建
。
使用docker过程中,遇到
No space left on device
,刚开始以为是没有存储空间,后来发现是inode
耗尽导致。
OverlayFS
是一个类似于AUFS
的现代联合文件系统,但更快,实现更简单。Docker为OverlayFS
提供了一个存储驱动程序。OverlayFS
是内核提供的文件系统,overlay
和overlay2
是docker
提供的存储驱动
Dockerfile
中的COPY指令
和ADD指令
的唯一区别在于是否支持从远程URL
获取资源。COPY指令
只能从执行docker build
所在的主机上读取资源并复制到镜像中。而ADD指令
还支持通过URL从远程服务器读取资源并复制到镜像中。
Alpine Linux是一个面向安全应用的轻量级Linux发行版。它采用了musl libc和busybox以减小系统的体积和运行时资源消耗,同时还提供了自己的包管理工具apk。Alpine Linux的内核都打了grsecurity/PaX补丁,并且所有的程序都编译为Position Independent Executables (PIE) 以增强系统的安全性。
Docker 报错:Error starting daemon: layer does not exist 问题。
Docker Client可以通过API或Socket连接到Docker Server(守护进程),下面介绍如何配置Docker守护进程从而支持Docker Client的连接。
Docker镜像与仓库
Linux 环境服务开机启动采用 systemctl enable 方式或在 rc.local 添加启动,docker 开机启动容器十分简单,在 docker run 指令中加入
--restart=always
就行。
本文介绍如何在天朝,加速 docker 镜像下载。
指定
docker run --privileged
参数可以为容器扩展权限,使root拥有真正的root权限
介绍 docker /etc/docker/daemon.json 配置。
自己只做了个docker jekyll环境跑gitpage的blog。
Docker启动一个有nat映射端口的容器时iptables 报No chain/target/match by that name问题。
Java+Tomcat是进程常使用的Java Web服务器,该博文主要如何使用Dockerfile构建Docker镜像
因为github无耻的拒绝了百度对gitpage的抓取和收录,故此自己只做了个jekyll环境跑gitpage的blog,只为收录。。。
Java+Tomcat是进程常使用的Java Web服务器,该博文主要介绍如何使用Dockerfile构建Docker镜像
本文介绍如何将
Docker
官方提供的CentOS
镜像转化为自己仓库的私有镜像。
该文章主要介绍Docker容器与其他虚拟化的区别,Docker的文件系统,Docker启动和管理的常用命令,Docker的端口映射,Docker挂载宿主机目录作为卷等命令。