docker教程阮一峰,docker菜鸟教程

如何学习Docker

docker教程阮一峰,docker菜鸟教程

文章插图
1.学习Docker,如果没有云计算的基本知识,以及内核的基本知识,那么学习并理解起来会稍吃力 。作为容器,Docker容器的优势在哪,不足在哪,最好了解容器的实现是怎样的(简单了解);拥有镜像管理,Docker又该如何体现软件开发,集成,部署,发布,再迭代的软件生命周期管理优势 。以上两点我认为最为关键,有这两方面的认识势必会对之后的工作帮助巨大 。

2.关于学习资源,起码的硬件设施总是要有的 。Docker及其生态的发展很快,不使用纯理论肯定收效甚微 。另外,资源还包括Docker官方,各大电子媒体平台,技术论坛,开源社区等,往往大拿的观点能点破自己的困惑,或者让自己知道哪方面的认识还很欠缺,以及让自己少走很多的弯路 。

3.个人兴趣的话,归结为强扭的瓜不甜 。起码应该认同Docker的设计价值,以及Docker的未来潜力,当然有依据的批判Docker并带动大家的思考,也是深切关注的表现 。

4.个人发展方向,我认为如果需要把Docker当作软件生命周期管理工具的话,那用好Docker最为重要,API及命令的理解与使用是必需的 。如果专注系统设计方面,那么除Docker以上的知识与经验之外,若有Docker源码的学习与理解,那么这些肯定会让你的Docker水平提高一个层次 。
什么是Docker?怎么用Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化 。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app) 。几乎没有性能...
如何进入Docker容器安装Docker
借助apt-get命令安装Docker件轻易举事
$ sudo apt-get install docker.io
允许非根用户运行Docker自添加docker群组面命令允许前用户运行Docker需根用户权限
$ sudo usermod -a -G docker $USER
退重新登录激群组员变化
步编辑Docker配置文件便更新Docker二进制代码位置
$ sudo vi /etc/default/docker.io DOCKER="/usr/bin/docker.io"
重启Docker服务
$ sudo service docker.io restart
管理Docker容器
想启Ubuntu操作系统新Docker容器首先需要获取Ubuntu Docker映像文件面命令通网络载Docker映像文件
$ docker pull ubuntu
种交互模式启Ubuntu Docker所示参数/bin/bash旦启容器面执行命令简单bash外壳命令
$ docker run -i -t ubuntu /bin/bash

更详细信息参考官手册
如何用docker搭建一台虚拟机docker如果安装成功,会有一块虚拟网卡,ip地址默认是172.17.42.1

用docker search centos6命令搜索githup中的容器

使用docker pull weepee/centos6下载容器到本地

使用docker images查看本地所有的容器

使用run命令启动容器
/usr/bin/dockerrun -d -v /root:/root -p 81:80 -p 2222:22 -p 10050:10050 -p 10051:10051centos6.5_zabbix:v1.3
一定要记住centos6.5_zabbix:v1.3就是第四步查询到的名称和版本号
81:80 前面的宿主机的端口,后面是docker中容器所开的端口,两个端口之间是映射关系
6
docker ps 查看运行状态的容器

7
如果提交修改用docker commit 859549d3f157命令 859549d3f157就是使用docker ps查询到的CONTAINER ID
如何进入 Docker 容器【docker教程阮一峰,docker菜鸟教程】从util-linux版本2.23开始,nsenter工具就包含在其中 。它用来访问另一个进程的名字空间 。nsenter要正常工作需要有root权限 。很不幸,Ubuntu 14.4仍然使用的是util-linux版本2.20 。安装最新版本的util-linux(2.24)版,请按照以下步骤:




为了连接到容器,你还需要找到容器的第一个进程的PID 。
dockerinspect--format"{{.State.Pid}}"<container-id>

通过这个PID,你就可以连接到这个容器:
nsenter--target$PID--mount--uts--ipc--net--pid


nsinit
从0.9版本开始,Docker自身就具有一个管理容器的库,名字为libcontainer 。libcontainer中的nsinit工具允许用户直接访问linux名字空间和cgroup内核 。在安装nsinit之前,你首先需要安装Go运行时环境:

apt-getinstallgitgolang-go
mkdir-p$HOME/go-dev/binmkdir-p$HOME/go-dev/src
echo"exportGOPATH=\$HOME/go-dev">>~/.profileecho"PATH=\$PATH:\$GOPATH/bin">>~/.profile
source~/.profile

接下来才安装nsinit:
mkdir-p$GOPATH/src/github.com/dotcloudcd$GOPATH/src/github.com/dotcloud
gitclonehttps://github.com/dotcloud/docker.gitcd$GOPATH/src/github.com/dotcloud/docker
/usr/bin/goget-vgithub.com/dotcloud/docker/vendor/src/github.com/docker/libcontainer/nsinit

nsinit读取的是位于/var/lib/docer/execdriver/native/<container-id>容器目录下的配置数据 。要运行nsinit,你需要切换到容器目录下 。由于/var/lib/docker目录对于root用户是只读权限,因此你还需要root权限 。通过docker的ps命令,你可以确定容器ID 。一旦你进入/var/lib/docker目录,你就可以连接容器了:
nsinitexec/bin/bash






lxc(-attach)
直到Docker0.8.1版本为止,LXC一直是管理容器的基本工具,Docker一直支持这个工具 。但是从0.9.0版本开始,Docker默认使用libcontainer管理容器,不再依赖LXC了 。因此默认情况下,你不能使用lxc-attach了 。
如果你仍然希望使用lxc-attach,那么你需要使用-e lxc选项来重新启动Docker服务进程 。使用这个选项,Docker的内部将再次使用LXC管理容器了 。完成这个任务最简单的做法就是创建/etc/default/docker文件(如果这个文件仍然不存在),并添加以下内容:
DOCKER_OPTS=" -e lxc"
现在你可以重新启动Docker服务了 。要连接容器,你需要知道完整的容器ID:
dockerps--no-trunc

接下来,你就可以连接这个容器了 。要完成下面工作,你还需要root权限:
lxc-attach-n<container-id>--/bin/bash







sshd
上面所有三种方法都要求具有主机系统的root权限 。为了不采用root权限,通过ssh访问容器将是一个很好的选择 。
要做到这一点,你需要构建一个支持SSH服务的基础映像 。此时,我们可能遇到这样的问题:我们是不是用DockerCMD或者ENTRYPOINT运行一条命令就可以了?如果此时有sshd进程运行,那么我们就不要再运行其他进程了 。接下来的工作是创建一个脚本或者使用像supervisord这样的进程管理工具来启动其它所有需要启动的进程 。有关如何使用supervisord的优秀的文档可以在Docker的web站点上找到 。一旦你启动了具有sshd进程的容器,你就可以像以往一样通过ssh客户端了连接这个容器了 。