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

[经验分享] Docker 入门

[复制链接]

尚未签到

发表于 2017-12-6 07:23:19 | 显示全部楼层 |阅读模式
    这些天了解了现在流行的容器技术Docker,主要是参考这个系列的博客 http://www.cnblogs.com/CloudMan6/tag/Docker/ 还有Docker中文网 http://www.docker.org.cn
    本篇博客主要讲一些命令的操作,至于原理性的东西就不多讲了,这些在网上都可以找到,本篇博客主要是记录一些命令的操作,用于以后用到可以方便的查到。命令是用到的时候再查的,不过原理性的概念还是要了解的,docker这个东西使用的时候不难,没有多少要学的。重要是了解Docker概念后,根据实际项目在进行配置即可。现在了解只是为了以后快速使用而已。
  1. 安装
    系统使用的是Debian 8.8,先配置Docker的apt源。



apt-get install apt-transport-https ca-certificates curl software-properties-common

  增加Docker 官方的GPG



curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

    注意后面的 -  号, 这里使用ubuntu的gpg
    将Docker的源添加到 /etc/apt/sources.list



add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable”

   安装Docker



apt-get update
apt-get install docker-ce

   查看是否安装成功



service docker status
docker version

DSC0000.png

DSC0001.png

  2. 加速
    由于Docker Hub的服务器是在国外,下载镜像(image)时会比较慢,有时候网络断开还要重新下载,好在Docker提供私服功能,国内就有好多家公司提供了这样的服务。这里使用 daocloud.io 提供的服务。首先在daocloud.io免费注册一个用户。然后在用户管理界面哪里有个加速器( https://www.daocloud.io/mirror#accelerator-doc )
     DSC0002.png
    运行命令后,重启Docker即可。



curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://71***3.m.daocloud.io
service docker restart
  3. 运行第一个容器Docker



docker run -d -p 80:80 httpd #运行后自动从服务器上下载image,然后以后台方式运行容器。
docker images  #进行查看
docker ps #查看运行情况
    然后访问本地的Web服务器
DSC0003.png

    Docker 架构图
DSC0004.png

  4. 基本操作



docker run -it centos  #下载并以命令行运行centos

  进入后,可以在里面进行操作,基本的操作跟在一台Linux主机上操作是一样的,没有什么区别。如果在容器(Container)里面退出的话,对应的容器也就关闭,假设进入后,还没有退出来。新建一个控制台,然后在里面输入docker ps 就可以查看当前真正运行的容器实例。在容器里面的所有操作,都是暂时的,如果操作后,退出容器,那么是不进行保存的。如果想保存,那么要在另外的控制台用命令保存当前运行的容器,生成一个镜像(image).至于原理性的东西,请参考具体的文章。
    在新的控制台中输入 docker ps 查看当前运行的容器,记住运行的Container ID,然后通过下面命令对当前运行的容器生成一个快照镜像(Image)



docker commit 17022396134b centos-new  # docker commit ContainerID new-ContainerName

  这样就生成一个镜像了。由于容器是分层的,这里保存会很快。然后通过 docker images 可以查看刚才保存的镜像。
  5. 通过Dockerfile构建镜像
    通过Dockerfile方式构建镜像,底层通过解析Dockerfile文件一条一条命令进行docker commit 一层一层构建新镜像。Docker的分层架构,可以具体去了解一下,设计的很好。
    创建一个简单的Dockerfile文件
    然后在Dockerfile 文件中输入以下内容



FROM ubuntu
RUN sed -i ‘s/archive.ubuntu/mirrors.aliyun/g’ /etc/apt/sources.list #这里用阿里云(网易163)的开源镜像服务器,会快一点。
RUN apt-get update && apt-get install -y vim
COPY testfile /

  命令行输入命令



docker build -t ubuntu-with-vi-dockerfile .
    注意后面的点. 表示从当前目录查找Dockerfile文本文件,然后镜像构建。
    然后可以通过 docker images 查看,可以通过 docker history ubuntu-with-vi-dockerfile 查看当前镜像的历史修改信息。
    关于Dockerfile语法还比较多,还有很多高级操作,不过我觉得,这个在实际项目中有需要再去查,然后使用即可,这里就不展开说明。
  6. 建立私服
    这个还是蛮重要的一部分,大部分实际项目都会通过这种方式进行内网部署。虽然现在很多云服务,大部分也通过这种方式进行部署,但是通过网络镜像云部署的,对于个人项目和晓欣项目比较多。稍微复杂一点的,一般公司都会自己组建服务器,即使使用云主机,也是会部署在云主机内网里,不大会将镜像放到外网。
    下面就介绍如何搭建私服。
    首先下载Docker Hub上官方镜像registry,这个也是Docker image ,是官方提供的。



docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:latest

  由于使用-d参数,所以是后台运行。



docker ps

DSC0005.png

    可以看到私服就这样启动了,是不是很容易,这就是Docker容器化的优势。
    我们对刚才下载的httpd 复制一份,命名一个新tag。



docker tag httpd:latest localhost-httpd #错误,如果要保存在本地,需要填写对于的域名
docker tag httpd:latest localhost:5000/myuser/httpd

DSC0006.png

     这样就复制了一个,可以通过push 命令推送到本地仓库。
    如果省略域名就会默认推送的docker.io上了。(docker push localhost-httpd:latest)



docker push localhost:5000/myuser/httpd

   DSC0007.png
    这样就表示推送到本地仓库了。可以在本地的 /myregistry 查看
      DSC0008.png
    新开了一个虚拟机,然后通过远程下载对应的镜像。
     DSC0009.png
    但是发现好像不能用http,只能用https,我们需要修改一些配置。现在的最新版本修改 /etc/docker/daemon.json 这个配置文件.打开后可以看到里面有我们之前写入的daocloud.io这个加速用的网址。我们在其后面加上如下配置:
    { “insecure-registries” : [“192.168.56.150”] } 服务器端和客户端都要进行配置。配置后如下显示
     DSC00010.png
    然后 service docker restart # 重启Docker 要注意看registry 是否还启动着,如果没有,要重新启动。因为重启Docker ,Docker会stop 正在运行的容器,可以试着docker start ID
     DSC00011.png
  7. 多说两句
    其他高级使用,如使用Docker 自带的对硬件的限制功能。使用Docker-Compose来管理Docker集群等高级功能。
    参加工作后,现在没有很多连续的时间,很难像以前那样做一个系列的博客文章。只能利用有空的时间,看一些比较前沿的计算,然后简单的了解一下而已,并不能很好的深入,现在的想法是能学点就多学点,多了解一些,等实际工作中有机会用到的话,再进行深入理解。平时没事,就看看,了解了解。
  
  参考资料:
  http://www.docker.org.cn/book/docker/what-is-docker-16.html
  http://www.cnblogs.com/CloudMan6/tag/Docker/
  http://www.cnblogs.com/zuoxiaobing/p/6259029.html
  http://blog.csdn.net/candcplusplus/article/details/53728507
  本文地址: http://www.cnblogs.com/wunaozai/p/6936787.html

运维网声明 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-421035-1-1.html 上篇帖子: CentOS7 启动docker.service失败(code=exited, status=1/FAILURE) 下篇帖子: docker 安装sentry
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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