最近有时间接触到docker技术,发现docker真的是个好东西,中间遇到很多的问题,希望做一些总结防止以后忘记。
用到的VMware虚拟机,虚拟机下载地址:https://www.vmware.com/cn.html
VMware安装好后如果遇到VT-x 问题,需要重新打开电脑在BIOS中Advanced(高级)——CPU Configuration——Secure Virtual Machine,设置为:Enabled(启用)就行了。网上百度一下有很多教程。
如何在VMware上安装linux系统可以参考文章,非常详细。http://blog.51cto.com/13438667/2059926
由于docker要求linux内核必须在3.10以上,所以如果没有的情况下需要去下一个内核以便于更新。Linux内核下载地址:https://www.kernel.org/
这里面我花的时间最长的是虚拟机安装好后内核的更新问题,参考如下地址文章:
Centos7 docker下一步步安装LNMP
整体可参考docker的菜鸟教程。
注意:创建镜像时,文档上用的apt-get update是在Ubuntu下的,在centos下用yum update。
Nginx+php安装可参考链接:http://www.jb51.net/article/113296.htm 很实用。
这里面最大的问题是目录的挂载问题,相信好多刚开始研究的人会碰到一些来自daemon各种报错,或者是502错误,404错误以及file not found问题之类的,这边一定要注意的就是目录挂载的问题,挂载错了就会出现这些错误。
本人直接在root目录下新建的www和nginx/con.f目录。
项目挂载到目录 root/www/ 下
配置文件挂载到
在con.f下新建一个default.conf,然后将如下server的配置复制进去。
server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
location / {
index index.html index.htm index.php;
autoindex off;
}
location ~ \.php(.*)$ {
root /var/www/html/;
fastcgi_pass 172.17.0.2:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
这里的fastcgi_pass 172.17.0.XX:9000; 很重要,要记得修改,是php容器的ip地址。
通过docker拉取所需资源:
Docker pull nginx
Docker pull php:7.1-fpm
Docker pull mysql:5.5
之后可以按照菜鸟一步步安装,挂载,测试。
Docker安装mysql的时官方我试了好多次,可能是系统不同,总进不去容器,试如下命令。
docker run --name mysql -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.5
如何让navicat有权限远程链接mysql,进入mysql容器两条命令即可。
1.GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; //允许外网任何ip访问
2.FLUSH PRIVILEGES // 刷新一下
navicat访问的时候是访问虚拟机的ip地址不是mysql容器的地址,可以通过到主目录下通过 ifconfig 查询一下IP地址。
Docker中常用指令:
find / -name 文件名/文件夹名 全局寻找一个文件名
Docker images 镜像列表
Docker ps 应用容器列表
Docker ps -a 容器详细信息
Docker start 容器名 开启一个容器
docker stop 容器名 停止一个容器
Docker exec -it 容器名 /bin/bash 进入一个容器内/exit退出
Docker inspect 容器名 | grep ‘”IPAddress”’ 查一个容器的IP地址