您的位置:首页 > 运维架构 > Docker

Docker折腾笔记

2015-06-23 22:00 1161 查看
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 -i.bak 's/default=1/default=0/' /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、 exec (在容器中开一个shell,容器启动,要添加--privileged=true,不然不能切换root)

docker exec -it jenkins /bin/bash

3、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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  docker