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

[经验分享] Docker入门(二)

[复制链接]

尚未签到

发表于 2018-5-27 13:08:40 | 显示全部楼层 |阅读模式
  一、Docker相关概念
  1.Docker:
  namespace,cgroup:
  解决方案:
  lxc,openvz
  lxc:linux containers
  docker最初就是lxc的封装版本。
  docker engine/docker server:输出一个api,用于接受外部请求
  接受到client请求,借助于lxc虚拟化技术,在lxc上创建一个虚拟机实例。
  docker借助于外部的dockerhub,实现image
  后台docker不再使用lxc,使用libcontainer[centos 7],隔离用户空间的引擎
  在前端使用没有区别
  
  2.容器虚拟化
  例如kvm也需要images,有一个完整的OS
  而容器所需的images,并非完整的OS,只拥有FS,没有内核
  借助于AUFS技术对映像文件进行分层,容器运行一个独立的FS上
  运行nginx需要nginx依赖的库,运行mysql需要依赖mysql的库
  把FS做成一个base image,再做几个专用的image,例如nginx专用的,MySQl专用的
  
    [docker hub]
   /
  /
    [cn1][cn2]...
  [API] [docker  engine   ]
  =======================
  Hypervisor
  =============
  Host OS
  ==============
  【硬件】
  
  3.核心组件;
  docker client:docker的client工具,用户使用docker的接口,docker client与docker daemon通信。并将结果返回给client
  docker daemon:运行在宿主机,Docker的守护进程,用户可通过docker client与其交互;
  image :只读的,基于aufs或者UnionFS叠加在一起,用来创建container
  一个镜像可以运行多个container;镜像文件可以通过Dockerfile创建,也可以从docker hub/registry 下载
  repository
  公共仓库 //提供有base image Docuer hub/registry
  私有仓库 //docker repository
  
  docker container:docker的运行实例,容器是一个隔离环境
  
  另外两个重要组件:
  docker link:各docker之间的通信,openvswtich,netns构建,
  docker volume:容器中的数据的持久化
  
  

  二、安装Docker:
  centos6 ;epel
  centos7: extra
  docker-engine
  
  安装Docker:
  https://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/7/
  yum install docker-engine
  [root@node1 ~]# rpm -ql docker-engine |egrep -v "share"
  /etc/udev/rules.d/80-docker.rules
  /usr/bin/docker
  /usr/bin/docker-containerd
  /usr/bin/docker-containerd-ctr
  /usr/bin/docker-containerd-shim
  /usr/bin/docker-init
  /usr/bin/docker-proxy
  /usr/bin/docker-run
  /usr/bin/dockerd
  /usr/lib/systemd/system/docker.service
  
  docker子命令有很多
  
  systemctl start docker.service
  docker images //查看镜像
  docker search centos
  NameDESCRIPTIONSTARSSTARSOFFICALAUTOMATED
  星自动生成
  darksheer/centos //用户名:镜像名
  docker search busybox
  docker pull busybox //拉取官方镜像 base iamge
  tag : lastest //最新版本,默认最新版本
  
  docker pull hub.mt.com:5000/busybox //执行私有仓库获取image,必须支持ssl。或者禁止使用tls
  
  docker help run //运行
  docker run [OPTIONS] IMAGS [COMMAND] [AEG,...]
  //image应该有一个运行起来后,默认运行的命令。
  -t --tty=false 分配一个默认的伪终端
  -i --interactive=false 打开之后运行在交互式
  
  [root@node1 ~]# docker run -it busybox:latest /bin/sh
  docker ps //查看正在运行的 docker
  需要借助于外 volume 保存创建的数据。
  
  docker help commit //基于当前容器的所有修改,创建一个新的images
  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
  
  三、docker常用命令:
  1.环境信息相关
  info
  version
  2.系统维护相关
  images
  inspect :容器的详细信息
  build:基于dockerfile创建image文件
  commit:基于运行中的容器创建映像文件
  pause:暂停
  unpause
  rm
  rmi //删除映像文件
  run //基于image运行一个容器
  start/stop/restart
  top //资源占用情况
  ps
  kill
  ...
  
  3.日志相关
  events;
  hisgory;
  logs;
          4.Docker hub 相关
  login
  logout
  pull
  push
  search
  
  
  基本操作:
  获取映像:pull
  启动容器:run
  -i,-t
  
  docker run -it centos:latest /bin/bash
  ifconfig //docker0 一个虚拟接口
  一半在虚拟机, 一半在宿主机
  docker kill c98dac012556 //kill 掉容器,容器ID
  docker ps -a //可以查看所有的
  关闭后,默认还是会占用内存,可以在启动的时候
  
  docker run --rm //退出则,rm自动移除容器
  docker rm  c98dac012556 //删除该容器
  
  docker image的创建:
  1.基于dockerfile
  2.基于运行中的容器修改
  //仅仅是打包最上面一层,只有最上面一层是可写的。
  
  实验:commit,保存文件
  [root@node1 ~]#docker run -it centos:latest /bin/bash
  在home中 useradd centos
  [root@node1 ~]# docker commit faecb4def9d5 centos:newuser
  
  [root@node1 ~]# docker images
  有 newuser
  [root@node1 ~]# docker kill faecb4def9d5
  [root@node1 ~]# docker rm faecb4def9d5
  [root@node1 ~]# docker ps -a
  没有之前的容器了
  [root@node1 ~]# docker run -it --rm centos:newuser /bin/bash
  rm用于关闭后,就删除容器
  [root@3f20a3c7f5df /]# id centos
  uid=1000(centos) gid=1000(centos) groups=1000(centos)
  [root@3f20a3c7f5df /]# exit
  
  [root@node1 ~]# docker ps -a //将没有容器运行
  
  

运维网声明 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-481809-1-1.html 上篇帖子: Docker 数据卷 下篇帖子: Docker的“下一跳”在哪里?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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