- 在
/home/用户名/
下创建如下文件夹和文件:1
2
3
4
5
6
7
8/home/blueyi/www
├── data
├── nginx
│ └── conf.d
│ └── default.conf
└── web
├── index.html
└── index.php
这些文件夹和文件用于挂载,default.conf
内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
添加伪静态支持
try_files $uri $uri/ /index.php?$query_string;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
#php 地址直接填容器名
fastcgi_pass php-fpm73:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
安装
mysql5.7
,并进入容器设置远程访问:1
2
3
4
5
6
7
8
9
10
11拉取mysql5.7镜像
docker pull mysql:5.7
创建mysql5.7容器
docker run --name mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d -v ~/www/data:/var/lib/mysql mysql:5.7
进入mysql容器
docker exec -it mysql57 bash
连接mysql设置远程访问
mysql -uroot -p
GRANT ALL ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;安装PHP7.3:
1
2
3
4
5
6
7
8
9
10
11
12
13
14拉取PHP7.3镜像
docker pull php:7.3-fpm
创建PHP7.3容器并关联mysql5.7
docker run --name php-fpm73 -d -v ~/www/web:/var/www/html --link mysql57:mysql php:7.3-fpm
进入PHP7.3容器并安装mysql扩展
docker exec -it php-fpm73 bash
apt-get update
apt-get install -y libfreetype6 libfreetype6-dev libmcrypt-dev libmcrypt4 libcurl3-dev
apt install build-essential libprotobuf-dev libboost-dev openssl protobuf-compiler
docker-php-ext-install pdo pdo_mysql
退出PHP7.3容器,重启PHP7.3容器
docker restart php-fpm73安装nginx:
1
2
3
4拉取nginx镜像
docker pull nginx
创建nginx容器
docker run -d --name nginx -p 80:80 -v ~/www/web/:/usr/share/nginx/html -v ~/www/nginx/conf.d:/etc/nginx/conf.d --link php-fpm73:php-fpm nginx安装composer:
1
2
3
4拉取docker镜像
docker pull composer
创建composer容器,并生成Laravel项目
docker run --rm -it --volume ~/www/web/laravel:/app composer create-project laravel/laravel laravel5.7安装phpmyadmin:
1
docker run --name phpmyadmin -d --link mysql57:db -p 8080:80 phpmyadmin/phpmyadmin
Docker删除镜像相关命令:
- 查询镜像:
docker images
- 查询容器:
docker ps -a
- 删除容器:
docker rm 容器id
- 删除镜像:
docker rmi 镜像id
注意:
- 删除前需要确保容器已经停止;
- docker rmi 删除镜像,docker rm 删除容器;
- 必须先删除容器再删除镜像。
docker run 相关命令(通过run命令创建新的容器):
命令格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用选项说明:
-d, --detach=false
,指定容器运行于前台还是后台,默认false-i, --interactive=false
,打开STDIN,用于控制台交互-t, --tty=false
,分配tty设备,支持终端登录,默认false-u, --user=""
,指定容器的用户-a, --attach=[]
,登录容器(必须是docker run -d
启动的容器)-w, --workdir=""
,指定容器工作目录-c, --cpu-shares=0
,设置容器CPU权重,在CPU共享场景使用-e, --env=[]
,制定环境变量,容器中可以使用此环境变量-m, --memory=""
,指定容器内存上限-p, --publish=[]
,指定容器暴露端口-h, --hostname=""
,指定容器主机名-v, --volume=[]
,给容器挂载存储卷,挂载到容器某个目录--volumesfrom=[]
,给容器挂载其他容器上的卷,挂载到容器某个目录--cap-add=[]
,添加权限--cap-drop=[]
,删除权限--cidfile=""
,运行容器后,在指定容器中写入容器PID值,一种典型的监控系统用法--cpuset=""
,设置容器可以使用那些CPU,此参数可以用来容器独占CPU--device=[]
,添加主机设备给容器,相当于设备直通--dns=[]
,指定容器dns服务器--dns-search=[]
,指定容器dns搜索域名,写入到容器/etc/resolv.conf
文件--entrypoint=""
,覆盖image的入口点--env-file=[]
,制定环境变量文件,文件格式每行一个环境变量--expose=[]
,指定容器暴露的端口,即修改镜像暴露端口--link=[]
,制定容器间关联,使用其他容器IP、env等信息--lxc-conf=[]
,指定容器配置文件,只有在指定--exec-driver=lxc
时使用--name=""
,指定容器名字,后续可通过名字管理容器,links特性需要使用名字--net="bridge"
,容器网络设置:- bridge:使用
docker daemon
指定的网桥 - host:容器使用主机网络
- container:NAME_OR_ID:使用其他容器的网络,共享IP和PORT等网络资源
- none:容器使用自己的网络(类似bridge)
- bridge:使用
--privileged=false
,指定容器是否为特权容器,特权容器拥有所有capabilities--restart="no"
,指定容器停止后的重启策略:- no:容器退出时不重启
- on-failure:容器故障退出(返回值非零)时重启
- always:容器退出时总是重启
--rm=false
,指定容器停止后自动删除容器(不支持docker run -d
启动的容器)--sig-proxy=true
,设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP、SIGKILL
不能被代理