1.在window,要先用docker-machine 開啟一台vm,start 後 用docker-machine env default 會給環境變數
然後設定完後docker就可以連上vm
2.laradock must put the document in C:\Users\xxx
3.
网络
在这个例子中,演示了如何使用自定义网络,并利用服务名通讯。
首先,在 docker-compose.yml
文件尾部,全局 networks
部分定义了两个自定义网络,分别名为 frontend
,backend
。
networks:
frontend:
backend:
每个自定义网络都可以配置很多东西,包括网络所使用的驱动、网络地址范围等设置。但是,你可能会注意到这里 frontend
、backend
后面是空的,这是指一切都使用默认,换句话说,在单机环境中,将意味着使用 bridge
驱动;而在 Swarm 环境中,使用 overlay
驱动,而且地址范围完全交给 Docker 引擎决定。
然后,在前面services
中,每个服务下面的也有一个 networks
部分,这部分是用于定义这个服务要连接到哪些网络上。
services:
nginx:
...
networks:
- frontend
php:
...
networks:
- frontend
- backend
mysql:
...
networks:
- backend
在这个例子中,
nginx
接到了名为frontend
的前端网络;mysql
接到了名为backend
的后端网络;- 而作为中间的
php
同时连接了frontend
和backend
网络上。
连接到同一个网络的容器,可以进行互连;而不同网络的容器则会被隔离。
所以在这个例子中,nginx
可以和 php
服务进行互连,php
也可以和 mysql
服务互连,因为它们连接到了同一个网络中;
而 nginx
和 mysql
并不处于同一网络,所以二者无法通讯,这起到了隔离的作用。
处于同一网络的容器,可以使用服务名访问对方。比如,在这个例子中的 ./site/index.php
里,就是使用的 mysql
这个服务名去连接的数据库服务器。
<?php
$servername = "mysql";
$username = "root";
$password = "Passw0rd";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("连接错误: " . $conn->connect_error);
}
echo "<h1>成功连接 MySQL 服务器</h1>";
phpinfo();
?>
关于 Docker 自定义网络,可以看一下官方文档的介绍:
https://docs.docker.com/engine/userguide/networking/dockernetworks/#/user-defined-networks
关于在 Docker Compose 中使用自定义网络的部分,可以看官方这部分文档:
https://docs.docker.com/compose/networking/
來源:https://hub.docker.com/r/twang2218/lnmp-php/
4.docker 裡用root
docker exec -u 0 -it mycontainer bash