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
nsenter -t 9724 -m -u -i -n -p -r -w #进入容器
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 [email protected]容器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 容器中的数据卷
更多参考:
https://docs.docker.com/installation/#installation