容器与管理程序虚拟化(HV)有所有不同。管理程序虚拟化能过中间层将一对吧或多台独立的机器虚拟运行于物理硬件之上,而容器则是直接运行在操作系统内核之上的用户空间。
和传统的虚拟化及半虚拟化相比,容器运行不需要模拟层和管理层,而是使用操作系统的系统调用接口。这降低了单个容器所需要的开销。也使得可以运行更多的容器。
Docker 鼓励面向服务的架构和微服务架构
Docker For Mac
右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Advanced 标签下的 Registry mirrors 列表中加入下面的镜像地址:
http://5ca5f1e4.m.daocloud.ioCopy
点击 Apply & Restart 按钮使设置生效。
运行第一个容器
docker run -i -t ubuntu /bin/bash
run命令提供了Docker容器的创建到启动的功能。 -i标志保证容器中STDIN是开始的,-t标志则是为创建的容器分配一个伪tty终端
输入exit退出容器
可以使用docker run 「容器的名字或容器ID」来重启已经停止的容器,并且会沿用run命令时指定的参数来运行,因此会运行一个交互式的会试的shell,我们可以用docker attach [name | ID]命令,重新附着到该容器的会话上。
docker ps -a //查看己创建的容器 docker ps --help 来得到更多信息
连接到容器后,输入hostname,发现其值就是容器的ID
创建守护式容器
没有交互式的会话,,非常适合运行应用程序和服务。
docker run --name daemon_dave_centos -d centos /bin/sh -c "while true; do echo helllo world; sleep 1; done"
docker logs daemon_dave_centos //发现一直在打印hellow world
docker logs -f daemon_dave_centos //-f命令与 tail -f 命令相似
logs --tail 0 -f daemon_dave_centos // --tail 后面指定条数,0表示最新,10表示 从最近10条
docker top daemon_dave_centos //查看容器内的进程
在容器内运行进程
Docker 1.3 后可以用docker exec命令在容器外启动新进程
//-d表示需要运行一个后台进程
docker exec -d daemon_dave_centos touch /etc/new_config_file
docker exec -t -i daemon_dave_centos /bin/bash
停止守护式容器
docker stop 【name | ID】
自动重启容器
--restart 标志会检查容器退出代码,并据此来决定是否需要那我还是启容器。默认行为是Docker不检查
深入容器
docker inspect [name |ID] 来获取更多容器信息
删除容器
如果容器不在使用,可用docker rm 命令删除它们
docker rm [name | ID]
//可通过以下方式删除所有
docker rm docker ps -a -q