从 Docker 折腾到 Laradock 🌈

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。🌴

什么是Docker?

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

为什么要用Docker?

  • 更高效的利用系统资源
  • 更快速的启动时间
  • 一致的运行环境
  • 持续交付和部署
  • 更轻松的迁移
  • 更轻松的维护和扩展

对比虚拟机的总结:

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

基本概念:

Docker 包括三个基本概念

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

理解了这三个概念,就理解了 Docker 的整个生命周期。

Docker文档直通车 👍

什么是Laradock?

一套完整的基于Docker的PHP开发环境。

包含了预先打包的Docker镜像,所有预先配置都是为了提供一个完美的PHP开发环境。

Laradock是在laravel社区众所周知的,因为这个项目最开始只关注在Docker上运行的laravel项目。后来,由于PHP社区的大量使用,它开始支持比如Symfony、CodeIgniter、WordPress、Drupal等其他的PHP项目。

Laradock直通车

安装(CentOS 安装 Docker CE):

1.卸载旧版本
旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2.使用 yum 安装
执行以下命令安装依赖包:
$ sudo yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2
鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。
执行下面的命令添加 yum 软件源:    
$ sudo yum-config-manager \
    --add-repo \
    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 官方源
# $ sudo yum-config-manager \
#     --add-repo \
#     https://download.docker.com/linux/centos/docker-ce.repo

3.安装 Docker CE
更新 yum 软件源缓存,并安装 docker-ce。
$ sudo yum makecache fast
$ sudo yum install docker-ce

4.启动 Docker CE
$ sudo systemctl enable docker
$ sudo systemctl start docker

5.建立 docker 用户组
建立 docker 组:$ sudo groupadd docker
将当前用户加入 docker 组:$ sudo usermod -aG docker $USER
退出当前终端并重新登录,进行如下测试。

6.测试 Docker 是否安装正确
$ docker run hello-world
若能正常输出以上信息,则说明安装成功。

7.镜像加速器
请在 /etc/docker/daemon.json 中写入如下内容:
{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://hub-mirror.c.163.com"
  ]
}或
{
  "registry-mirrors": [
       "https://registry.docker-cn.com"
  ]
}
之后重新启动服务。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
检查加速器是否生效
执行 $ docker info,如果从结果中看到了如下内容,说明配置成功。
Registry Mirrors:
 https://dockerhub.azk8s.cn/

安装Laradock:

1.将 repository 克隆到你机器的任意位置:
git clone https://github.com/laradock/laradock.git
文件夹结构如下
+laradock
+zkproject

2.进入 laradock 文件夹并复制 env-example to .env
cp env-example .env

3. 在顶部,修改 APP_CODE_PATH_HOST 变量为你的项目路径.
APP_CODE_PATH_HOST=../zkproject

4.运行 docker-compose 来构建环境
docker-compose up -d nginx php-fpm mysql workspace

5.进入 Workspace 容器,执行比如 (Artisan, Composer, PHPUnit, Gulp, ...) 等命令
docker-compose exec workspace bash
可以看到 /var/www 目录就是 test 映射来的。再去找 nginx 配置文件,在 laradock/nginx/sites 里可以看到有几个样本文件,一个 default.conf 文件,default 文件的 root 默认是 /var/www/public。所以,可以看出想配置多个项目的话,修改 nginx 配置文件及对应的文件结构即可。
+laradock
+zkproject
++project_one
++project_two
这是我的目录结构,配置好后记得把本机 hosts 修改下。然后重启 docker 即可。

6.navicat连接mysql
docker-compose exec mysql bash
mysql -uroot -proot
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
打开Laravel项目中的.env 文件并设置:
DB_HOST=mysql (用 127.0.0.1 访问的是 php 容器,php 容器里没有 mysql )
REDIS_HOST=redis

常用的部分命令

systemctl start docker
systemctl stop docker

docker images
docker rmi ID
docker ps -a
docker container ls -a
docker rm -f ID

docker rm -f `docker ps -a -q`
docker rmi `docker images -q`

docker-compose up -d nginx php-fpm mysql workspace
docker-compose exec workspace bash
docker-compose exec mysql bash
mysql -uroot -proot

最后送给自己 💪

失去的不再来,不能放弃

那便继续向着未来前进

⬆️

写的不错,赞助一下主机费

扫一扫,用支付宝赞赏
扫一扫,用微信赞赏

暂无评论~~