docker中的容器引擎变化lxc—->libcontainer—->runC
OCIOpen Container Initiative在2015年6月成立 , 有Linux基金会主导 , 旨在围绕容器格式和运行时制定一个开放的工业化标志
其中有2个标志 , 一个是runtime标准 , 一个是image标准
OCFOpen Container Format
runC
是现在较新版本中docker的容器引擎
docker0是NAT网桥 , 因此获得是私有网络地址
可以把容器想象成宿主机NAT服务背后的主机
如果开放容器给外部网络访问的话 , 需要在宿主机上为其指定DNAT规则 , 比如:
对宿主机某ip地址的访问全部映射给某容器
1-A PREROUTING -d 主机IP -j DNAT --to-destination 容器IP
对宿主机某IP地址的某端口的访问映射给某容器地址的某端口
1-A PREROUTING -d 主机IP -p {tcp|udp} --dport 主机端口 -j DNAT --to-desitination 容器IP:容器端口
doc...
写时复制
docker镜像由多个只读层叠加而成 , 启动容器时,docker会加载只读镜像层并在镜像栈顶部添加一个读写层
如果运行中的容器修改了一个已经存在的文件 , 那该文件将会从下面的只读层复制到读写层,该文件的只读版本仍然存在,只是被读写层中该文件的副本所隐藏 ,此即写时复制(COW)机制
docker挂载docker-managerd volume
123456docker run -it -name NAME -v /data busybox 挂载了一个由docker管理的存储卷 挂载到了docker内部的/data下 对应于宿主机来说 他的目录是在/var/lib/d...
1.将 Docker 镜像的镜像层文件作为 Docker 容器的 rootfs。
2.提取 Docker 镜像 json 文件中的动态文件,确定启动进程,并为之配置动态运行环境
docker采用分层构建 底层为bootfs , 在它之上为rootfs
bootfs 用于系统引导文件系统 , 包括bootloader和kernel , 容器启动完成之后会被卸载以节约内存
rootfs 在bootfs之上,表现为docker的根文件系统
传统模式是 启动的时候, 内核挂载rootfs时会首先挂载为只读模式 , 完整性自检完成后将其重新挂载为读写模式
docker中 rootfs由内核挂载为只读模式 , 而后通过联合挂载技术额外挂载一个可写层
aufs
用于为Linux文件系统实现联合挂载
在ubuntu系统下 docker默认用的是aufs 在CentOS...
阿里云加速器
daocloud
网易云镜像仓库
时速云镜像服务
下面是基于CentOS
##卸载旧版本
旧版本的 Docker 称为 docker 或者 docker-engine ,使用以下命令卸载旧版本:
1234$ sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine
##使用 yum 源 安装
执行以下命令安装依赖包:
123$ sudo yum install -y yum-utils \ device-mapper-persistent-data \ ...
docker daemon启动的时候用libcontainer启动 启动的驱动是execdrive 下载相关的数据是由graphdb保存的,下载下来保存的分层结构是保存在/var/lib/docker/graph中
index管理用户账号,访问权限,镜像,和镜像标签等相关
repostory 由具有某个功能镜像的所有相关版本集合
registry 保存docker镜像及镜像层次结构和元数据
docker http_proxy
方法1
1234567vim /etc/docker/daemon.json请在该配置文件中加入(没有该文件的话,请先建一个):{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}
method 2
1234vim /lib/systemd/system/docker.service在ExecStart下加入如下选项:--registry-mirror=MIRROR-ADDRESS
method 3
12345678指向私有仓库 harborvim /etc...