docker学习记录

2019-07-24 09:19:25来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

一、概念

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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:20190710-汉诺塔算法

下一篇:python3.7 pip升级或安装,拒绝访问 解决方案