docker学习记录
2019-07-24 09:19:25来源:博客园 阅读 ()
一、概念
1.什么是容器?
答:容器是一种虚拟化的方案.
2.docker中文网站:www.docker-cn.com.
3.docker的架构图(三要素):
a.镜像(image):就是一个只读的模板,镜像可以创建docker实例,一个镜像可以创建很多容器,镜像就是类,容器就是镜像类的实例。
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,他包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
b.容器(container):利用容器独立运行的一个或一组应用,容器是用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的,保证安全的平台。可以把容器看作是一个建议版的linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一对层的统一视角,唯一区别在于容器的嘴上一层是可读可写的。
c.仓库(Repository)是集中存放镜像文件的场所。仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中包含了多个镜像,每个镜像有不同的标签(tag)。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像共用户下载。国内的公开仓库包括阿里云、网易云等。
4.需要正确理解仓库/镜像/容器的概念。
docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎image镜像文件。只有用过个镜像文件才能生成docker容器。imag文件可以看作容器的模板。docker根据image文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。
*image文件生成的容器实例,本身也是一个文件,成为镜像文件。
*一个容器运行一种福气,当我们需要的时候,就可以通过docker'客户端创建一个对应的运行实例,也就是我们的容器
*至于仓库,就是放了一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候从仓储中拉下来就可以了。
二、docker安装
1.linux系统(ubuntu0、):
a、安装前检查:内核版本:uname -a;检查Device Mapper:ls -l /sys/class/misc/device-mapper;必须满足以上两个条件。
b、安装ubuntu维护的版本:
命令如下:apt-get install docker.io,source /etc/bash_completion.d/docker.io
c、安装docker维护的版本(推荐):
命令如下:第一步检查APT的HTTPS支持 查看/usr/lib/apt/methods/https文件是否存在,如果不U你在使用apt-get update和apt-get install -y apt-transprot-https命令来安装;第二步添加docker的APT仓库,echo deb https://get.docker.com/ubuntu docker main > /etc/apt/source.list.d/docker.list;第三步是添加仓库的key,apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 -- recv-keys36A1D7869245C8950F966E92D8576A8BA88D21E9;第四步安装 apt-get update和apt-get install -y lxc-docker;以上四部比较复杂。
简单安装在博客收藏中
d.添加为root用户使用docker方法:
sudo groupadd docker
gpasswd -a 需要添加的用户名 docker
sudo service docker restart
然后再注销再登陆即可。
f.删除docker
apt-get remove docker-ce
apt autoremove docker-ce
重启docker服务的命令:systemctl restart docker
三、docker命令
1.帮助命令:docker version--查看docker的版本信息 docker info--查看docker的信息 dekcer --help -- docker命令帮助(linux是man +指令)
2.docker镜像命令:
docker images--列出本地主机上的镜像,Repository--表示镜像的仓库源,TAG:镜像标签,Image ID--镜像ID,Created:镜像创建时间,SIze:镜像的大小。
注意:同一仓库源可以有多个TAG,代表这个仓库源的不同个版本,使用repository:TAG定义不同的镜像。
参数选项-a:代表all,列出本地所有的镜像层,包括中间镜像层
-q:只显示当前镜像的ID
--digests:显示镜像的摘要信息
--no-trunc:显示完整的镜像信息
docker search [OPTIONS] 镜像名字:搜索镜像的名字
OPTIONS说明:--no-trunc显示完整的镜像描述 -s 数字 列出收藏数(STARS)不小于指定值的镜像 --automated只列出automated build类型的镜像。
docker pull 某个镜像名字:下载镜像/docker pull 镜像名字[:TAG]例如:docker pull 镜像名:3.2为拉取镜像名的版本号,默认为lastest最新版本
docker rmi某个镜像名字ID:删除镜像 例如docker rmi -f 镜像名
一次删除多个镜像:docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部镜像名:docker rmi -f $(dokcer images -qa)
3.容器命令:
a.有镜像才能创建容器,需要先下载一个镜像
b.新建并启动容器
docker run [options] image [command] [ARG....]
options(常用)说明:有些是一个减号,有些是两个减号
--name="容器新名字":为容器指定一个名称
-d:后台运行容器,并返回群容器ID,就是启动守护式容器
-i:以交互模式运行容器。通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
-P:随机端口映射
-p:指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
列出当前所有运行的docker:
命令:docker ps [options]
options:
-a:列出当前所有正在运行的容器+历史上运行过的
-l:显示最近创建的容器。
-n:显示最近n个创建的容器。
-q:静默模式,是显示容器编号。
--no-trunc:不截断输出
退出容器:1.exit--容器停止退出;2.ctr+P+Q--容器不停止退出
启动容器:docker start 容器id或者容器名
重启容器:docker restart 容器id或者容器名
停止容器:docker stop容器id或者容器名
强制停止容器:docker kill容器id或者容器名
删除已经停止的容器:docker rm 容器id或者容器名,一次性删除多个容器:docker rm -f$(docker ps -a -q);docker ps -a -q | xargs docker rm
重要:
1.启动守护式容器----------docker run -d 容器名,如果容器没有任何被执行,则一启动就会自杀
查看容器日志:docker logs -f -t --tail 容器ID,-t:是加入时间戳,-f:跟随最近的日志打印,--tial数字显示最后多少条
查看容器内运行的进程:docker top 容器ID
查看容器内部细节:docker inspect 容器ID(以josn字符串的形式查看容器的信息)
进入正在运行的容器并以命令行交互:a.docker exec -it 容器ID /bash/shell;b.重新进入docker attach 容器ID;以上两个区别attach直接进入容器启动命令的终端,不会启动新的进程;exec是在容器中打开新的终端,并且可以启动新的进程。
从容器内拷贝文件到主机上:docker cp 容器ID:容器内路径 目的主机路径
四、Docker镜像
1、镜像是什么?
Unions(联合文件系统)、Docker镜像加载原理、分层的镜像
联合文件系统:是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特性:一次同时加载多个年系统,但从外面看起来,只能看到一个文件系统,连个加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。
特点:docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫做“镜像层”。
Docker镜像commit操作补充:
docker commit提交容器副本使之成为一个新的镜像;docker commit -m=“提交的描述信息”-a=“作者”容器ID要创建的目标镜像名:[标签名]
五、容器数据卷
是什么:主要干数据共享和数据持久化的工作
能干什么:容器持久化+容器间继承+数据共享
特点:
1、数据卷可在容器之间共享或重用数据
2、卷中的更改可以直接生效
3、数据卷中的更改不会包含在镜像的更新中
4、数据卷的生命周期一直持续到没有容器使用它为止
数据卷:
1、容器内添加:
直接命令添加:
a.命令:docker run -it -v /宿主机绝对路径目录:/容器内目录: 镜像名。
b.查看数据挂载是否成功:docker inspect 容器ID
c.容器和宿主机之间数据共享
d.容器停止退出后,主机修改后数据完全同步,需要启动之前启动的container
f.命令(带权限):docker run -it -v /宿主机绝对路径目录:/容器内目录 : ro 镜像名,ro为readonly的意思,只读
2、dockerfile添加
a.根目录下新建mydocker文件夹并进入
b.可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷
c.Dokcerfile的构建(在mydocker文件夹里面构建Dockerfile文件,编写一个可执行的shell脚本)
d.build后生成镜像(可执行的镜像)-----获得一个新镜像zzyy/centos
命令:docker build -f(f是file的意思)/mydocker/dockerfile2(DOckerfile在哪) -t zzyy(命名空间)/cnetos(镜像名字) .
e.run容器
f.通过上述步骤,容器内的卷目录地址已经知道
g.主机对应默认地址
原文链接:https://www.cnblogs.com/yoshar511462/p/11169504.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Python学习日记(十) 生成器和迭代器 2019-08-13
- python学习-53 正则表达式 2019-08-13
- python爬虫学习之爬取超清唯美壁纸 2019-08-13
- python爬虫学习之用Python抢火车票的简单小程序 2019-08-13
- Python学习日记(九) 装饰器函数 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash