最近务业不多,闲暇之际折腾了一下 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 等显过臃肿了。
- 就虚拟化而言,docker 对主机系统的环境 (linux 内核)有一定强制依赖,不像 virtual box,VMware 那样跨平台;比如 vbox 的同一个 Image 在 windows 或者 linux 下都可以运行,而 docker 目前正式版还处于 linux only 的状态下,x32 系统的 Image 在 x64 系统 docker 上运行还是个问题;docker 不像 vm 一样运行不同的系统,比如在 Linux 不能运行 windows,当然了解了 docker 的原理后,这显然是废话
照着官网在 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