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

[经验分享] docker学习02

[复制链接]

尚未签到

发表于 2019-2-20 07:36:02 | 显示全部楼层 |阅读模式
I. dcoker基本概念



  • 镜像(image)
      镜像,从本质上来讲,镜像相当于一个文件系统。镜像是只读的,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包好了一些为运行时准备的一些配置参数,如匿名卷、环境变量、用户等。镜像不包含任何动态数据,其内容在构建之后也不会被改变。一个镜像可以运行多个container,镜像可以通过dockerfile创建,也可以从dicker hub/registory上下载。


  • 容器(container)
      容器,容器的实质是进程,但是是运行在属于自己的独立的命名空间,因此容器可以拥有自己的root文件系统,自己的网络配置,自己的进程空间,甚至自己的用户id空间。说白了就是运行在一个隔离的环境里。


  • 仓库(repository)
      仓库,顾名思义,就是一个用来存储用的空间。镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果要在其他服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,docker registry就是这样的服务
      镜像就相当于打包好的版本,镜像启动之后运行在容器中,仓库就是存储镜像的地方


  • 分层存储
      因为镜像包含操作系统完整的root文件系统,其体积往往是庞大的,因此在docker设计时,就充分利用Union FS的技术,将其设计为 分层存储 的架构。严格来讲,镜像并非是像一个ISO那样的打包文件,镜像只是一个虚拟的概念,其实际体现并非由一个文件组成,而是由一组文件系统组成,或者说,是由对曾文件系统联合组成。
      镜像构建时,会一层层构建,前一层作为后一层的基础,每一层构建完就不会再发生改变,后一层上的改变只发生在自己这一层上。


II. Docker的C/S模式
  Docker采用了C/S架构,包括客户端和服务端。Docker守护进程(Daemon)作为服务端接受来自客户端的请求,并处理这些请求(创建、运行、分发容器)

  Docker守护进程一般在宿主机主机后台运行,等待接受来自客户端的消息,Docker客户端则为用户提供一系列可执行命令,用户用这些命令实现跟Docker 守护京城交互:

Docker也为我们提供了Remote API来操作Docker的守护进程,也意味着我们可以通过自己的进程来控制Docker的运行。客户端和服务端既可以运行在一个机器上,也可通过socket或RESTfuk API来进行通信:

  至于Docker的客户端与守护进程之间的通信,其连接方式为socket连接,主要有三种连接方式:


  • unix:///var/run/docker.sock
  • tcp://host:ip
  • fd://socketfd
    完整的Docker的C/S连接方式的本质可以一般表示为如下:


III.使用Docker

容器操作

#启动一个容器
docker run -it nginx /bin/bash
#查看容器
docker ps  [-a] [-l]
-a  all 列出所有容器
-l   latest 列出最近的容器
#查看指定容器
docker inspect name | id
name指代具体的容器名称,id则是容器的唯一标识
#启停容器
docker start|stop name | id
#删除停止的容器
docker  rm name| id
#进入正在运行的容器
#docker attach name | id   退出时要使用Ctrl+P Ctrl+Q
docker exec -it name | id bash   退出时可以使用exit
#启动后台运行的容器
docker -d ...  
#查看容器日志
docker logs [-f] [-t] [–tail] name|id
-f –follows=true | false,默认是false,显示更新
-t –timestamps=true | false,默认是false,显示时间戳
–tail=“all” | 行数,显示最新行数的日志
#查看容器内进程
docker top name|id
镜像操作

#查询镜像
#docker search name [options]
–automated=false,仅显示自动化构建的镜像
–no-trunc=false,不以截断的方式输出
–filter,添加过滤条件
#拉取镜像
docker pull [OPTIONS] NAME [:TAG]
-a,–all-tags=false,下载所有的镜像(包含所有TAG)
#推送镜像
docker push  [OPTIONS] NAME [:TAG]
#列出镜像
docker images [OPTIONS] [REPOSITORY]
-a,–all=false,显示所有镜像
-f,–filter=[],显示时过滤条件
–no-trunc=false,指定不使用截断的形式显示数据
-q,–quiet=false,只显示镜像的唯一id
#查看镜像
docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE]
-f,–format=“”
#构建镜像
构建docker镜像,可以保存对容器的修改,并且再次使用。构建镜像提供了自定义镜像的能力,以软件的形式打包并分发服务及其运行环境。Docker中提供了两种方式来构建镜像:
-  通过容器构建:docker commit
-  通过Dockerfile: docker build
1. 使用commit命令构建镜像
命令:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
参数:-a,–author=“”,指定镜像的作者信息
-m,–message=“”,提交信息
-p,–pause=true,commit时是否暂停容器
    ccs-iMac:~ cc$ docker commit -a 'hxl' -m 'test commit an image'  reverent_allen web
sha256:464ca63bbb182e5d7fd2809da1dcb6942484ece7b89e242ecaabdb9c8d5552
2.使用Dockerfile文件构建镜像
Docker允许我们利用一个类似配置文件的形式来进行构建自定义镜像,在文件中可以指定原始的镜像,自定义镜像的维护人信息,对原始镜像采取的操作以及暴露的端口等信息。比如:
Sample Dockerfile
FROM ubuntu:16.04
MAINTAINER wgp "Kingdompin@163.com"
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80
命令:docker build [OPTIONS] DockerFile_PATH | URL | -
参数:–force-rm=false
–no-cache=false
–pull=false
-q,quite=false,构建时不输出信息
–rm=true
-t,tag=“”,指定输出的镜像名称信息
#镜像迁移
我们制作好镜像,一般要分享给别人。Docker提供了几种迁移的方式,但是常用的一般有两种:
1.使用registory 来分享,可选Docker HUb 和私有仓库
2.docker load 和docker save 来打包分享
仓库操作
  仓库一般就是Dokcer Hub 和私有自建registry 至于如何自建私有仓库,本篇就不叙述了。




运维网声明 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-674586-1-1.html 上篇帖子: 动手搭建docker并在docker容器中建spark集群 下篇帖子: 在Mac电脑上卸载docker的toolbox
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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