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的主要内容,如果未能解决你的问题,请参考以下文章

markdown docker-compose片段

sh Docker片段

《Docker 源码分析》全球首发啦!

docker 部署 coredns(内部域名解析)

docker 部署 coredns(内部域名解析)

将 Docker 容器限制为单个 cpu 核心