我是架构师张飞洪,钻进浩瀚代码,十年有余,人不堪其累,吾不改其乐。如果你和我的看法不一样,请关注我的头条号,我们一起奇闻共赏,疑义相析。
接下来来讲解Docker三大组件之一的容器,如果说镜像是静态的只读文件,那么容器就是带有运行时需要的可写文件层。也可以这样理解,镜像是对象的模板——类,容器是类生成的对象,镜像只有一个,对象可以有很多个。如果大家觉得看文字不过瘾,可以收看我的视频
1.新建容器
docker create -it ubuntu:lastest //该命令创建的容器处于停止状态,可以使用docker start启动。
2.启动容器
docker start 容器id
3.创建并启动容器
docker
run ubuntu /bin/echo 'hello' 等价于docker create,再执行docker run
该指令背后一系列别隐藏操作,包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载;
- 利用镜像创建一个容器,并启启动该容器;
- 分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层;
- 从宿主主机配置的的网桥接口中,桥接一个虚拟接口口到容器中;
- 从网桥的地址池配置一个IP地址给容器, 口执行用户指定的应用程序;
- 执行完后,容器被自动终止。
docker run-it ubuntu:14.04 /bin/bash //下面的命令启动一个bash终端,允许用户进行交互;按ctrl+d或输入exit命令来退出容器。
4.守护态运行
docker exec -itd 453698741 bash //exec进入容器,并启动bash ; -i参数来保持标准输入打开,-t并且分配一个伪终端,-d后台运行
5.删除容器
docker rm 删除终止或退出状态的容器,不能删除运行中的容器,
-f 强行删除。
6.导入导出容器
6.1.导出容器
docker export -o demo.tar e12 //-o选项来指定导出的tar文件名
docker export r78 > demo2.tar //重定向
6.2.导入容器
docker import demo.tar test/ubuntu:v1.0
docker load导入镜像相似,区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态)而镜像存储文件将保存完整记录,体积也更大。
7.小结
高可靠性机制:a.例如使用Haproxy工具来代理容器访问,故障时,快速切换。b.指定合适的容器重启策略,来自动重启退出的容器。
如果对Docker有更深的洞察,欢迎补充和讨论,感谢您的捧场。我是张飞洪,我为博客园的读者写故事。我会给你呈现程序员眼中的世界,请关注我的头条号,或者加我的QQ群【105365283】一起学习!