Docker基础与高级

最近在学习 Docker 看到国外一个牛人和自己的实践顾写下此篇文章,以用来为故而知新!

1. Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包括系统。

2.

CentOS 6/7系列安装Docker

Docker的搭建Gitlab CI 全过程详解

Docker安装应用(CentOS 6.5_x64)

在 Docker 中使用 MySQL

在Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker

Docker安装应用(CentOS 6.5_x64)

Ubuntu 14.04安装Docker

阿里云CentOS 6.5 模板上安装 Docker

1.Docker安装

2.devicemapper

3.玩转net namespace

•3.1. ENV(环境变量)

port map直接使用docker默认分配的IP对外提供服务(测试中)

•5.1. 使用参数以及将docker0的ip配为机房内网网段

Docker COMMAND

•6.1. docker参数

•6.2. run

搭建私有Registry注册中心

•7.1. 下载软件

•7.2. 启动服务

•7.3. 使用

•7.4. 套一层透明代理(不推荐,有bug)

•7.5. Web UI

docker with HTTPS

•8.2.1. 创建CA(证书颁发中心)

•8.2.2. 创建服务端公钥和私钥

•8.2.3. 创建客户端公钥和私钥

•8.2.4. 移除服务端私钥、客户端私钥密码

•8.2.5. 使用

•8.2.6. 管理

•8.1. 原理

•8.2. 使用

Docker Web-UI(shipyard)

•9.5.1. 页面上的Images(:8000/images/)进行镜像删除要注意

•9.5.2. server端管理

•9.5.3. 不建议生产使用,可作为学习借鉴

•9.4.1. 登录页面

•9.4.2. 接受agent注册

•9.3.1. 下载镜像

•9.3.2. 启动容器(自动注册到server)

•9.2.1. 下载镜像

•9.2.2. 启动容器(自动完成部署)

•9.2.3. 验证

•9.1. 工作原理

•9.2. server配置

•9.3. agent配置

•9.4. 页面配置

•9.5. 注意

镜像制作

•10.1. 远程编译Dockerfile

11.内置bridge(nat)和自建网络桥接使用区别Docker Event事件监听

•12.1. 方法1:使用remote api

•12.2. 方法2:使用unix socket

•12.3. 方法3: 使用docker events命令

神器

•13.1. nsenter(无需sshd、无需attach也可以登录容器)

FAQ

•14.5.1. HTTP code 403 while uploading metadata: invalid character ‘<‘ looking for beginning of value

•14.5.2. dial tcp 127.0.0.1:5000: connection refused

•14.1. sshd服务起不来

•14.2. ulimit无法更改open-file、max processes

•14.3. 改变/var/lib/docker路径

•14.4. 将指定镜像标识为latest

•14.5. docker push报错

•14.6. CMD 和 ENTRYPOINT的区别

tag: cloud, virtual, docker, lxc

1. Docker安装

按照官方说明:红帽6、centos均通过epel源,执行yum install docker-io进行docker安装,启动服务是service docker start

经测试,红帽6、centos也可以通过在官网上下载编译好的二进制文件到本地也可以使用,但需要提前手动执行service cgconfig start来挂载cgroup,然后./docker-latest -d来启动服务。下载地址:https://get.docker.io/builds/Linux/x86_64/docker-latest

https://get.docker.io/builds/Linux/x86_64/docker-1.0.1

但是官方提示需要内核大于3.8版本,否则可能会有问题。el>3.8

2. devicemapper

扩容存储池大小、扩容容器文件系统大小https://www.dockboard.org/resizing-docker-containers-with-the-device-mapper-plugin/

实验成功,但是一旦容器关闭再启动,就会报错,还得根据文档再做一次dmsetup load; dmsetup resume才能成功启动容器(但是如果不先启动容器,就无法使用dmsetup命令来resume),因此能否用于生产环境有待继续探索

3. 玩转net namespace

首先要支持ip netns指令。而红帽6及epel均不支持,,解决方法:yum install -y yum update -y iproute

ip netns直接执行这个命令(或ip netns list)读取的是/var/run/netns下的文件名,因此若不存在/var/run/netns,需要mkdir -p /var/run/netns

配置像LXC一样的网络I. 宿主配置 1. 宿主上升级iproute包,以便支持ip netns指令: yum install -y yum update -y iproute

2. 在宿主上配置好桥接: 一. 方法1(不推荐): 敲命令配置桥接(很容易导致网络中断,需要ILO连上操作) 1) 创建桥接网卡br1并激活:brctl addbr br1; ip link set br1 up 2) 配置br1的mac地址,和宿主准备桥接的网卡mac相同,通常为内网网卡eth1:ip link set br1 address xx:xx:xx:xx:xx:xx 3) 给br1配置一个ip地址,或者将eth1的ip地址配置在br1上,2种方法任选其一都可行: 前者: ifconfig br1 192.168.2.1 netmask 255.255.255.0 后者: ifconfig eth1 0.0.0.0; ifconfig br1 192.168.2.2 netmask 255.255.255.0 4) 配置宿主网关,从br1出 ip ro del default ip ro add default via 192.168.2.254 dev br1 5) 将eth1桥接至br1: brctl addif br1 eth1 二. 方法2(推荐):写网卡配置文件 ifcfg-br1: DEVICE=”br1″ TYPE=”Bridge” NM_CONTROLLED=”no” ONBOOT=”yes” BOOTPROTO=”static” IPADDR=192.168.2.2 NETMASK=255.255.255.0

在乎的是沿途的风景以及看风景的心情,让心灵去旅行!

Docker基础与高级

相关文章:

你感兴趣的文章:

标签云: