常用命令
镜像的导出导入 和 命名;这一步导出可以保存tar文件,作为离网的环境安装docker-compose
docker save 镜像id > 文件名.tar
docker load < 文件名.tar
docker tag 镜像id 镜像名称:tag
--- docker run -it --network lnmp_lnmp --rm 容器id mysql --version 调用mysql,但是这个不能再宿主机使用(按理说是有方法执行的,我再找找看)
--- docker exec -it 容器id /bin/bash 进入容器
--- 查看网络配置信息 docker network inspect network_id
项目部署完成之后,会报一个 driver 连接失败 , 根据报错得知 是因为docker 里面的 pdo-mysql没有开启
解决方法:
进入php容器
> cd /usr/local/bin
> ./docker-php-ext-install pdo
> ./docker-php-ext-install pdo_mysql
//这个步骤估计可以忽略,加了也没关系
然后在/usr/local/etc/php/conf.d 下面创建一个 docker-php-ext-pdo_msql.ini 文件
输入 extention=pdo_mysql.so
# 最后执行
>docker php容器id restart //重启一下php容器
再次运行 就可以了
知识点补充:
** docker 镜像数据 和 宿主机数据 共享
> docker run -it -v {主机路径}: {容器路径[这里最好定义一个没用的文件夹]} 镜像id /bin/bash // 进入容器里面
然后可以根据双方定义好的数据进行传输比如
{主机路径} 为 /tmp/cyq
{容器路径} 为 /cyq
那么把数据放在这个路径里面,双方的数据就能共享了;
** docker修改容器生成镜像
> sudo docker run -it 镜像id /bin/bash
进行操作,例如需求 php7.2.3-fpm 这个镜像里面,缺少gd 和 zip 下载两个扩展包,并且安装pdo 和 pdo_mysql 需要下载并安装上去
> apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev && docker-php-ext-install -j$(nproc) iconv && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && docker-php-ext-install -j$(nproc) gd && docker-php-ext-install mysqli pdo pdo_mysql
// 退出容器
> exit
//这个步骤是跟docker 里面的 Dockerfile 是一样的道理
创建Dockerfile 写入
FROM php7.2.3-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-install -j$(nproc) iconv \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install mysqli pdo pdo_mysql
// ↑ 进入容器会标识当前容器id的,如 root@容器id , 或者根据docker ps -a 查看刚刚的容器;(注意每次run 镜像的时候 都会生成一个单独的容器)
> docker commit -m="提交的描述信息" -a="作者" 容器id 标镜像名:[标签名]
> docker images // 查看刚刚生成的新镜像