设为首页 收藏本站
查看: 598|回复: 0

[经验分享] docker一: 镜像与容器管理

[复制链接]

尚未签到

发表于 2018-5-27 13:25:04 | 显示全部楼层 |阅读模式
  Docker的优势:
  1、启动非常快,秒级实现。
  2、资源利用率高,在机器中以进程的方式存在,一台机器可以跑上百个docker容器。
  3、创建和配置后可以在任意地方运行docker,只需将其上传到docker仓库,用到时拉下来就可以
  4、易迁移,平台依赖性不强。
  

  Docker的主要概念:
  1、镜像:只读模板,类似于安装系统用到的iso文件,对于镜像我们可以自定义,比如在一台机器上安装好lnmp环境,然后打包成为一个镜像,那么后期只需要从仓库中把这个镜像拉下来就可以直接使用lnmp环境了,非常方便。
  2、容器:镜像类似于操作系统,而容器类似于虚拟机本身。可以进行启动、开始、停止、删除等等操作,容器之间相互隔离。
  3、仓库:存放镜像的一个场所,仓库分为共有仓库和私有仓库。公开的最大仓库为Docker Hub。
  

  Docker安装:

  CentOS6:yum install -y epel-release ; yum install -y docker-io
  CentOS7:yum install -y docker
  

  Docker镜像管理:

  docker pull centos  //从DockerHub拉取centos的镜像

  docker images   //查看本地镜像
  docker tag centos raffaele:1   //给本地存在的镜像打tag,并且还可以指定版本
  docker search centos   //搜索仓库中的镜像
  docker run -i -t centos /bin/bash  //指定下载到的镜像开启容器,-i表示让容器的标准输入打开,-t表示分配一个伪终端
  docker ps -a  //查看所有容器
  docker rmi centos:tag  //指定版本删除容器,也可以指定ID来删除,不推荐
  docker exec -i -t 已创建的容器名  //进入到已经创建过的容器中
  

  Docker镜像使用容器生成新的镜像:
  运行docker run命令之后,我们进入到容器中,做了一些变更之后,可以针对这个改过的容器创建一个新的镜像,使用以下命令可以跟据原来的镜像创建一个新的镜像并提交到本地仓库中。
  docker commit -m "install net-tools" -a "raffaele" 461b3a566657 centos_with_nettools
  -m表示注释,-a指定作者,后面紧接着 原镜像的ID 和 新的镜像名,还可以指定版本号,默认为last。
  

  Docker基于本地模板导入创建镜像:
  1、模块获取,可以直接在网上下载一个模块https://openvz.org/Download/template/precreated
  2、我们下载好一个模块之后,可以使用命令将其导入为镜像:
  cat debian-7.0-x86-minimal.tar.gz |docker import - debian-7-x86_64
  3、将现有镜像导出为一个文件:
  docker save -o raffaele-debian.tar +现有镜像的名字或者ID
  4、用文件恢复本地镜像:
  docker load --input raffaele-debian.tar 或者 docker load < raffaele-debian.tar
  5、将自己的镜像上传到dockerhub上:
  docker push image_name
  

  Docker容器管理:
  docker create -i -t +镜像名  //创建一个容器,但是该容器并没有启动
  docker start +容器ID  //启动已经停止的容器
  docker run -d  //让容器在后台运行
  docker run -d +镜像名 bash -c "while:;do echo "raffaele";sleep 1;done"
  docker run --name web -i -t -d +镜像名 bash  //--name给容器指定名字
  docker run --rm -i -t +镜像名 bash -c "sleep 30"  //--rm让容器退出后直接删除,不能和-d一起 使用,在这里命令执行完容器就会退出。
  docker rm +镜像ID  //删除镜像
  docker rm -f +镜像ID  //强制删除正在运行的容器
  docker logs +容器ID //获取容器的运行历史信息
  docker attach +容器ID  //附着到已经运行的容器中,但是退出后容器随之停止
  docker exec -i -t +镜像ID bash  //进入已经运行的容器中,退出后容器依然运行
  

  docker export +容器ID > file.tar  //导出容器,可以将容器迁移到其它机器上
  cat file.tar |docker import - +自定义镜像ID  //可以将其它机器的容器文件在本台机器上重新导出为镜像
  

  Docker仓库管理:

  docker pull registry  //下载registry镜像,registry为docker官方提供的镜像,我们可以用它来创建本地的docker私有仓库
  docker run -d -p 5000:5000 registry  //以registry镜像启动容器,监听5000端口
  curl localhost:5000  //可以访问
  docker tag +本地镜像名 192.168.145.132(宿主机ip):5000/centos(自定义tag名)  //标记tag,必须带私有仓库的ip:port
  docker push +本地镜像名  //将指定的镜像上传到本地镜像仓库中
  

  但是注意,这里会出错,因为docker默认是与https通信的,我们只有http,因此,修改启动脚本:
  vim /etc/init.d/docker

  将$exec -d $other_args 改为$exec -d --insecure-registry 192.168.145.132:5000 $other_args
  之后重启docker:/etc/init.d/docker restart
  再次启动docker容器:docker start registry_container_id
  curl http://192.168.145.132:5000/v1/search  //查看私有仓库里面的所有镜像
  

  

  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481821-1-1.html 上篇帖子: Windows Docker镜像构建之Oracle客户端 下篇帖子: 容器如何访问外部世界?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表