Docker容器一

容器的安装,镜像的管理,镜像的制作

Docker:

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。由于使用LXC来创建和管理虚拟机不方便。
在 LXC 的基础上 Docker 进行了进一步的封装,就是用户创建容器的一个工具。让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。

Docker容器的六种模式空间:名称空间;用户空间;文件系统空间;网络空间;进程id的空间;传输空间

Docker 容器只是为了运行单个应用程序的。(管理方便高效)

LXC: LinuX Container  (Linux容器)

chroot,根切换;
namespaces:名称空间
CGroups:控制组

简单使用:
lxc-checkconfig:
检查系统环境是否满足容器使用要求;
lxc-create:创建lxc容器;
lxc-create -n NAME -t TEMPLATE_NAME
lxc-start:启动容器;
lxc-start -n NAME -d

 

Docker的使用和安装:

配置yum仓库:

首先要配置extras源:(去官网查和本机系统所匹配的源:如系统是centos7.4然后源也必须是7.4的)

vault.centos.org (centos官网地址)

[extras]
name=extras

http://vault.centos.org/7.4.1708/extras/x86_64/

gpgcheck=0

在配置docker源地址:(可以去阿里云上去查找)

[docker]

https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/

gpgcheck=0

最后还需要配置epel源,应为docker包依赖epel源里的包。

yum install docker-ce  (安装docker包)

配置文件:/etc/docker/daemon.json   (文件夹和文件都需要自己建立)

添加镜像加速器:

vim /etc/docker/daemon.json

{
"registry-mirrors": [“https://registry.docker-cn.com”]
}    (添加此行)此为官网的镜像加速器,还可以使用阿里云的镜像加速器。

systemctl start docker.service   (启动服务)

docker命令:

Containers:管理容器
Images:管理镜像、映像

docker version  (查看版本信息)

docker info  (查看详细信息;运行的容器个数;暂停的个数;镜像个数等)

镜像的管理:

docker  search:(搜寻官网上的docker镜像,)例如:docker search nginx  (搜寻nginx的镜像)

docker image  pull:(下载docker镜像,从官网上)例如:docker pull nginx (下载搜索的nginx镜像)

docker image list :(列出本地所有的docker镜像)

docker image list nginx    (只列出本地nginx版本的镜像)

docker image rm :   (删除下载下来的本地镜像)  例如:docker image rm nginx:1.14-alpine (镜像+标签)

容器的创建:(如果本地没有镜像文件,启动时会自动到官网上下载)

docker create:(创建docker容器)例如:docker create -it  –name b1 busybox:latest (只是busybox需要添加-it的命令来创建)其他容器的创建:docker create –name b2 nginx

docker start:(启动docker容器)  docker start  -i  b1  :(b1:为创建容器的自定义的名称;-i  也只是busybox镜像启动的所添加的选项;启动不成功可以通过-i -a这两个选项来调节,)其他容器的启动:docker start b1

docker run(直接创建运行docker容器);如果本地没人镜像文件docker会自动去官网上查询并下载。

例1 :docker run –name b1 -it busybox:latest  (b1为自定义的容器名称;-it 为开启交互式界面,既打开容器的界面,busybox:latest :为打开的镜像名称和标签号)

例2: docker run –name web1 -d nginx  (运行nginx的镜像;-d 不要运行在后台,因为此docker容器只有一个程序;如果运行在后台,容器上没有运行的程序,默认会终止此容器)

QQ截图20180801111801

例3 :docker run –name red1 -d redis:4-alpine (创建一个redis镜像,版本号不指定,默认安装的时latest,由于本地没有镜像,会去官网上自动去下载)

QQ截图20180801112301

下载下来的镜像存放到本地,可以使用:docker image ls 来查看。

docker container ls -a    (查看处于停止状态下的docker容器)

 

交互式的连接一个已经启动的容器

-i:–interactive,交互式;
-t:Allocate a pseudo-TTY

docker exec -it red2 /bin/sh  (以交互式的方式进入到已经开启的容器里面去)

docker ps:(列出容器的详细信息在运行的容器)或者:docker container ps docker container ls 等命令都可以

docker ps -a   (列出所有容器,包括运行的和不在运行的)

docker image ls (列出本地的所有的镜像文件)

docker restart:(重新启动docker容器)  docker restart b1  (b1:为创建容器时定义的名称)

docker stop:(停止docker容器)docker stop b1        (b1:为创建容器时定义的名称)

docker kill:(强行停止docker容器)docker kill b1    (b1:为创建容器时定义的名称)

docker rm    (删除创建的容器)       docker rm b1            (b1:为创建容器时定义的名称)

 

 

Docker镜像:

官网上查找镜像及版本号(tags)

在官网上搜寻docker的镜像文件。  https://hub.docker.com/(官网搜寻地址)

 docker pull nginx:1.14-alpine (后面为版本信息,在官网啊地址上搜寻的结果)如果不加版本信息:

docker pull nginx 则下载下来的默认标签为latest(最新的)的版本的。

QQ截图20180801091515

QQ截图20180801091457

docker image list   (查看已经下载下来的镜像)

QQ截图20180731221715

 

Docker镜像的原理及组成

Docker镜像含有启动容器所需要的文件系统及其内容,因此, 其用于创建并启动docker容器 。

结构:

采用分层构建机制,最底层为bootfs,其之为rootfs

bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完 成后会被卸载以节约内存资源;

rootfs:位于bootfs之上,表现为docker容器的根文件系统;

传统模式中,系统启动之时,内核挂载rootfs时会首先将其挂载为“只读”模式, 完整性自检完成后将其重新挂载为读写模式

docker中,rootfs由内核挂载为“只读”模式,而后通过“联合挂载 ”技术额外挂 载一个“可写”层;

 

 

位于下层的镜像称为父镜像(parent image),最底层的称为基础 镜像(base image)

最上层为“可读写”层,其下的均为“只读”层

QQ截图20180801140824

Registry  (docker镜像仓库)

在下载镜像时,如果不指定路径,默认是下载Docker Hub官方的镜像仓库里的镜像文件。

如果也没有指定tags(版本号);则默认下载latest(最新的)的版本。

Registry用于保存docker镜像,包括镜像的层次结构和元数据

Repository  :由单个类型的docker镜像的所有迭代版本组成的镜像仓库 ;在镜像仓库之下。(例如:nginx;下面有多个版本的镜像文件,都是nginx的标签;但他都是nginx的镜像文件)

一个 Registry是由多个Repository镜像仓库所组成的。

https://quay.io/  (另一个镜像网站)

如果在此网上上下载格式为:docker pull quay.io/coreos/flannel:v0.10.0-arm64

(quay.io:官网地址:/coreos/flannel ;下图中所搜寻的flannel的前缀;:v0.10.0-arm64:版本号)

QQ截图20180801150316

 

QQ截图20180801150740

 

镜像的制作:

1 . 基于已有的容器,经过修改后,在制作后镜像:

docker run –name b1 -it busybox:latest  (启动一个容器)

进去之后添加一个html的文件:

mkdir -p /data/html

cd /data/html/

vi index.html

hello

不能将容器关闭或者退出,在容器运行状态下,另外开启一个linux的终端界面:

docker commit -p b1  (基于b1做新的镜像文件)由于此处并没有命名所以此镜像只有id号而没有名称:

QQ截图20180801152952

docker tag 2e8b205a2902 magedu/http:1.0 (由于刚创建的镜像没有名称和标签,使用不方便,可以创建名称和标签:创建时要使用其id号来引用)

docker tag magedu/http:1.0 magedu/http:1.1   (给同一个镜像创建多个标签)

QQ截图20180801153737

当一个镜像有多个标签时,删除一个标签不会将镜像删除,如果只有一个标签了,删除了最后一个标签就会将镜像删除了。

docker image rm magedu/http:1.1  (删除其中一个镜像标签)

docker inspect nginx  (查看具体的镜像里的内容)

docker run –name ttt -it magedu/http:1.0  (开启新建的镜像)

 

将镜像推送到官网:

首先要在官网上注册一个个人的账号:https://hub.docker.com/

登陆后创建一个仓库:Create Repository

magedu/httpd   (仓库的名称)

登陆:

docker login -u lvchenyang   (如果是推送到官网上,不用写服务器的地址;如果不是则需要写服务器的地址)

推送:

docker push magedu/httpd (如果不添加标签的化默认推送magedu/httpd;所有版本的)

 

推送到阿里云的个人仓库:

https://cr.console.aliyun.com/cn-hangzhou/repositories  (官网)

注册账号,创建新的镜像仓库。

QQ截图20180801162411

想要将自己的镜像推送到阿里云上要将镜像重新打上阿里云的标签

53天第3个视频里有:70分钟左右

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104294

(0)
上一篇 2018-07-31 10:51
下一篇 2018-07-31 21:02

相关推荐