使用Docker搭建应用运行环境
什么是docker?
Docker 使用 Google
公司推出的 Go 语言进行开发实现,基于 Linux
内核的 cgroup,namespace ,以及 OverlayFS类的 Union FS等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术 。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
为什么要使用docker?
- 开发的程序最终的运行环境为Linux,开发环境不方便调试,并且避免了“代码在我电脑上没问题”的情况;
- MacOS上并没有好用的SSH管理工具,Windows上则有很多方便快捷的工具,直接使用ssh命令会出现掉线,文件传输不方便等情况,Docker则可以直接将主机目录挂载到;
- Docker是轻量级的容器,相比虚拟机而言,对电脑资源的要求更低,启动速度更快。
安装Docker
MacOS 通过brew安装
$ brew cask install docker
注意:docker有桌面版,如不加cask则下载的不是桌面版。但仍然可以通过命令行来使用,下载桌面版能可视化容器更方便。
获取一个镜像
Docker 官方维护了一个公共仓库 Docker Hub,我们可以直接从 Docker Hub 中获取我们想要的镜像。我们通过以下命令获取redis的最小镜像。
$ docker pull redis
运行一个容器
运行交互式容器,这样进入了一个交互式容器,里面可以对redis进行查询等操作,而这个容器只可以操作redis,完全与其他服务隔离开来,非常安全,即使服务宕机也丝毫不会影响其他服务,而且后期维护也非常简单。
$ docker run -itd --name redis -p 6379:6379 -v 本地目的:容器目录 redis
-i:以交互模式运行容器,通常与-t同时使用
-d:后台运行容器,并返回容器ID,也即启动守护式容器
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
写在一起就是组合命令,-id -it -itd
–name:用来指定容器名称,如省略则会 Docker 会自动分配一个名称
-v:代表挂载目录,本地目的和容器目录使用:
分隔,均是绝对路径,当容器目录不存在时会自动创建,如需挂载多个目录,可以使用多个-v
来挂载多个目录
-p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。
使用$ docker ps
可以查看容器中所有的容器
进入环境
使用docker命令登录到redis容器中
docker exec -it redis bash
启动redis客户端
redis-cli
然后就可以在docker中运行redis,就和在docker外运行是一样的,且已经将本地目录挂载到容器内目录,即使以后该容器损坏或删除,数据一直是存在本地的,并无损失。
以上就是我第一次用Docker的一些心得~
参考: