docker基础入门之二
一、docker文件系统:
linuxFS包括boot file system 和 root file system
boot file system (bootfs),包含bootloader和kernel,在系统启动完成后,kernel滞留内存,bootfs解除挂载;
root file system(rootfs),包括类似/bin,/usr, /lib等目录,这些和kernel无关,这也是不同linux发行版本的差异所在;
Linux FS Linux FS in Docker
- 传统Linux启动时,将rootfs设置为readonly并检查完整性,然后设置成read-write
- Docker在启动container的时候,也是把rootfs设置为readonly,然后通过aufs把一个read-write的文件系统挂载到rootfs之上,并且把下层文件系统设置成readonly,这样构建一个完整的操作系统;
二、Layer FS
- 对于每层readonly的FS,在docker中成为image
- 对于顶上read-write的FS,成为container
- 对于readonly中内容的修改,采用的是COW的技术,把文件复制到read-write层并修改,实际用户看到的是当前container层中的文件,image中的文件是不受影响的;
Image:
-
- 除了base image之外,每一层image都有一个parent image
- 没有parent image的镜像叫base image
- 基于cow的技术,image部分是不会被修改的,因此container可以共享image的FS,提高了存储效率;
storage dirver
-
- 除了默认的aufs之外,docker通过对于storage的抽象,可以支持一些其他的storage driver; 例如:vfs, devicemapper, btrfs
- 修改docker启动时候的参数设置,增加——storage-driver = {storage plugin}在配置文件中;
docker hub:
docker官方提供的用来共享image的平台;
镜像命名和版本管理:
-
- base image是docker官方提供的基础镜像;
- 普通镜像的命名规范{namespace}/{repository name}:{tag}
- namespace是docker hub的用户名,实际是起namespace作用
- repository,类似于github的项目,例如ubuntu, mysql等;
- tag,表示版本信息,例如cp/mysql:5.5, tag是可选的,默认值是latest
查找Image: docker search {repository name} #默认是在docker hub上进心搜索
获取Image: docker pull {image name} #如果不指定tag的话,会把该image的所有tags都会download下来;
上传Image:
1、docker login #登录到docker hub中
2、把container通过docker commit的命令转化成一个Image
3、通过docker tag来命名新生成的Image
4、docker push到docker hub中;
三、基本操作:
运行container:
-
- 运行一个container的本事就是开启一个具有独立namespace的进程
- docker 通过run的命令来启动一个container
- 运行一个container必须要指定一个image作为初始化的文件系统;
sudo docker run [OPTIONS] IMAGE[:TAG] [COMMANG][ARG....]
Image:
对于不存在的Image,Docker会自动会Registry里面下载对于的Image,然后再运行container
COMMAND:
command标志的是container中实际运行的首进程;
如果Image里面包含了CMD的指令,那么在启动container的时候,不需要指定command,否则会使用指向command来覆盖Image的cmd
前台运行or后台运行:
-
- 默认的Container是在前台运行的,会绑定command进程的STDIN、STDOUT、STDERR到console上;
- 可以通过-d的选项让container运行在后台;
- 如果是前台运行,也可以通过指定-a {STDOUT、STDIN、STDERR}选择需要绑定的IO
- 前后台切换;通过attach命令可以重新attache一个后台运行的container
在后台运行的情况下,run命令会返回一下UUID,唯一标识container
可以通过docker ps来查看container的UUID和运行信息
可以通过指定——name的方式来指定container的名字,名字必须唯一
inspect:
通过docker inspect {Container ID}来获取container的更多的信息,包括网络、volume,实际在HOST上的进程ID等信息;
Log:
通过Logs命令可以看到Container中的Command所指向进程的STDOUT、STDERR数据;
环境变量:
通过-e参数,可以在运行container的时候添加环境变量;
Network架构:
-
- 在Host主机上的一个veth{id}的虚拟网卡和一个container里面的eth0网卡一一映射
- Host上的bridge负责把数据流在不同的veth间转发,实现网络的IO
- bridge(docker0)使用RFC1918私有网络,给每一个container分配ip
网络设置:
-
- 通过——net参数来修改container的网络设置,默认是bridge的方式; --net host
- none表示关闭container的网络连接
- host表示使用主机的网络栈,这个时候host主机不会创建veth虚拟网卡映射
- container:{name|id}, 使用另外一个container的网络栈
- 通过——net参数来修改container的网络设置,默认是bridge的方式; --net host
端口映射:
Docker通过采用端口映射的方式,允许把内部container的服务端口暴露到外部;
使用-p参数可以指定需要暴露的container的内部端口,在不指定特定的Host的对应端口的情况下,docker会自动分配(49000-49900)在一个Host上的端口与其映射;
使用-p参数,表示暴露所有在Image中通过expose指定的端口;
volume绑定:
通过-v参数,可以把Host上的一个目录绑定到container中,允许container对其进行读写;
docker run -v /home/test:/vagrant -t ubuntu ls -al /vagrant
容器间通信:
通过link参数,把container的端口信息暴露到另一个container中,实现container之间的通信;
docker run --link redis:db -t ubuntu sh -c "export"

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
移动应用图片的福音--七牛云存储
本篇来介绍移动应用图片存储的第三方,官方网址:http://www.qiniu.com/ 首先,在七牛上要注册开发者账号,需要认证身份证信息。认证完之后,我们来开始进行安卓端的开发。 一、准备信息 进行图片的上传与下载,我们需要准备几个信息,首先是空间名,然后是域名,再者是密钥对。如下图: 二、安卓端图片上传 首先我们需要导入JAR包,网址:http://developer.qiniu.com/docs/v6/sdk/android-sdk.html 现在来编写上传相关的程序: private volatile boolean isCancelled = false;// 取消标志 static String AccessKey =七牛上的公钥; static String SecretKey =七牛上的私钥; UploadManager uploadManager; /** *uploadManager有两种初始化方法,一种是默认配置,一种的自动逸配置 */ // 默认配置 uploadManager=new UploadManager(); //自定义配置 Configurat...
- 下一篇
Ubuntu Docker 安装和配置 GitLab CI 持续集成
相关文章: Ubuntu Docker 简单安装 GitLab 劈荆斩棘:Gitlab 部署 CI 持续集成 目的:在 Ubuntu 服务器上,使用 Docker 安装和配置 GitLab Runner,搭建 GitLab CI 持续集成环境。 服务器版本 Ubuntu 16.04 LTS。 安装命令: $ docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest 参数说明: --d: 设置容器后台运行 --name:容器名称 --restart always:每次启动容器就重启 gitlab-runner --v: 共享目录挂载(如果是 Mac OSX 系统,需要把/srv改为/Users/Shared) 安装好之后,可以使用docker ps查看容器是否在运行,接着我们进入容器: $ d...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7设置SWAP分区,小内存服务器的救世主