最近务业不多,闲暇之际折腾了一下 docker。
-
为什么使用 docker?
- 隔离程序,安全,易于服务的部署和使用;方便模拟使用多个 host,搭建服务集群玩
-
与传统的 vm 相比,docker 的 pros and cons?
- 就虚拟化而言,docker 对主机系统的环境 (linux 内核)有一定强制依赖,不像 virtual box,VMware 那样跨平台;比如 vbox 的同一个 Image 在 windows 或者 linux 下都可以运行,而 docker 目前正式版还处于 linux only 的状态下,x32 系统的 Image 在 x64 系统 docker 上运行还是个问题;docker 不像 vm 一样运行不同的系统,比如在 Linux 不能运行 windows,当然了解了 docker 的原理后,这显然是废话
- 就服务控制而言,在使用 Linux 作为主力服务器的情况下,docker 比 vbox,VMware 显得高效和便捷,docker 可以把单个或者多个服务程序打包, 而 vbox 等更多的是把一个系统打包;docker 不用为运行的服务模拟多过基础环境,服务进程在 docker 运行的效率与在实体主机中运行的效率理论上相差无几,而 vbox 等显过臃肿了。
照着官网在 CENTOS7 上安装 docker 后启动 docker 服务进程
service docker start
怎么获取所需的 Image
docker pull imageName
怎么显示已经获取到的 images
docker images
怎么启动 image, 并执行 image 中的 /bin/bash 从而进入 image 提取的环境
docker run -it --name givingContanerName imageId /bin/bash
or
docker run -it --name givingContanerName imageName:tag /bin/bash
怎么把主机的 xxx 端口指向 container 中的 yyyy 端口
增加-p选项
docker run -it -p xxx:yyy --name givingContanerName imageName:tag /bin/bash
在主机上怎么显示端口使用状态
iptables -t nat -L -n
container 运行后,无法通过ifconfig或者ip a查看 ip, 怎么搞?
在/etc/hosts中看查看该 host 对应的 ip
怎么显示所有 container 状态
docker ps -a
怎么在进入 image 所在的环境后,脱离这个环境但不使 container 退出
Ctrl-p Ctrl-q
怎么在脱离后想再次进入 container 环境中
docker attach containerId
or
docker attach containerName(即运行 images 时用 --name 指定的名字)
怎么保存 container 到 image 中
docker commit -m "massge" containerId imageNaem:tag
怎么导出 Image
docker save imageId > xxx.tar
怎么导入 Image
docker load -i < xxx.tar
更多的命令帮助,直接docker help