最近有时间接触到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地址