docker
2016-06-28 19:07
369 查看
docker 容器虚拟化,2013年出现,Redhat在6.5版本开始支持docker(64位)使用go语言开发,基于Apache2.0协议,开源软件,项目代码在github维护docker启动快,资源利用率高,易迁移
镜像:只读模板.通过镜像完成各种应用的部署容器:类似于操作系统,相互隔离仓库:存放镜像的场所.最大公有仓库是Docker hub(hub.docker.com)国内最大公开仓库(dockerpool.com)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 //启动dockerdocker 镜像管理
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 配置桥接网络docker 外部访问容器服务
思路:对于有服务的容器,启动时映射端口,即可访问 docker run -itd -p 5123:80 centos_httpd:fan bash curl 172.17.42.1:5123/1.html //访问时添加5123端口,即映射到容器80端口dockerfile创建镜像
FROM //指定基于哪个基础镜像 FROM <image>(:<tag>) MAINTAINER //指定作者信息 MAINTAINER <name> <@qq.com0> RUN //镜像操作命令 RUN <command> / RUN["executable","param1","param2"] 如 RUN yum install httpd / RUN ["/bin/bash","-c","echo hello"] CMD //指定容器启动时启动服务用到的命令,只能用一次,最后一个生效 EXPOSE //指定需要映射出去的端口. EXPOSE 22 80 8443 等 ENV //环境变量 ENV PATH /usr/local/mysql/bin:$PATH 添加 ADD //远程下载包或者把本地文件cp到容器目录里 COPY //不能远程url ENTRYPOINT //类似CMD,最后一条生效.CMD能被docker run 覆盖,ENTRYPOINT不能. ENTRYPOINT先于CMD执行. VOLUME ["/daat"] //创建一个可以从本机或其他容器挂载的挂载点 USER name //指定运行容器的用户 WOEKDIR /path/to/workdir //为后续的RUN CMD ENTRYPOINT指定工作目录
相关文章推荐
- centos6.5上安装docker
- docker容器的网络信息查看
- openstack kilo-with-dokcer
- 在windows下的安装Docker的教程
- 8个你可能不知道的Docker知识
- 在Docker中自动化部署Ruby on Rails的教程
- 搭建基于Docker的PHP开发环境的详细教程
- Docker容器的Tengine实践
- 利用OpenVSwitch在多台主机上部署Docker的教程
- ubuntu14.04+docker的安装及使用
- Docker 清理命令集锦
- 再Docker中架设完整的WordPress站点全攻略
- 基于 Docker 开发 NodeJS 应用
- 使用Docker来加速构建Android应用的基本部署思路解析
- 在Docker上部署Python的Flask框架的教程
- 在Docker上开始部署Python应用的教程
- 详解在Python和IPython中使用Docker
- python脚本监控docker容器
- 使用IPython来操作Docker容器的入门指引
- Alpine Linux Repository本地镜像制作