docker
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker相关的知识,希望对你有一定的参考价值。
docker 容器虚拟化,2013年出现,Redhat在6.5版本开始支持docker(64位)使用go语言开发,基于Apache2.0协议,开源软件,项目代码在github维护
docker启动快,资源利用率高,易迁移
镜像:只读模板.通过镜像完成各种应用的部署
容器:类似于操作系统,相互隔离
仓库:存放镜像的场所.最大公有仓库是Docker hub(hub.docker.com)国内最大公开仓库(dockerpool.com)
docker安装
centos6.5及以上
yum install -y epel-release //epel源
yum install -y docker-io //安装docker
/etc/init.d/docker start //启动docker
centos7
yum install -y docker
systemctl start docker //启动docker
docker 镜像管理
docker pull centos //从docker.com获取docker镜像
docker images //查看本地docker镜像
docker tag centos fanfan //把centos重命名并保存为fanfan
docker search name //从仓库中搜索name镜像
docker run -i -t -d centos /bin/bash //在容器中开启镜像
-i表示让容器的标准输入打开 -t表示分配一个伪终端 -d表示后台
docker ps //查看正在运行的容器 -a看所有
docker rmi name //删除镜像
docker commit -m "change sth" -a "sb" ID newname
把sb修改后的容器sth命名为newname保存为新镜像 -m改动信息 -a作者信息 ID 运行的容器的id
在openvz下载镜像模板 : openvz.org/download/template/precreated
cat 包名|docker import - 镜像名字 //本地包做为镜像
docker save -o 包名 ID //镜像导出到本地
docker load --input 包名 /docker load < 包名 //用本地文件灰度本地镜像
docker push 包名 //把镜像传到dockerhub官网 需要账户
docker 容器管理
docker create -it centos //创建容器,没启动
docker start container_id //启动容器 stop restart
docker run = docker create&&start
docker run (--name name)-it centos bash //进入一个虚拟终端 -d 后台启动(设置容器名字)
docker run --rm -it centos bash -c "sleep 30" //--rm 运行完程序自动删除容器.不能-d
docker logs container_id //获取容器运行历史信息
docker attach container_id //进入后台的容器(exit容器退出)
docker exec -it container_id bash //进入后台的容器(exit容器继续后台运行)
docker rm container_id //删除容器 如果正在运行,加-f
docker export container_id > file.tar //导出容器,可迁移至其他机器
cat file.tar |docker import - fan_test //生成镜像
docker 仓库管理(创建私有仓库)
docker pull registry //下载registry镜像
docker run -d -p 5000:5000 registry //以registry镜像启动容器,监听5000端口
docker tag fan_test 172.7.15.106:5000/centos //标记下tag 需要带有私有仓库的ip:port
docker push 172.7.15.106:5000/centos //上传172.7.15.106:5000/centos到私有库
curl http://172.7.15.106:5000/v1/search //查看私有库文件
docker 数据管理
docker run -itd -v /data/:/data1/ centos bash
//-v 启动同时挂载目录 : 左边为本机目录 右边为容器目录(在主机中写文件相当于直接写在本地主机中)
docker run -itd --volumes-from 容器名字 镜像名字 bash (容器名字在docker 平时 最右)
//启动时挂载与 容器名字 一样的挂载点 ,相当于新的容器使用旧的容器的数据
创建一个数据卷容器,专门用来共享数据 (此处/data/目录在容器中,只是用来共享数据)
docker run -itd -v /data/ --name shujugongxiang centos bash
docker run -itd --volumes-from shujugongxiang 镜像名字 bash
//此容器/data/数据与数据卷容器内容共享,也可以创建很多镜像与此共享.不要随意停止删除
docker run -itd --volumes-from shujugongxiang -v /vol_data_bak/:/backup centos bash
//创建容器的时候直接备份数据
数据恢复
docker run -itd -v /data/ --name shuju2 centos bash
docker run --volumes-from shuju2 -v /vol_data_bak/:/backup/ centos tar xvf /backup/data.tar
思路:新建新的数据卷容器; 新建容器并挂载该数据卷容器,把tar解包
docker 网络管理
host模式 ,使用docker run 时使用 --net=host指定 docker使用的网络实际上和宿主机一样,在容器里看到网卡ip是宿主机ip docker run -it --net=host centos_with_wget /bin/bash container模式,使用--net=container:container_ID 多个容器使用公用的ip 需先开一个容器,开第二个容器时加上--net项 docker run -it centos_with_wget /bin/bash docker run -it --net=container:上个ID centos_with_wget bash none模式 使用--net=none指定 不会配置任何网络 bridge模式,使用--net=bridge指定 默认模式 各自分配一个ip,在同一网段下(不和主机同一网段), 可相互通信类似VMware 的nat模式
以上是关于docker的主要内容,如果未能解决你的问题,请参考以下文章