什么是docker
Docker is the world's leading software containerization platform.
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。
为什么要用docker
举个栗子假设用户试图基于最常见的LAMP(Linux+Apache+MySQL+PHP)组合来运维一个网站。
传统做法:
- 需要安装Apache、MySQL和PHP以及它们各自运行所依赖的环境;
- 分别对它们进行配置(包括创建合适的用户、配置参数等);
- 之后需要进行功能测试,看是否工作正常,如果不正常,意味着更多的时间代价和不可控的风险。
如果再加上更多的应用,事情会变得更加难以处理,而且一旦需要服务器迁移(例如从阿里云迁移到腾讯云),则需要重新部署和调试。大大地降低了工作效率
Docker:
- 通过容器来打包应用
- 迁移只需要在新的服务器上启动需要的容器就可以了
docker节约了大量的宝贵时间,并降低部署过程出现问题的风险
Docker与传统虚拟机对比
Docker容器与传统虚拟机对比Docker有以下几个优点:
- 更快速的交付和部署
- 更高效的虚拟化
- 更轻松的迁移和扩展
- 更简单的管理
Docker基本概念
-
镜像(Image)
类似于虚拟机镜像,可以理解为一个面向Docker引擎的只读模板,包含了文件系统 -
容器(Container)
类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用 -
仓库(Repository)
类似于代码仓库,是Docker集中存放镜像文件的场所。
注:Docker利用仓库管理镜像的设计理念与Git非常相似
仓库、镜像、容器之间的关系
- 镜像是创建Docker容器的基础,容器是从镜像创建的应用运行实例,镜像自身是只读的,容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身保持不变;
- 仓库是Docker集中存放镜像文件的场所。
在使用docker
命令的时候总要加上sudo
,以下三句代码可以解决这个问题。
$sudo groupadd docker
#将当前用户加入docker组
$sudo gpasswd -a ${USER} docker
#重启docker服务
$sudo service docker restart
镜像操作常用命令
镜像是只读的
-
docker pull NAME[:TAG]
从网上下载镜像
-
docker images
列出本地主机上已有的镜像
-
docker rmi IMAGE[IMAGE...]
删除镜像,其中IMAGE可以为TAG或ID
注意:若该镜像创建的容器存在,镜像文件无法删除,必须删除该镜像创建的容器后,才可以删除该镜像
容器操作常用命令
-
docker create
新建一个容器
-
docker ps
查看容器 -
docker start
启动容器 -
docker run
新建并启动一个容器 -
docker stop
终止容器 -
docker restart
重启容器 -
docker exec
进入容器操作 -
docker rm
删除处于终止状态的容器 - 参数
-
-t
让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上 -
-i
让容器的标准输入保持打开 -
-d
让容器在后台以守护态(Daemonized)形式运行
-
网友评论