一、简介
一个项目环境配置相当麻烦,如果换一台机器跑起来,所有配置就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。
开发需要清楚的告诉运维部署团队,用的全部配置文件+所有软件环境。不过,即便如此,仍然常常发生部署失败的状况。Docker的出现使得Docker得以打破过去「程序即应用」的观念。透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。
Docker是一个开源的应用容器引擎,也可以实现虚拟化,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker 使用沙箱机制,相互之间不会有任何接口。系统平滑移植,容器虚拟化技术。
docker是一个用来装应用的容器,就像杯子可以装水,笔筒可以放笔,书包可以放书,可以把hello word放在docker中,可以把网站放入docker中,可以把任何想得到的程序放在docker中.
Docker理念
Docker是基于Go语言实现的云开源项目。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。
Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。
一句话: 解决了运行环境和配置问题的软件容器, 方便做持续集成并有助于整体发布的容器虚拟化技术。
Docker的基本组成
镜像(Image) :Docker镜像就像是一个模板,可以通过这个模板来创建Docker容器,比如Ubuntu系统,MySQL镜像,redis镜像。
容器(Container) : Docker利用容器来运行应用,容器是从镜像创建的运行实例。如启动MySQL容器
仓库(Repository) :Docker仓库用于保存镜像,可以理解为代码控制中的代码仓库。Docker Hub是公共仓库。
Docker的工作原理
Docker的工作原理是镜像与容器分离。
开发人员制作应用镜像并上传到仓库。
运维人员可以获取所需应用镜像,并启动应用容器。
一个应用可以同时启动多个相同的容器实例。
Docker常用命令
启动docker:sudo systemctl start docker
停止docker:systemctl stop docker
重启docker:systemctl restart docker
搜索镜像:docker search 镜像名
拉取镜像:docker pull 镜像名
列出镜像:docker images
删除镜像:docker rmi 镜像id
启动容器:docker run 镜像id(参数)
停止容器:docker stop 容器id或名称
重启容器:docker restart 容器id或名称
查看正在运行的容器:docker ps
查看所有的docker容器:docker ps -a
进入容器:docker exec -it 容器id /bin/bash
Docker优点
更高效的利用系统资源-
更快速的启动时间-
一致的运行环境-
持续交付和部署-
更轻松的迁移和维护
Docker已经成为最流行的软件容器平台,可以极大提高开发和运维的效率。