docker越来越流行,这里介绍一点关于docker的基础知识。
Docker基础篇
- [x] docker简介
- [x] 安装docker服务
docker简介
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。-- 百度百科
上图来自docker官网截图,整体上说明了传统的虚拟机与docker的区别,传统的虚拟机包括应用程序,必要的二进制文件和库文件以及一个完整的操作系统,这样一个虚拟机文件会有上GB的大小。而docker容器则包含应用程序以及依赖包,但容器间共享操作系统的kernel,在宿主机上以一个进程体现一个docker容器,各个容器间是相互隔离的,容器不依赖任何特定的基础设施,这样方便于迁移。
已下所有操作基于Debain 8 x 64
docker服务器需要安装包:
dialog
perl-base
apt-utils
安装docker服务
先删除旧包
1 | root@haproxy-01:~# apt-get purge lxc-docker* |
再使apt能工作在https方式及安装CA证书,如下
1 | root@haproxy-01:~# apt-get update |
增加新的GPG key
1 | root@haproxy-01:~# apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D |
根据系统的发行版本增加相应的docker源,我这里使用的是Debian Jessie
1 | root@haproxy-01:~# vim /etc/apt/sources.list.d/docker.list #增加下边的地址 |
可用以下命令验证docker-engine
软件将会从哪个存储库下载及相应软件版本的列表
1 | root@haproxy-01:~# apt-cache policy docker-engine |
安装docker-engine
,这里安装目前最新的版本
1 | root@haproxy-01:~# apt-get install docker-engine=1.11.2-0~jessie |
以上操作可以用如下脚本完成:
1 |
|
在docker中进入一个已运行的容器
-
首先确保系统已安装有
nsenter
命令,此命令由util-linux
包安装得来,安装命令为apt-get install util-linux
-
先得到container id
1 | root@haproxy-01:~# docker ps |
- 计算出指定container id容器的PID
1 | root@haproxy-01:~# docker inspect --format {{.State.Pid}} d924adae5ff6 |
- 进入到容器中
1 | root@haproxy-01:~# nsenter --target 20272 --mount --uts --ipc --net --pid |
上边的命令似乎过于复杂,有前辈给我们准备好了便捷的工具,脚本如下:
1 | # Some useful commands to use docker. |
把上边的脚本内容保存在用户家目录下,文件名为.bashrc_docker
,或直接运行wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker
命令把此脚本文件下载到用户家目录下,再运行如下命令:
1 | echo "[ -f ~/.bashrc_docker ] && source ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc |
这样用户每次登陆时都会执行.bashrc_docker
文件,此工具使用:
1 | root@cst004:~# docker-pid <container> # docker-pid 跟上容器的name即可获得容器的pid |