当前位置: > Linux服务器 > Docker >

Docker折腾笔记

时间:2015-10-12 22:08来源:linux.it.net.cn 作者:IT
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖环境到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。 

 
 

 
 


一、安装 
1、安装准备 up kernel to 3.8 
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 
or 
yum install epel-release 

rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm 

yum --enablerepo=elrepo-kernel install kernel-ml -y 

http://elrepo.org/tiki/tiki-index.php: 


sed -n '/default/c default=1' /boot/grub/grub.conf #以新内核启动 
reboot 


2、安装docker 
yum install docker-io device-mapper-event-libs -y 

service docker start #启动服务 
chkconfig docker on 

排错信息: 
docker -d 
INFO[0000] +job serveapi(unix:///var/run/docker.sock) 
INFO[0000] WARNING: You are running linux kernel version 2.6.32-431.el6.x86_64, which might be unstable running docker. Please upgrade your kernel to 3.8.0. 
docker: relocation error: docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference 


二、常用命令选项 
Usage: docker [OPTIONS] COMMAND [arg...] 

docker search ubuntu #搜索镜像 
docker pull ubuntu #获取镜像 (默认为lastest) 
docker pull centos:6.6 #获取指定镜像tag 

docker [-v]|version #版本信息 
docker images #列出本地镜像 

docker ps #查看容器信息 
docker stats 18534ae7fbbc #容器运行状态 
docker stop 0185e1cb9466 #终止指定容器 
docker logs -f web-15 #查看指定容器log 

docker rm 18534ae7fbbc #删除容器 
docker rmi ubuntu #删除镜像 

docker inspect 18534ae7fbbc |grep '"Pid"' #查看容器Pid 
docker inspect 18534ae7fbbc |grep '"IPAddress":' #查看容器IP 
docker inspect 18534ae7fbbc |grep '"Gateway":' #查看容器网关 

docker rm $(docker ps -a |grep -v 'Up' |cut -d " " -f1) #删除所有未启动的容器 
docker rm $(docker ps -a -q) #删除所有容器 


三、启动容器的两种方式 

1、一种是基于镜像新建一个容器并启动 
docker run -it ubuntu +命令 #执行完就退出 
docker run -it ubuntu "ps" 
docker run -it ubuntu /bin/bash #启动一个容器的bash,-t分配伪终端、-i打开输入

docker run --help 
man docker-run 
docker run -dit --name Web01 ubuntu:14.04 /bin/bash #-d 后台运行 

2、一种是用start选项启动终止状态的容器 
docker start web-01 


四、连接(进入)容器 :(attach,不推荐) 

1、attach (自带选项, 不推荐) 
docker attach web-01 

2、nsenter (进入命名空间,推荐) 
yum install util-linux -y #安装nsenter所属软件包 
docker ps #查看已启动容器 

docker inspect --format "{{.State.Pid}}" 容器ID|容器名 #获取容器PID

echo "alias nsenter='nsenter -m -u -i -n -p -r -w'" >> ~/.bashrc

. ~/.bashrc

nsenter -t 9724   #进入容器

hostname Web01-3797 #给容器主机名加入PID,方便下次进入 

3、SSH 
docker run -t -i -c 100 -m 256MB -h Web-19 -p 2220:22 --restart="always" --name="web-19" centos:6.6 /bin/bash #之后自动进入容器bash 
yum -y install openssh-server openssh-clients #安装SSH 
chkconfig sshd on 
service sshd start 

ifconfig #查看容器IP 
passwd root #修改root密码 

ssh root@容器IP -p2220 

docker commit web-16 centos/sshd #容器保存为镜像,方便下次调用 


五、导出导入 : 
1、容器 
docker export 18534ae7fbbc > /opt/docker/ubuntu.tar #导出容器 
cat /opt/docker/ubuntu.tar |docker import - test/ubuntu:v1.0 #导入容器 

2、镜像 
docker save -o ubuntu_14.04.tar ubuntu:14.04 #导出镜像 
docker load --input ubuntu_14.04.tar #载入镜像 


六、端口映射 
docker run --help 
docker run -tid -c 100 -m 512MB -h Web-14 -p 192.168.18.10:80:80 --name="web-14" centos:6.6 /bin/bash #绑定指定IP端口 
docker run -tid -c 100 -m 512MB -h Web-15 -p 80:80 --name="web-15" centos:6.6 /bin/bash #绑定全部IP端口 
docker run -tid -c 100 -m 256MB -h Web-16 -p 2222:22 --restart="always" --name="web-16" centos:6.6 /bin/bash #自启动,绑定SSH端口 
docker run -tid -c 100 -m 512MB -h Web-117 -p 800:80 --name="web-117" centos:6.6 /bin/bash #绑定全部IP端口 


七、创建和挂载本地数据卷 
1、创建: 
docker run -dit --name Web12 -v /webapp centos:6.6 /bin/bash 
docker run -dit --name Web02 -v /webapp centos:6.6 /bin/bash 
docker run -dit --name Web05 -v /webapp centos:6.6 /bin/bash 

2、挂载 
docker run -dit --name Web11 -v /opt/downloads:/mnt centos:6.6 /bin/bash 
docker run -dit --name Web11 -v /opt/downloads:/mnt:ro centos:6.6 /bin/bash 

3、数据卷容器: 
docker run -d -v /dbdata --name dbdata training/postgres echo Data-only container for postgres #创建一个命名的数据卷容器 dbdata 
docker run -d --volumes-from dbdata --name db1 training/postgres #其他容器中使用 --volumes-from 来挂载 dbdata 容器中的数据卷 


更多参考: 
http://dockerpool.com/books 
https://docs.docker.com/installation/#installation (责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容