docker以容器的方式提供隔离环境,与虚拟相比更加节省资源,特别是对于软件层面来说,不需要完整的操作系统硬件层的抽象,只需要应用环境的隔离即可。因为docker的隔离性以及高效率,对于开发人员来说方便的组织多套开发环境,与生产环境可以完全相同,对于运维方面的工作则可以实现快速的打包分发,因此使用docker是一种更加快速的开发、运维模式。
但是docker仍然不是必须的选项,假设你有精力完全手动组织各类开发环境,比如你要开发java和php,使用不同的web服务器,你可以轻松的调教他们,你使用数据库可以轻松的配置他们,在部署上面你可能没有大批量的用户,或者大批量的上下线服务器,那也仅把docker作为一个小菜来看即可。
我使用docker起始是因为搭建php开发环境,hyperf不支持windows环境,相比较虚拟机来说还是选择用docker这类更轻量些的技术,可能你有各种原因需要入手docker,那么尽快动手尝试,并且注意保留好你的重要数据。
具体安装步骤如下:
安装之后就可以使用了,docker的使用主要围绕镜像和容器两个概念展开的,镜像类似虚拟或者物理上使用的操作系统安装镜像,docker使用的是容器技术,所以文件尺寸比完整的操作系统要小的多,一般在百兆内,当然内部会烧制一些所需要的软件环境,这正是docker提供的主要功能。得到镜像文件后,可以用来创建容器,可以理解成创建一台虚拟机,不过是可以直接启动的容器,在该容器里软件运行环境是隔离的。
不得不说新技术都非常的人性化与高效,docker提供了image仓库,看中的镜像可以直接从仓库中pull到本地。
docker 有强大方便的命令行可以使用,不过建议使用图形界面,毕竟是在win10下,能少动脑时尽量节省脑力。
在管理工具中的镜像标签下可以查看当前已经加载到本地的镜像,需要使用哪个作为模板可以直接启动为一个容器,填上必要的名称、端口映射等就可以了。
以开发php使用hyperf框架为例:
# 使用centos7创建一个容器,如果本地没有镜像会自动下载
docker run -i -t -d --name centos7 -p 20:20 -p 21:21 -p 22:22 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 -p 9501:9501 --privileged=true -v /E/docker/sharing/project:/project centos:7 --entrypoint /usr/sbin/init
#上面命令的意思是创建一个docker容易命名为centos7(名称大家自定义)让他后台运行,然后将宿主机的20,21,80,443,#888,8888这五个端口映射到docker容器中去。
#并且将宿主机的/E:/docker/sharing/project文件夹映射到docker容器的/project上去(注意:文件目录如果不存在。宿主机和容器#会自己创建,无需手动创建)。privileged表示在运行容器的时候,给容器加特权,设置容器有写文件的权限。
#以上参数由docker run的参数组成,可查看docker文档。其中--entrypoint /usr/sbin/init参数可以使得容器内可以管理服务。
#以上安装完之后会启动这个容器的控制 台,为了方便可以安装网络管理组件:
yum install net-tools -y
#因为docker的设计理念不希望系统内运行后台服务,所以没有附带sshd服务,如果需要安装可使用以下命令:
yum install -y openssl openssh-server
yum install openssh*
systemctl enable sshd
systemctl start sshd
#可以使用宝塔(http://www.bt.cn)来安装管理php环境了。
#composer版本需要升级
composer self-update
#hyperf框架有一个自动应用修改的开源项目,建议安装
curl -o watch https://gitee.com/liangguifeng/hyperf-watch/raw/master/watch
chmod +x watch
# 将该程序放置hyperf项目目录,执行一下 php watch 就可以了。