前言:

以前学习docker 都是零零碎碎的,只知道用,有些莫名其妙的报错自己也没有思路去解决,所以基于一本专业的介绍docker的书籍,重新开启学习,该博客就记录下我自己的学习过程吧。

1.docker是什么:

与虚拟机的区别引用一篇博客:

Docker其实也是类似于虚拟机的。至少在作用目的上是一致的。用一个“经典”的例子来作对比就是:将部署应用比作鸣人来搓螺旋丸,虚拟机类似于鸣人的影分身之术,每个分身(虚拟机)都拥有同样的身体(OS,环境),但是在查克拉(CPU)的使用上,每个分身的查克拉会均分自真身(真正的主机),这个行为也可以称之为CPU虚拟化,但是这里浪费了分身,用分身来搓一个小螺旋丸,太浪费了……而对于docker来说,就像是九尾模式的鸣人,我直接利用我体内的九尾查克拉(硬件资源),分成九只爪子,每只爪子相互独立,也可以搓小螺旋丸……

2.docker 3大核心:镜像,仓库,容器

2.1

镜像就是一个一个类似于虚拟机的镜像,可以理解为一个面向Docker 引擎的只读模块包含了文件系统,如包含了ubuntu,就是ubuntu镜像,如包含了Apache 就是Apache镜像,

2.2

容器:容器是一个镜像的实例,利用容器来隔离有点像沙箱,如果说镜像就是一个特定的文件系统,那么容器就是一个完整的简易的操作系统包含文件系统,进程,用户空间,和网络空间,以及各种程序盒子等,书上说容器是镜像的可写层,我是这样理解的,镜像是不变的,当成是一个不变的类,然后有很多很多的实例,比如一个ubuntu镜像可以生成各种各样的程序容器。

2.3

仓库:

仓库好理解,就是用来放镜像的地方,分为本地仓库(私有仓库)和云仓库(公开仓库),有各种各样的仓库,每个仓库通常是放一类镜像,该类镜像用tag来区分,而最大的稳定国内访问的仓库就是Docker Hub。

2.pull 镜像,拉取容,pash上传到仓库

docker images

有什么好玩的docker镜像_有什么好玩的docker镜像

各字段解释:仓库TAG标识符,IMAGE ID 镜像唯一标识符,创建时间,仓库大小

docker inspect 镜像详细信息

 

有什么好玩的docker镜像_有什么好玩的docker镜像_02

docker pull ubuntu

进入镜像:

docker -t -i IMAGE ID /bin/bash 镜像id 前几个字母可代替完整的id

 

有什么好玩的docker镜像_docker_03

 

2.搜索镜像:

docker search TERM

参数: --automated=false 重要,官方还是自建

--no-trunc=false 输出信息不截断

--stars=0 输出好评镜像

3.删除镜像:

docker rm 容器id

docker rmi image(标签或者ID)

docker rmi -f id 强制删除,建议不用有遗留问题。

解决docker 镜像多引用问题导致镜像删不掉问题:

如图

 

 

有什么好玩的docker镜像_有什么好玩的docker镜像_04

 

 

有什么好玩的docker镜像_Docker_05

 解决办法:

先docker rm 容器id

在docker rmi 镜像id 就可以了

删除错误有错误提示的按照错误去删除。注意运行中的容器是删不掉的,先stop了。

4.创建镜像:

3种方法:

基于已有的镜像去创建,

基于本地模板导入,

基于Dockerfile创建

docker commit 命令: 其命令格式为

docker commit [option]CONTALINER [REPOSITORY[:TAG]]

-a: --author=" "作者信息

-m,--message=" " 提交消息

-p, --pause =true 提交时暂停容器运行

1.基于现有的仓库去创建:

1.1.修改镜像:

 

有什么好玩的docker镜像_Docker_06

 

制作镜像:如图test镜像制作成功。

docker commit -m "Added a new file" -a "lidaye" 47b19964fb50 test

 

有什么好玩的docker镜像_ubuntu_07

 

2.载入本地模板:

命令docker import - 名字

模板下载一般用openVZ 下载地址:http://openvz.org/Download/templates/precreated

下载为一个tar压缩包:ubuntu xxx.tar.gz

命令:sudo cat ubuntu xxx.tar.gz | docker import -ubuntu

3存出和载入镜像:

docker save和 docker load命令来存出和载入镜像

在本地环境和docker本地仓库的联系。

3.dockerfile 有专门章节。