百科狗-知识改变命运!
--

安装docker-io之后怎么启动docker

乐乐1年前 (2023-12-09)阅读数 8#综合百科
文章标签镜像命令

对于Docker的安装在官网上针对不同的操作系统分别进行了描述,Ubuntu上安装Docker,对于ubuntu操作系统来说必须是64位的,因为Docker的官网上只是提供了64位的docker,如果需要32位的docker则需要下载源码进行编译,这里有篇文章介绍了Docker源码如何进行编译成32位,编译32位的Docker。但是对于我使用的Ubuntu来说正好是32位的。通过下面的两条命令可以看出操作系统的位数和Linux的内核版本。

root@ubuntu:/tmp#uname -a

Linux e529c1b7772a 3.13.0-12-generic #32-Ubuntu SMP Fri Feb 21 17:44:24 UTC 2014 i686 i686 i686 GNU/Linux

root@ubuntu:/tmp#file /sbin/init

/sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=1c47d1e162f6542994e457394ac52078da5cc023, stripped

如果想在32为的Ubuntu操作系统上运行Docker的话,就必须安装32位的Docker。在Ubuntu中提供docker1.01-32位的deb包,可以直接点击“docer1.01-32位deb包”跳转到下载页面。下载完成后,直接使用dpkg –i进行安装。

dpkg -i docker.io_1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1_i386.deb

Selecting previously unselected package docker.io.

(Reading database ... 150021 files and directories currently installed.)

Preparing to unpack docker.io_1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1_i386.deb ...

Unpacking docker.io (1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1) ...

Setting up docker.io (1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1) ...

docker.io start/running, process 10456

Processing triggers for ureadahead (0.100.0-16) ...

Processing triggers for man-db (2.6.6-1) ...

也可以参考下面的这篇文章《Docker 1.0.1 已经可以在 Ubuntu 14.04 LTS 上测试了!》进行安装。安装完成后,可以使用下面的命令确定安装的版本和基本的信息。由于docker使用go语言进行编写的,所以要依赖于GO的编译工具和库文件。

oot@ubuntu:/tmp# docker version

Client version: 1.0.1

Client API version: 1.12

Go version (client): go1.2.1

Git commit (client): 990021a

Server version: 1.0.1

安装docker-io之后怎么启动docker

Server API version: 1.12

Go version (server): go1.2.1

Git commit (server): 990021a

root@ubuntu:/tmp# docker info

Containers: 1

Images: 7

Storage Driver: aufs

Root Dir: /var/lib/docker/aufs

Dirs: 10

Execution Driver: native-0.2

Kernel Version: 3.13.0-12-generic

WARNING: No swap limit support

官方安装方式docker pull imagename从docker的索引中心下载,imagename是镜像名称,例如docker pull ubuntu就是下载base ubuntu并且tag是latest。

root@ubuntu:/# docker pull ubuntu:14.04

Pulling repository ubuntu

c4ff7513909d: Download complete

511136ea3c5a: Download complete

1c9383292a8f: Download complete

9942dd43ff21: Download complete

d92c3c92fa73: Download complete

0ea0d582fd90: Download complete

cc58e55aa5a5: Download complete

root@ubuntu:~/Downloads# docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

ubuntu 14.04 c1b5399bd2ee 8 minutes ago 205.3 MB

learn/tutorial latest 8dbd9e392a96 17 months ago 128 MB

root@ubuntu:/# docker run -i -t ubuntu /bin/bash

2014/09/04 13:04:28 exec format error

docker run -i -t learn/tutorial /bin/bash

2014/09/04 14:45:13 exec format error

PS:在安装完成Dokcer后,使用Pull命令sudo docker pull ubuntu:14.04从镜像仓库获取ubuntu的镜像后,然后使用run命令docker run -i -t ubuntu /bin/bash直接运行该镜像时,会出现下面的错误信息,后来我又尝试着使用官方演示使用的learn/tutorial镜像,还是出现同样的问题,现在怀疑可能是由于我安装的DOcker是32位的,而Image是64位的不匹配造成的。前面说过Docker默认提供的都是64位,其中提供的Image自然也都是64位,所以会出现下面的错误信息。在Docker Hub Registry里的大多数镜像都是64位。这里有一个关于该错误的讨论帖“Ddocker.io: Docker should recommend

linux-image-amd64 ”。所以,如果想在32位的Docker基础上运行Ubuntu的Image那要求Ubuntu的image也必须是32位。这就需要制作32位Ubuntu的Image。这里有一个官方提供的可用的Ubuntu image的列表,Ubuntu Image tag。

Secret有三种类型:

1、Opaque:base64 编码格式的 Secret,用来存储密码、密钥等;但数据也可以通过base64 –decode解码得到原始数据,所以加密性很弱。

2、kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证信息。

3、kubernetes.io/service-account-token:用于被serviceaccount引用,serviceaccout 创建时Kubernetes会默认创建对应的secret。Pod如果使用了serviceaccount,对应的secret会自动挂载到Pod目录/run/secrets/kubernetes.io/serviceaccount中。

Opaque 类型的数据是一个 map 类型,要求value是base64编码格式,比如我们来创建一个用户名为 admin,密码为 admin321 的 Secret 对象,首先需要把这用户名和密码做 base64 编码,

然后可以利用上面编码过后的数据来编写一个YAML文件:(secret-demo.yaml)

然后同样使用kubectl命令来创建:

利用get secret命令查看:

其中default-token-n9w2d为创建集群时默认创建的 secret,被serviceacount/default 引用。

使用describe命令,查看详情:

我们可以看到利用describe命令查看到的Data没有直接显示出来,如果想看到Data里面的详细信息,同样我们可以输出成YAML文件进行查看:

创建好Secret对象后,有两种方式来使用它:

1、以环境变量的形式

2、以Volume的形式挂载

首先我们来测试下环境变量的方式,同样的,我们来使用一个简单的busybox镜像来测试下:(secret1-pod.yaml)

创建上面的Pod:

然后我们查看Pod的日志输出:

可以看到有 USERNAME 和 PASSWORD 两个环境变量输出出来。需要注意的是,环境变量的方式,不支持动态更新密码。

同样的我们用一个Pod来验证下Volume挂载,创建一个Pod文件:(secret2-pod.yaml)

创建Pod:

然后我们查看输出日志:

可以看到secret把两个key挂载成了两个对应的文件。

除了上面的Opaque这种类型外,我们还可以来创建用户docker registry认证的Secret,直接使用kubectl create命令创建即可,如下:

然后查看Secret列表:

注意 看上面的TYPE类型,myregistry是不是对应的kubernetes.io/dockerconfigjson,同样的可以使用describe命令来查看详细信息:

同样的可以看到Data区域没有直接展示出来,如果想查看的话可以使用-o yaml来输出展示出来:

可以把上面的data.dockerconfigjson下面的数据做一个base64解码,看看里面的数据是怎样的呢?

如果我们需要拉取私有仓库中的docker镜像的话就需要使用到上面的myregistry这个Secret:

我们需要拉取私有仓库镜像10.8.13.85/test:v1,我们就需要针对该私有仓库来创建一个如上的Secret,然后在Pod的 YAML 文件中指定imagePullSecrets。

另外一种Secret类型就是kubernetes.io/service-account-token,用于被serviceaccount引用。serviceaccout 创建时 Kubernetes 会默认创建对应的 secret。Pod 如果使用了 serviceaccount,对应的secret会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中。

这里我们使用一个nginx镜像来验证一下,大家想一想为什么不是呀busybox镜像来验证?当然也是可以的,但是我们就不能在command里面来验证了,因为token是需要Pod运行起来过后才会被挂载上去的,直接在command命令中去查看肯定是还没有 token 文件的。

最后我们来对比下Secret和ConfigMap这两种资源对象的异同点:

key/value的形式

属于某个特定的namespace

可以导出到环境变量

可以通过目录/文件形式挂载

通过 volume 挂载的配置信息均可热更新

Secret 可以被 ServerAccount 关联

Secret 可以存储 docker register 的鉴权信息,用在 ImagePullSecret 参数中,用于拉取私有仓库的镜像

Secret 支持 Base64 加密

Secret 分为 kubernetes.io/service-account-token、kubernetes.io/dockerconfigjson、Opaque 三种类型,而 Configmap 不区分类型

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)