首页 > 代码库 > docker note
docker note
非原创,只做学习记录来使用
---------------------------------------------------------
Docker使用的是Linux容器,这是运行在与它的宿主机器同样的操作系统上。这准许它可以和宿主机器共享许多系统资源。它也会使用AuFS作为文件系统,也为你管理网络。
AuFS是一个层状的文件系统,因此你可以有一个只读部分和一个只写部分,然后将二者组合起来。你可以使系统的共同的部分用作只读,那块是被所有容器共享,并且给每个容器自己的可写区域
这几天一直搞KVM,但发现目前的应用实在是太简单了,多启动几个kvm有点浪费了。现在N多人都在讨论Docker,所以就查了下看看,安装在Centos6.5上,其它的也没多试。
使用Centos安装它还是挺方便的,配置好epel源后直接 yum install docker-io即可安装。service docker start就启动了,还是比较简单的。依赖安装包有libcgroup,lxc,lxc-libs。cgroup lxc这里不介绍了。
因为Centos比较熟悉,所以先下载它。获取最新的docker image 使用 docker pull centos即可。使用docker run -i -t centos /bin/bash就可以运行了。当初以为运行后直接配置个IP、启动SSH就行了,可搞了半天都不对,N多错误。后来找了下,Docker其实不是这个样子玩滴。
所以综合了下,还是自己根据Dockerfile来创建一个新的镜像吧,首先就是要编译Dockerfile,它的内容如下
# cat Dockerfile
# liuxin/centos:ssh
#
# VERSION 0.0.1
FROM centos
MAINTAINER liuxin "liuxin@abc.com"
RUN yum install -y openssh openssh-server openssh-clients
RUN mkdir /var/run/sshd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN /bin/echo ‘root:aaaaaa‘ |chpasswd
RUN useradd liu
RUN /bin/echo ‘liu:aaaaaa‘ |chpasswd
RUN /bin/sed -i ‘s/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g‘ /etc/pam.d/sshd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local
EXPOSE 22
CMD /usr/sbin/sshd -D
然后在文件所在目录下执行 docker build -rm -t liuxin/centos:ssh . (这里有个点,别忽略了),等一会就可以看到过程了,这里就不复制了。
这里的两条ssh-keygen要加上,如果不加ssh启动就会报错。因为网上大多都是Ubuntu的,当初我照着U的系统来做,根本没成功。理论上来说/usr/sbin/sshd -D就会创建了主机的rsakey,但U系统可以C系统就没成。
当执行完后,使用docker images就能看到自己创建,如下
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
liuxin/centos ssh 2854690ce065 About an hour ago 306.7 MB
ubuntu latest 7dc370b825b0 2 hours ago 275.3 MB
centos centos7 b157b77b1a65 4 weeks ago 243.7 MB
centos latest b157b77b1a65 4 weeks ago 243.7 MB
然后执行docker run -d -p 22 liuxin/centos:ssh、docker ps -a就可以看到
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
72a06bd5bf41 liuxin/centos:ssh /bin/sh -c ‘/usr/sbi About an hour ago Up About an hour 0.0.0.0:49153->22/tcp sleepy_euclid
这里的49153就是宿主机的端口,22就是Docker的ssh端口
然后运行ssh 127.0.0.1(或者其它IP) -p 49153 就可以ssh连接到Docker启动的这个了。
这里没介绍关于Docker的一些常用的命令,可以看下http://blog.chinaunix.net/uid-10915175-id-4443127.html
参考
https://docs.docker.com/installation/centos/
https://docs.docker.com/userguide/dockerimages/
https://docs.docker.com/examples/running_ssh_service/
docker note