目录
前言
使用docker搭建PHP开发环境有两种方案:
第一种:创建一个CentOS容器,在CentOS里安装php环境。(虽然简单粗暴,但不推荐,PHP、MySQL、NGINX高度耦合,不好管理与维护)
第二种:PHP、MySQL、NGINX分别创建各自的容器,各个容器共同组成PHP的开发环境。(推荐,便于管理与维护)
本教程基于第二种方案来编写,基于Windows 7 操作系统。
本教程需要先搭建好docker,Windows 7 下搭建docker就不在此处简述,可以参考别的教程来安装。提示一下:Windows 7 只能通过DockerToolbox来搭建docker,docker安装软件Windows系统官方有两种,一种是Windows 10的,另外一种是非Windows 10 的,请注意版本。
目标
部署好mysql,php,nginx,运行一个php程序
安装Docker
看这个:https://yeasy.gitbooks.io/docker_practice/
了解一个概念
安装完docker以后,我们需要了解一个概念,就是现在我们有了两个系统,一个 windows 系统即我们直接操作的图形界面系统,我们称为主机,在主机上安装了VirtualBox,该软件内有 linux 虚拟机,称为docker主机,在 docker 主机中我们之后还会创建 linux 系统,称为容器。
可以通过终端显示的用户名@计算机名来区分
创建资源文件夹
既然安装好了Docker,我们创建容器后,我们需要映射一些配置文件或网站程序文件到宿主机,所以我们创建一些文件夹来存放这些东西,我是创建了以下这些文件夹,你可以按照自己平时的习惯来创建。
1 2 3 4 5 6 7 8 9 |
/data /mysql 存放数据库备份 /php php配置文件 /nginx nginx配置文件 /conf /wwwroot 网站文件 /wwwlogs 日志 /source 程序源代码 /download 下载目录 |
进入docker环境
第一步:点击桌面“Docker Quickstart Terminal”:启动docker,并进入docker命令终端;
第二步:执行命令: docker-machine ssh default
进入default
虚拟机,其中default
是虚拟机的名字,如果你的虚拟机不是这个名字,更换你的虚拟机名字即可。
挂载Windows本地空间
之前,我创建了资源文件夹,目的是用于同步宿主机与docker里的文件数据,现在我要把这个文件夹挂载到docker里,实现文件数据互通。
第一步:打开桌面的“Oracle VM VirtualBox”图标:进入虚拟机管理器:
第二步:设置需要挂载的目录:
右击“default”虚拟机,选择“设置”:
按步骤设置:
添加后记得保存一下:
右击“default”虚拟机,选择“重启”,让配置生效:
验证是否挂载成功
重启完成后,使用命令:docker-machine ssh default
连接我们的 docker 主机,进入到 docker 主机中,也就是终端显示docker@default:~$
的情况,输入命令:mount
可以看到data
在虚拟机内的路径,进入该路径,查看是否读取到我们主机的文件与文件夹
进入 data
目录:cd /data
查看该目录下的文件与文件夹:ls
。
mount
命令没有显示挂载路径,可以重启一下电脑看看。如果挂载不成功
如果使用命令mount
,没有出现上面的结果。而且你的virtualBox是使用toolBox默认安装的,那么,建议下载最新的VirtualBox安装,应该可以解决问题。
部署Mysql
1. 拉取镜像
1 |
docker pull mysql:5.7 |
2. 运行容器
1 2 3 4 5 |
docker run \ -d \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=12345678910 \ --name mysql_57 mysql:5.7 |
参数说明
-d 让容器在后台运行
-p 添加主机到容器的端口映射,前面是映射到本地的端口,后面是需要映射的端口
-e 设置环境变量,MYSQL_ROOT_PASSWORD这里是设置mysql的root用户的初始密码
–name 容器的名字,随便取,但是必须唯一
ps:其实我们可以仅仅使用docker run命令就行了。docker run会先去pull,然后再create。个人习惯先把镜像pull下来,在run的时候会很快。
3. 进入容器
1 |
docker exec -it mysql_57 /bin/bash |
参数说明
-t 在容器里生产一个伪终端
-i 对容器内的标准输入 (STDIN) 进行交互
容器中默认是没有vim的,所以我们首先要安装vim,需要注意的是安装前记得先执行apt-get update命令,不然安装会出现问题。
4. 开启Mysql远程连接
这步你当然也可以不开启,可以使用ssh通道来连接,但是我这里记一笔。这里是5.7,注意了。
1.进入mysql
1 |
mysql -uroot -p12345678910 |
2.选择数据库
1 |
> use mysql |
3.开启远程连接
如果在docker run
执行了设置数据库密码的参数-e MYSQL_ROOT_PASSWORD=设置你的数据库密码
,可以跳过这个隐藏。
记得把“password”换成你的数据库密码
1 2 |
> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; > FLUSH PRIVILEGES; |
4.重启
使用命令:exit
退出mysql容器,执行以下命令,重启mysql容器
1 |
docker restart m_mysql |
5.测试
使用Navicat数据库工具,链接测试:
这样就可以通过公网IP连接了,如果还是不行,请看看防火墙(自身防火墙或者各大云服务商的安全组配置)。
关于docker的IP地址查看,在主机终端下,使用命令:docker-machine ip
即可查看:
部署PHP
1. 拉取镜像
我这里拉取的是PHP 7.2 的镜像,如果需要拉取其它版本的PHP自己修改。
1 |
docker pull php:7.2-fpm |
2. 运行容器
1 2 3 4 5 6 7 8 9 |
docker run \ -d \ -p 9000:9000 \ -v /data/wwwroot:/usr/share/nginx/html \ -v /data/php:/usr/local/etc/php \ --link mysql_56:mysql \ --link myRedis:redis \ --link mongo:mongo \ --name php_72 php:7.2-fpm |
参数说明
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-v 添加目录映射
–-name 容器的名字,随便取,但是必须唯一
–link link 是在两个contain之间建立一种父子关系,父container中的web,可以得到子container db上的信息。
通过link的方式创建容器,我们可以使用被Link容器的别名进行访问,而不是通过IP,解除了对IP的依赖。
3. 创建php文件
在/data/wwwroot文件夹中创建一个文件夹default
,代表一个默认的工作目录,在default
中创建一个index.php
文件:
1 2 3 |
<?php echo "hello PHP! this is docker "; ?> |
这时候你使用以下命令进php容器:
1 |
docker exec -it m_phpfpm /bin/bash |
在/usr/share/nginx/html
文件夹中也能看到我们创建的index.php文件,因为我们设置了目录映射。这样我们就可以直接在宿主机直接更改,而不用进容器修改。
php扩展安装
1.官方扩展安装方法
Docker PHP中安装扩展有几个特殊的命令
- docker-php-source
- docker-php-ext-install
- docker-php-ext-enable
- docker-php-ext-configure
Docker官方文档:https://hub.docker.com/_/php
总结博客版本:Docker php安装扩展步骤详解
安装mongodb扩展
1 2 3 4 5 6 7 8 9 10 11 12 |
docker exec -it php_72 /bin/bash #进入php容器 #如果mongodb使用了密码登录,那么必须开启openssl. #否则会报错: #The SCRAM_SHA_1 authentication mechanism requires libmongoc built with ENABLE_SSL apt-get update apt-get install -y libcurl4-openssl-dev pkg-config libssl-dev #安装mongodb扩展 pecl install mongodb #把扩展配置到php.ini文件 |
测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<?php try{ //mongo是 --link mongo:mongo 右边的名字,代表mongodb的地址 $manager = new MongoDB\Driver\Manager("mongodb://用户名:密码@mongo:27017/库名"); }catch(Exception $e){ var_dump($e->getMessage()); } $bulk = new MongoDB\Driver\BulkWrite(); $bulk->insert(array( 'product_id' => 123, 'product_name' => 'Gregory 格里高利登山包B75蓝色新款', 'product_price' => 2139.00, )); $bulk->insert(array( 'product_id' => 124, 'product_name' => 'Osprey 小鹰登山包Aether AG苍穹 70L蓝色', 'product_price' => 2099.00, )); $bulk->insert(array( 'product_id' => 125, 'product_name' => 'GRANITE GEAR 花岗岩登山包光环追踪85L红色', 'product_price' => 1800.00, )); $bulk->insert(array( 'product_id' => 126, 'product_name' => 'ARCTERYX 始祖鸟登山包Bora AR 50L婆罗洲蓝', 'product_price' => 4450.00, )); try { //test.product:test是库名,product是集合(表)名 $result = $manager->executeBulkWrite('test.product', $bulk); var_dump($result->getInsertedCount()); } catch (Exception $e) { var_dump($e->getMessage()); } |
参考:
PHP7使用MongoDB\Driver\Manager类实现增删改查
基础:PHP连接MongoDB
根据php版本使用不同的mongodb操作库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<?php $config = [ 'username' => 'test1', 'password' => 'test1', 'auth_db' => 'test', 'host' => '127.0.0.1', 'port' => '27017', 'db' => 'test', 'table' => 'foo', // 'db' => 'reporting', // 'table' => 'foo2', ]; $result = null; if (PHP_VERSION_ID < 70000) { try { // $conn = new MongoClient("mongodb://" . $config['username'] . ':' . $config['password'] . '@' . $config['host'] . ':' . $config['port'] . '/' . $config['auth_db']); $conn = new MongoClient("mongodb://" . $config['host'], array( 'username' => $config['username'], 'password' => $config['password'], 'db' => $config['auth_db'], )); $db = $conn->selectDB($config['db']); $mongo = $db->selectCollection($config['table']); $result = $mongo->findOne(); } catch (Exception $e) { var_dump($e->getMessage()); } } else { // $manager = new MongoDB\Driver\Manager("mongodb://" . $config['username'] . ":" . $config['password'] . "@" . $config['host'] . ":" . $config['port'].'/'.$config['auth_db']); $manager = new MongoDB\Driver\Manager("mongodb://" . $config['host'] . ":" . $config['port'] . '/' . $config['auth_db'], [ 'username' => $config['username'], 'password' => $config['password'], 'db' => $config['auth_db'] ]); $filter = []; $options = []; $query = new MongoDB\Driver\Query($filter, $options); //查询请求 var_dump($config['db'] . "." . $config['table']); try { $result = $manager->executeQuery($config['db'] . "." . $config['table'], $query)->toArray(); } catch (Exception $e) { var_dump($e->getMessage()); } } var_dump($result); |
安装redis扩展
1 2 3 4 5 6 |
docker exec -it php_72 /bin/bash #进入php容器 #安装redis扩展 pecl install redis #把扩展配置到php.ini文件 |
测试代码:
1 2 3 4 5 |
<?php $redis = new Redis(); $redis->connect('redis',6379);//redis是--link myRedis:redis 右边的名字,代表redis的地址 $redis->set('name','benz'); echo $redis->get('name'); |
安装swoole扩展
1 2 3 4 5 6 |
docker exec -it php_72 /bin/bash #进入php容器 #安装swoole扩展,有安装提示,如果不是兼容php低版本问题,直接回车默认 pecl install swoole #把扩展配置到php.ini文件 |
配置Nginx
1. 拉取镜像
1 |
docker pull nginx |
2. 运行容器
我们先运行无挂载的容器,拿到nginx的一些配置文件
1 2 3 4 |
docker run \ -d \ -p 80:80 \ --name m_nginx nginx:latest |
成功后,我们进入容器/etc/nginx/
文件夹中,我们需要的挂载nginx.conf
和conf.d
文件夹中的配置文件,因为是我们平时需要频繁更改的配置,所以,我们将他们复制到宿主机上。
退出命令行,不要使用exit,因为exit会让容器停止。这里使用ctrl + p + q
来退出容器。
然后使用docker cp
操作复制出文件
1 2 |
docker cp m_nginx:/etc/nginx/nginx.conf /data/nginx docker cp m_nginx:/etc/nginx/conf.d /data/nginx |
3. 删除之前运行的Nginx容器
1 2 |
docker stop m_nginx docker rm m_nginx |
4. 重新运行Nginx容器
1 2 3 4 5 6 7 8 9 |
docker run \ -d \ -p 80:80 \ -v /data/wwwroot:/usr/share/nginx/html \ -v /data/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \ -v /data/nginx/conf.d:/etc/nginx/conf.d \ -v /data/wwwlogs:/var/log/nginx \ --link m_phpfpm:php \ --name m_nginx nginx:latest |
参数说明:
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-v 添加目录映射,这里最好nginx容器的根目录最好写成和php容器中根目录一样。但是不一点非要一模一样,如果不一样在配置nginx的时候需要注意
-–name 容器的名字
–-link 与另外一个容器建立起联系
5. 编辑配置文件
修改/data/nginx/conf.d/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 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
server { listen 80; server_name localhost; #charset koi8-r; access_log /var/log/nginx/default_nginx.log main; # 修改一: location / { root /usr/share/nginx/html/default; # 修改二:增加 default 文件夹 index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # # 修改三: location ~ \.php$ 去掉 "#" location ~ \.php$ { root /usr/share/nginx/html/default; # 修改四:修改项目根目录 fastcgi_pass php:9000; # 修改五:将"127.0.0.1",修改为php(依据拉取PHP镜像命令,取冒号前的,例如:php:7.2-fpm) fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 修改六:解决访问php文件,报404,或File not found include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } |
配置文件中的fastcgi_pass php:9000;
,因为我们在启动容器的时候–link了php容器,所以这里直接填php,就能找到php的IP,当然你也可以不配置–link,那么你可以这样找到容器IP,再将IP填入。
1 |
docker inspect 容器名或ID | grep "IPAddress" |
最后,测试一下配置是否成功。
Nginx访问PHP文件的File not found错误处理,两种情况
原文地址:https://blog.csdn.net/qq_40460909/article/details/82744178
这个错误很常见,原有有下面两种几种
- php-fpm找不到SCRIPT_FILENAME里执行的php文件
- php-fpm不能访问所执行的php,也就是权限问题
第一种情况:
更改配置文件/data/nginx/nginx.conf
或者/data/nginx/conf.d/default.conf
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
替换成下面
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
然后重新加载nginx配置文件
/etc/init.d/nginx reload
第二种情况
两种解决方法:
第一种,就是把你root文件夹设为其他用户允许
第二种,找到你的php-fpm的配置文件,找到下面这段,把apache替换成你要的用户组
1 2 3 4 |
; RPM: apache Choosed to be able to access some dir as httpd user = www ; RPM: Keep a group allowed to write in log dir. group = www |
MongoDB安装
输入命令,下载mongo官方镜像到服务器上。
1 |
docker pull mongo |
耐心等待下载完成,输入命令查看下载完成的镜像
1 |
docker images |
镜像下载完成,下面就要开始启动容器了。启动容器前,建议大家仔细阅读前面寻找镜像时Docker Hub上关于mongo镜像的详细说明。
在镜像文档里,我们知道了该镜像映射的端口号是27017,配置文件的位置在/data/configdb,数据库文件的位置在/data/db。
我们输入如下命令来启动容器。
1 |
docker run -d -p 27017:27017 -v /data/mongo/configdb:/data/configdb --name mongo mongo:latest |
命令执行完后,输入命令docker ps -a
来查看所有的容器,可以看到mongo已经成功启动。
现在我们使用Robo工具来尝试连接,在Address填上服务器的IP地址,端口号不用改,就用默认的27017。可以连接成功。
开启身份认证
Docker版本的mongo默认不需要身份认证。刚才数据库虽然启动成功了,但是任何人知道ip地址端口号都可以登录进来。显然这样是不安全的。那如何打开身份认证功能呢。
从Docker Hub上mongo镜像的官方文档里,我们可以找到答案,需要在启动容器时加上--auth
命令。
现在我们关闭并删除掉刚才的容器,重新使用身份认证模式启动一个容器。
1 2 3 |
docker stop mongo docker rm mongo docker run -d -p 27017:27017 -v /data/mongo/configdb:/data/configdb --name mongo mongo:latest --auth |
此时再通过Robo连接数据库,发现连接失败。因为我们开启了身份认证模式,但还没有创建用户设置密码。
输入命令进入容器内部的mongo命令行
1 |
docker exec -it mongo mongo admin |
在mongo命令行输入命令创建管理员账户
1 |
db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] }); |
创建好账户之后,我们再尝试使用Robo工具来连接,在Authentication栏目填写上刚才创建的用户名密码,即可连接成功。
创建数据库并设置用户
目前为止我们一直都是在操作mongo自带的admin库。正常情况下是不建议直接使用这个库的。我们需要自己创建数据库并设置新库的用户。
还是先使用docker exec -it mongo mongo admin
命令进入mongo的命令行页面。
使用上一步骤创建的管理员账户进行授权
1 |
db.auth("jsmith","some-initial-password"); |
切换到test库(如不存在会自动创建)
1 |
use test |
创建test库下的用户
1 |
db.createUser({ user: 'test', pwd: '123456', roles: [{ role: "readWrite", db: "test" }] }); |
创建数据库并设置用户完成,现在再尝试使用Robo工具来连接下看看。
将Database和用户名密码改为我们刚才设置的,点击Test显示成功。
保存后直接使用工具进入数据库,可以看见test库。
至此,Docker版本MongoDB简单的安装使用教程就完毕了。
来源:(https://www.jianshu.com/p/2181b2e27021)
报错原因:(https://blog.csdn.net/u013506207/article/details/95524335)
Redis安装
拉取Docker上的Redis
1 |
docker pull reids |
启动镜像
1 |
docker run --name myRedis -p 6379:6379 --restart=always -v /data/redis/data:/data -d redis redis-server --appendonly yes |
命令 | 含义 |
---|---|
-d | 本地运行 |
6379:6379 | 本地端口:Redis容器内部端口 |
-v | 开启文件挂载 |
G:/redisData | Redis持久化数据存放目录 |
redis | docker的镜像名 |
redis-server | redis服务器 |
–appendonly yes | 开启持久化 |
–name | 执行这个运行的名称 |
–restart=always | Docker启动容器就启动 |
Tomcat
1. 拉取镜像
1 |
docker pull tomcat:8.5 |
2. 运行容器
我们先运行无挂载的容器,拿到Tomcat的一些配置文件
1 2 3 4 |
docker run \ -d \ -p 8080:8080 \ --name tomcat_85 tomcat:8.5 |
成功后,我们进入容器/usr/local/tomcat/
文件夹中,我们需要的挂载conf
文件夹中的配置文件以及logs
日志文件夹、webapps
网页应用部署文件夹,因为是我们平时需要频繁更改的配置,所以,我们将他们复制到宿主机上。
退出命令行,不要使用exit,因为exit会让容器停止。这里使用ctrl + p + q
来退出容器。
然后使用docker cp
操作复制出文件
1 2 3 |
docker cp tomcat_85:/usr/local/tomcat/conf /data/tomcat/ docker cp tomcat_85:/usr/local/tomcat/logs /data/tomcat/ docker cp tomcat_85:/usr/local/tomcat/webapps.dist /data/tomcat/webapps |
3. 删除之前运行的Tomcat容器
1 2 |
docker stop tomcat_85 docker rm tomcat_85 |
4. 重新运行Tomcat容器
1 2 3 4 5 6 7 |
docker run \ -d \ -p 8080:8080 \ -v /data/tomcat/conf:/usr/local/tomcat/conf \ -v /data/tomcat/logs:/usr/local/tomcat/logs \ -v /data/tomcat/webapps:/usr/local/tomcat/webapps \ --name tomcat_85 tomcat:8.5 |
参数说明:
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-v 添加目录映射,这里最好nginx容器的根目录最好写成和php容器中根目录一样。但是不一点非要一模一样,如果不一样在配置nginx的时候需要注意
-–name 容器的名字
–-link 与另外一个容器建立起联系
安装phpMyAdmin
安装个phpMyAdmin,顺便测试一下MYSQL
1. 下载解压
下载地址:https://www.phpmyadmin.net/
解压到/data/wwwroot/default
,并将文件夹重命名为phpMyAdmin
2. 配置phpMyAdmin
phpMyAdmin根目录下,找到config.sample.inc.php,用文本编辑器打开文件。
在host
中填入数据库的访问IP,这里填Mysql容器的内网IP。获取Mysql容器的内网IP,可以使用进入Mysql容器后,使用命令:cat /etc/hosts
查看。
3. 访问
访问http://外网IP/phpMyAdmin/index.php (http://192.168.99.100/phpMyAdmin/)
报错:mysqli_real_connect(): (HY000/2002): Connection refused
将phpMyAdmin/libraries/config.default.php
中的$cfg['Servers'][$i]['host'] = 'localhost';
改为 $cfg['Servers'][$i]['host'] = '172.17.0.2';
将phpMyAdmin/config.sample.inc.php
中的$cfg['Servers'][$i]['host'] = 'localhost';
改为 $cfg['Servers'][$i]['host'] = '172.17.0.2';
即把localhost
改为MySql容器内部IP。
docker 中安装PHP扩展(提示缺少MySQL相关驱动)
原文地址:https://www.cnblogs.com/lglblogadd/p/9173627.html
也或者需要安装PHP其它扩展。
docker 中安装PHP扩展,可以通过两种方式实现
第一种:进入PHP容器,执行命令:pecl pdo_msql;
第二种:进入PHP容器,执行命令:docker-php-ext-install mysqli pdo pdo_mysql
;(这里安装mysqli 、pdo 、pdo_mysql 三个扩展);
如果报 /usr/local/bin/docker-php-ext-enable: cannot create /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini: Directory nonexistent
解决方案:
直接在/usr/local/etc/php
目录下面新建 conf.d
目录和对应的docker-php-ext-pdo_msql.ini
文件
其中docker-php-ext-pdo_msql.ini
的内容为:
extension=pdo_mysql.so
不管使用哪种方法,最后重启一下PHP容器。
如何获取 docker 容器(container)的 ip 地址
原文地址:https://blog.csdn.net/sannerlittle/article/details/77063800
1. 进入容器内部后
1 |
cat /etc/hosts |
会显示自己以及(– link)软连接的容器IP
2.使用命令
docker inspect --format '{{ .NetworkSettings.IPAddress }}'
或
docker inspect
或
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
3.可以考虑在 ~/.bashrc 中写一个 bash 函数:
1 2 3 |
function docker_ip() { sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' $1 } |
source ~/.bashrc
然后:
1 |
$ docker_ip <container-ID> |
参考结果:172.17.0.6
4.要获取所有容器名称及其IP地址只需一个命令。
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
如果使用docker-compose命令将是:
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
5.显示所有容器IP地址:
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)