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 部分定义了两个自定义网络,分别名为 frontendbackend

networks:
    frontend:
    backend:

每个自定义网络都可以配置很多东西,包括网络所使用的驱动、网络地址范围等设置。但是,你可能会注意到这里 frontendbackend 后面是空的,这是指一切都使用默认,换句话说,在单机环境中,将意味着使用 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
 

 

arrow
arrow
    全站熱搜

    學習程式 發表在 痞客邦 留言(0) 人氣()