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) |