docker基本使用指南

  1. docker 遇到的坑
  2. 移除镜像
  3. –link 参数
  4. Dockerfile 编写
  5. docker无法运行 mysql容器
  6. docker运行phpmyadmin
  7. nginx结合mysql
  8. nginx配置学习

docker 遇到的坑

运行的时候不能直接用 ./ 指定当前的文件,需要 $PWD

一次性清理所有的已经关闭的容器
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm

:ro 表示只读

访问受到限制

此时目录下的文件权限

重新运行了一下

看来是文件权限的问题,也就是说docker会默认将文件权限直接复制过来,由于我之前的那个用户是pxy,而docker环境中并没有这个用户,导致就变成了1000

移除镜像

docker image rm xxxx

自动添加了环境变量

还有这个

/etc/hosts 也会更新

神奇。。
运行nginx和php-fpm
docker run --name myphp-fpm -v $PWD/www:/www -d php:5.6-fpm

$ docker run --name runoob-php-nginx -p 8083:80 -d \           
    -v $PWD/www:/usr/share/nginx/html:ro \
    -v $PWD/conf/conf.d:/etc/nginx/conf.d:ro \
    --link myphp-fpm:php \ ----> 注意需要取别名
nginx

如果不取别名的话直接闪退,别名可以理解成对应的主机地址

然后开始折腾docker-compose.yml

version: '2'
services:
  nginx:
    image: nginx:latest
    volumes:
      - ./conf/conf.d:/etc/nginx/conf.d
      - ./www:/usr/share/nginx/html
    depends_on:
      - myphp-fpm
    links:
      - myphp-fpm:php
    ports:
      - "8083:80"
  myphp-fpm:
    image: php:5.6-fpm
    volumes:
      - ./www:/www

试了多次,links 需要取别名

同时文件的权限也很重要,不然会出现无法读取flag的情况

Dockerfile 编写

WORKDIR 指定工作目录,这样就能够在执行一些shell命令的时候不需要指明路径了

docker无法运行 mysql容器

这是由于我偷懒只在本机安装了 mysql 得客户端,没有安装服务端,这也是很神奇了

docker运行phpmyadmin

我发现并不需要 nginx ,当然如果有nginx的情况下可以做到反向代理比较好一点

version: "3"
services:
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports: 
      - 8081:80
    links:
      - mysql:db
  mysql:
    image: mysql:5.6
    environment: 
      - MYSQL_ROOT_PASSWORD=123456

nginx结合mysql

version: '2'
services:
  nginx:
    image: nginx:latest
    volumes:
      - ./conf/conf.d:/etc/nginx/conf.d
      - ./www:/usr/share/nginx/html
    depends_on:
      - myphp-fpm
    links:
      - myphp-fpm:php
    ports:
      - "8083:80"
  myphp-fpm:
    image: php/kuozhan
    volumes:
      - ./www:/www
    links:
      - mysql:db
  mysql:
    image: mysql:5.6
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=123456

nginx配置学习

nginx的配置文件以后再单独写,这里先学一点

怎么理解 nginx和php-fpm的关系呢

我在配置docker环境的时候意识到nginx和php两个镜像是相互独立的,首先运行php-fpm镜像,将其内部的 /www 映射到我外部的 ./www 目录中,然后再运行 nginx 镜像,将其 /usr/share/nginx/html 映射到 ./www 目录,同时还需要做两件事

  1. 配置nginx,指定解析的脚本目在 /www 目录中
  2. 连接php-fpm容器,需要将解析到 php 这个域名才行

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论

文章标题:docker基本使用指南

文章字数:681

本文作者:prontosil

发布时间:2020-02-02, 22:22:30

最后更新:2020-02-06, 22:00:54

原始链接:http://prontosil.com/posts/70b2e753/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录