docker pull 本地镜像pull的centos的镜像的root密码是多少

> 博客详情
摘要: docker安装,centos建议安装在64位的系统上,,,,
centos6.x安装:#wget http://mirrors./fedora/epel/6/i386/epel-release-6-8.noarch.rpm#wget http://mirrors./fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm#wget&& http://mirrors./fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
#或者在这里找相应的epel文件http://mirrors./fedora/epel/
#---------------------------------------------
yum install&& docker-iousermod& -G docker& $USERservice& docker& start chkconfig& docker& on#docker 下载centos镜像docker& pull&& centos&& #下载centos所有的镜像docker& pull&& centos:centos6&&& 下载centos6镜像
#docker 下ubutu镜像包:docker& pull&& ubuntu & #下载ubuntu所有的镜像docker& pull&& ubuntu:14.10 && 下载ubuntu14.10镜像
#查看本机所有的镜像包:docker& images
#docker运行镜像:docker run& -it&& centos& /bin/bash docker run& -it&& centos:centos6& /bin/bash&& echo 'hello& jk409!'
在镜像里输入exit,就退出并停止运行
#docker构建新的镜像:docker build& -t& centos6:memcached&&& ./memcached&&&&&&&&&&&&& #./memcached目录下有Dockerfile文件
#docker运行新的镜像:docker run& -d -p & centos6:memcached&
#docker停止后台运行的镜像& docker stop/kill&&& (container_id)#docker& stop& `docker& ps|grep& memcached |awk& { 'print& $1'}`
人打赏支持
码字总数 37204
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区CentOS6下 Docker的镜像管理的例子-CentOS-操作系统-壹聚教程网CentOS6下 Docker的镜像管理的例子
下文给各位介绍一篇关于 CentOS6下 Docker的镜像管理的例子,如果有需要了解此方法的朋友不防进入参考吧.
镜像是Docker的灵魂
Docker的镜像是Docker容器运行的基础。学习Docker很重要的一点是镜像的使用。
使用默认docker命令下载的镜像是外部制作好的,而我希望从头做一个镜像,并自己管理。
本文在CentOS 6下使用Docker制作镜像,对这个过程做详细的记录。
理解镜像和容器
镜像(image)和容器(container)是什么关系?
镜像是静态的,容器是动态的
容器是镜像运行起来后的体现
镜像常用命令
docker images
将镜像保存为tar包
docker save centos6-mytest & centos6-mytest.tar
将导出的tar包加载为镜像
docker load & centos6-mytest.tar
制作基础镜像
下载镜像制作工具 febootstrap
yum -y install febootstrap
使用febootstrap制作镜像(CentOS6的镜像),完成后镜像目录是centos6-image。大概是335MB
#febootstrap 基本用法是febootstrap [--options] REPO TARGET [MIRROR] ,后面可根据实际情况安装相应的包 -i 包名
febootstrap -i bash \
-i wget -i yum -i iputils -i iproute -i man -i vim-minimal \
-i openssh-server -i openssh-clients -i cronie-anacron -i crontabs -i rsyslog \
centos6 centos6-image /centos/6/os/x86_64/
将镜像导入到docker
cd centos6-image && tar -c . | docker import - centos6-base
验证镜像可用
docker images& #可以看到刚才制作好的centos6-base
docker run -t -i centos6-base /bin/bash& #可创建容器,进入bash命令行
制作应用镜像
基础镜像只包含了基础的系统,但是它没有包含实际的应用程序,不能产生实际的作用。
我们需要在base系统上增加应用,并生成新的镜像。有两种方法,一种是Docker File的方式。
使用Docker File的方式制作新镜像
编写Docker文件。vim Dockerfile
#Dockerfile
FROM centos6-base
MAINTAINER Yonghua
RUN sed -ri 's/session&&& required&&&& pam_loginuid.so/#session&&& required&&&& pam_loginuid.so/g' /etc/pam.d/sshd
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
RUN echo 'root:123456' | chpasswd
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
CMD /usr/sbin/sshd -D
使用docker build产生新镜像
docker build -t centos6-ssh .& #最后的.表示Dockerfile文件所在的路径
好了,通过docker images 命令可以看到新制作好的镜像centos6-ssh
docker images #可以看到镜像了
将Container直接commit成镜像
DockerFile 使用定义的方式来创建镜像,而有时候我们期望通过将Container转化为镜像的方式来获得镜像。
首先创建一个container,进入bash 进行我们的定制
docker run -t -i centos6-base /bin/bash
然后通过commit命令将container变成镜像
#docker commit CONTAINER_ID IMAGE_NAME
docker commit 83a9fb9eeefd centos6-mytest
上一页: &&&&&下一页:相关内容你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
- DockOne官方账号
非常好的问题,正好之前看到过一篇,我把其中的相关内容贴一下:
我们首先来看看 /var/lib/docker/这个文件夹下的内容。打开这个文件夹下的 repositories 文件,你将会看到类似下面这样的JSON 文件:
$&sudo&cat&/var/lib/docker/repositories&|&python&-mjson.tool
“Repositories”:&{
“ubuntu”:&{
“12.04″:&“8dbd9e392ad58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c”,
“12.10″:&“b750fea3c593ef05ba02a62b4accb2c21d589ff2f5f2dc”,
“latest”:&“8dbd9e392ad58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c”,
“precise”:&“8dbd9e392ad58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c”,
“quantal”:&“b750fea3c593ef05ba02a62b4accb2c21d589ff2f5f2dc”
看看,是不是正好和docker images的内容一致呢。
REPOSITORY&TAG&IMAGE&ID&CREATED&SIZE
ubuntu&&&&&&&&&&&&&&12.04&&&&&&&&&&&&&&&8dbd9e392a96&&&&&&&&8&months&ago&&&&&&&&131.3&MB&(virtual&131.3&MB)
ubuntu&&&&&&&&&&&&&&latest&&&&&&&&&&&&&&8dbd9e392a96&&&&&&&&8&months&ago&&&&&&&&131.3&MB&(virtual&131.3&MB)
ubuntu&&&&&&&&&&&&&&precise&&&&&&&&&&&&&8dbd9e392a96&&&&&&&&8&months&ago&&&&&&&&131.3&MB&(virtual&131.3&MB)
ubuntu&&&&&&&&&&&&&&12.10&&&&&&&&&&&&&&&b750fe79269d&&&&&&&&8&months&ago&&&&&&&&24.65&kB&(virtual&179.7&MB)
ubuntu&&&&&&&&&&&&&&quantal&&&&&&&&&&&&&b750fe79269d&&&&&&&&8&months&ago&&&&&&&&24.65&kB&(virtual&179.7&MB)
接着,我们再来看看 /var/lib/docker/graph/这个文件夹:
$&sudo&ls&-al&/var/lib/docker/graph
drwx——&6&root&root&4096&Nov&22&06:52&.
drwx——&5&root&root&4096&Dec&13&04:25&..
drwxr-xr-x&3&root&root&4096&Dec&13&04:26&27cf
drwxr-xr-x&3&root&root&4096&Nov&22&06:52&8dbd9e392ad58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c
drwxr-xr-x&3&root&root&4096&Nov&22&06:52&b750fea3c593ef05ba02a62b4accb2c21d589ff2f5f2dc
drwx——&3&root&root&4096&Nov&22&06:52&_tmp
这些输出结果可能有点晦涩(Not terribly friendly),但是从中我们可以看出Docker是使用repositories JSON文件来记述镜像信息的,此JSON文件包含了仓库名、标签、以及标签对应的镜像ID。
我们有两个来自ubuntu仓库的镜像,这其中标签为12.04,precise和latest都指向的是同一个镜像,其ID为 8dbd9e392ad58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c (这个ID长度为64位,但是我们可以使用其12位的简短模式,比如8dbd9e392a96)。
那么这些以镜像ID命名的文件夹下面又保存了什么东西呢?
$&sudo&ls&-al&/var/lib/docker/graph/8dbd9e392ad58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c
drwxr-xr-x&&3&root&root&4096&Nov&22&06:52&.
drwx——&&6&root&root&4096&Nov&22&06:52&..
-rw——-&&1&root&root&&437&Nov&22&06:51&json
drwxr-xr-x&22&root&root&4096&Apr&11&&2013&layer
-rw——-&&1&root&root&&&&9&Nov&22&06:52&layersize
这个文件夹下的内容如下:
json -保存着关于这个镜像的元数据layersize – 一个整数,表示layer的大小。layer/ – 子文件夹,保存着rootfs该容器的镜像
$&sudo&cat&/var/lib/docker/graph/8dbd9e392ad58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c/json&|&python&-mjson.tool
“comment”:&“Imported&from&-“,
“container_config”:&{
“AttachStderr”:&false,
“AttachStdin”:&false,
“AttachStdout”:&false,
“Cmd”:&null,
“Env”:&null,
“Hostname”:&“”,
“Image”:&“”,
“Memory”:&0,
“MemorySwap”:&0,
“OpenStdin”:&false,
“PortSpecs”:&null,
“StdinOnce”:&false,
“Tty”:&false,
“User”:&“”
“created”:&“T14:13:15.″,
“docker_version”:&“0.1.4″,
“id”:&“8dbd9e392ad58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c”
$&sudo&cat&/var/lib/docker/graph/8dbd9e392ad58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c/layersize
$&sudo&ls&-al&/var/lib/docker/graph/8dbd9e392ad58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c/layer
drwxr-xr-x&22&root&root&4096&Apr&11&&2013&.
drwxr-xr-x&&3&root&root&4096&Nov&22&06:52&..
drwxr-xr-x&&2&root&root&4096&Apr&11&&2013&bin
drwxr-xr-x&&2&root&root&4096&Apr&19&&2012&boot
drwxr-xr-x&&4&root&root&4096&Nov&22&06:51&dev
drwxr-xr-x&41&root&root&4096&Nov&22&06:51&etc
drwxr-xr-x&&2&root&root&4096&Apr&19&&2012&home
drwxr-xr-x&11&root&root&4096&Nov&22&06:51&lib
drwxr-xr-x&&2&root&root&4096&Nov&22&06:51&lib64
drwxr-xr-x&&2&root&root&4096&Apr&11&&2013&media
drwxr-xr-x&&2&root&root&4096&Apr&19&&2012&mnt
drwxr-xr-x&&2&root&root&4096&Apr&11&&2013&opt
drwxr-xr-x&&2&root&root&4096&Apr&19&&2012&proc
drwx——&&2&root&root&4096&Nov&22&06:51&root
drwxr-xr-x&&4&root&root&4096&Nov&22&06:51&run
drwxr-xr-x&&2&root&root&4096&Nov&22&06:51&sbin
drwxr-xr-x&&2&root&root&4096&Mar&&5&&2012&selinux
drwxr-xr-x&&2&root&root&4096&Apr&11&&2013&srv
drwxr-xr-x&&2&root&root&4096&Apr&14&&2012&sys
drwxrwxrwt&&2&root&root&4096&Apr&11&&2013&tmp
drwxr-xr-x&10&root&root&4096&Nov&22&06:51&usr
drwxr-xr-x&11&root&root&4096&Nov&22&06:51&var
看到这里你应该有些顿悟了吧,这就是我们为什么即使我们不和远程索引或者注册表交互也能通过仓库名来使用一个镜像的原理了。因为一旦你将镜像从远程下载到本地,Docker可以通过仓库名称来使用它们。当你创建自己的Dockerfile的时候也不例外。
文章是去年3月份的,引用之前最好与现在版本对一下变动.其次,讨论存储最好说明底层的driver时什么
我这边对devicemapper了解不多,主要说说aufs的
镜像的存储结构主要分两部分,一是镜像ID之间的关联,一是镜像ID与镜像名称之间的关联,前者的结构体叫Graph,后者叫TagStore.
/var/lib/graph/&image id>
下面没有layer目录,只有每个镜像的json描述文件和layersize大小/var/lib/docker/repositories-aufs
TagStore的存储地方,里面有image id与reponame ,tag之间的映射关系. aufs是driver名/var/lib/docker/aufs/diff/&image id or container id>
每层layer与其父layer之间的文件差异,有的为空,有的有一些文件(镜像实际存储的地方)/var/lib/docker/aufs/layers/&image id or container id>
每层layer一个文件,记录其父layer一直到根layer之间的ID,每个ID一行。大部分文件的最后一行都一样,表示继承自同一个layer./var/lib/docker/aufs/mnt/&image id or container id>
有容器运行时里面有数据(容器数据实际存储的地方,包含整个文件系统数据),退出时里面为空
回答的好详细啊,要赞
我的/var/lib/docker/graph/${image_id}目录下貌似只有json和layersize两个文件,没有layer这个目录?
[root@haichuan-vm&docker]#&ls&graph/*&-R
graph/c5a64f264b78b5433614aecdd4d:
json&&layersize
graph/53f858aaaf7df23e311d71aa93ac578ef39aa076f:
json&&layersize
graph/5b12ef8fd3039acc0e7f68e363c15d8abb5caccede8a:
json&&layersize
我的环境:centos7 docker1.3.2
另外,发现/var/lib/docker/devicemapper/devicemapper下有两个大文件:
[root@haichuan-vm&devicemapper]#&ll&/var/lib/docker/devicemapper/devicemapper/
total&881852
-rw-------.&1&root&root&&Feb&&9&10:46&data
-rw-------.&1&root&root&&&&Feb&&9&10:46&metadata
这两个文件都是hole文件,实际占用磁盘空间大小和local images大小总和基本一致:
[root@haichuan-vm&devicemapper]#&du&-h&/var/lib/docker/devicemapper/devicemapper/*
860M&&&&/var/lib/docker/devicemapper/devicemapper/data
2.1M&&&&/var/lib/docker/devicemapper/devicemapper/metadata
并且这两个文件大小会随着image pull、rmi操作而相应的增大、减小。so,我推测这两个文件就是docker pull ${image}之后,image的layers真正存储的地方。如果确实如此,不知为何docker不把image的layer保存为&透明的二进制&文件?或是像上面 所表述的那样保存为一个layer目录(这种方案不好的地方是不太安全,but应该还有其它考虑吧?)
另外,还是没有发现实际存放container的地方。如下:
containers/cf84e88a726a7fb76e74cc5eb6cbfbde9ce89/cf84e88a726a7fb76e74cc5eb6cbfbde9ce89-json.log
containers/cf84e88a726a7fb76e74cc5eb6cbfbde9ce89/config.json
containers/cf84e88a726a7fb76e74cc5eb6cbfbde9ce89/hostconfig.json
containers/cf84e88a726a7fb76e74cc5eb6cbfbde9ce89/hostname
containers/cf84e88a726a7fb76e74cc5eb6cbfbde9ce89/hosts
containers/cf84e88a726a7fb76e74cc5eb6cbfbde9ce89/resolv.conf
containers/cf84e88a726a7fb76e74cc5eb6cbfbde9ce89/secrets:
把问题总结一下:
1)实际存放images的地方是否是/var/lib/docker/devicemapper/devicemapper目录下的metadata和data两个文件?
2)如果是上面两个文件,为什么要这么存储?而不是存为&透明二进制&或&layer目录&?
3)实际存放container的地方在哪?
看了近期开放的,实际存放images和container的地方就是/var/lib/docker/devicemapper/devicemapper目录下的metadata和data两个文件。
但第二个问题还是不明白,为什么要这么存储?而不是存为一个个的&透明二进制&或&layer目录&(安全考虑?)?
要回复问题请先或
sina攻城狮,docker爱好者
浏览: 26959
关注: 18 人3846人阅读
Docker(2)
&span style=&font-family: Arial, Helvetica, sans- background-color: rgb(255, 255, 255);&&CentOS7安装Docker&/span&
rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
#安装docker
yum -y install docker-io
出现如上所示,安装成功!
#启动docker
service docker start
启动成功!
#加入开机启动
chkconfig docker on
#从docker.io中下载centos镜像到本地 /var/lib/docker/graph
docker pull centos:latest
#查看已下载的镜像
docker images
#启动一个容器
docker run -i -t centos /bin/bash
#查看所有容器
docker ps -a
#开启一个容器
docker start container
#查看容器的root用户密码
docker logs &容器ID或者容器名& 2&&1 | grep '^User:' | tail -n1
#查看容器日志
docker logs -s &容器ID或者容器名&
#删除单个容器docker容器
docker rm loving_ride
#删除所有容器
docker rm $(docker ps -a -q)
docker stop &CONTAINER ID&
docker start &CONTAINER ID&
#运行一个新容器,同时为它命名、端口映射、文件夹映射。以redmine镜像为例
docker run --name redmine -p 9003:80 -p 9023:22 -d -v /var/redmine/files:/redmine/files -v
/var/redmine/mysql:/var/lib/mysql sameersbn/redmine
# 一个容器连接到另一个容器&sonar容器连接到mmysql容器,并将mmysql容器重命名为db。这样,sonar容器就可以使用db的相关的环境变量了。
run -i -t --name sonar -d -link mmysql:db
tpires/sonar-server
#当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像
docker save &IMAGEID& & /home/aa.tar
#拷贝文件到另一机器
/home/aa.tar root@192.168.1.65:/home/aa.tar
#加载打包好的镜像
docker load & /home/aa.tar
#构建自己的镜像
docker build -t &镜像名& &镜像文件路径&
eg:docker build -t aa /home/aa.tar
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:86864次
积分:1612
积分:1612
排名:千里之外
原创:72篇
评论:13条
(5)(9)(2)(6)(58)

我要回帖

更多关于 docker pull centos 6 的文章

 

随机推荐