0
点赞
收藏
分享

微信扫一扫

组织一个多容器项目docker-compose


文章目录

  • 1.容器的网络配置情况
  • 2.实际操作
  • 3.docker-compose教程

1.容器的网络配置情况

  • 图1
  • 在容器2中可以直接访问容器1,因为他们有共同的掩码
  • 主机eth0通过路由的方式与docker0网卡进行通信
  • 图2
  • 外部想要从nginx中获取数据,首先需要到nginx的80端口,若是php文件,接着在php容器中解析,如果是读取数据库的文件,最后要到mysql中获取数据;
    总共需要两个link,将php映射到nginx,将mysql映射到php中;docker run -it --name php --link munginx:nginx,docker run -it --name mysql --link php:php

组织一个多容器项目docker-compose_nginx

2.实际操作

  • 图1的相关操作

下面是nginx的容器的run和link方法
(1)
root@ubuntu:/# docker run -d -p80:80 --name munginx nginx
root@ubuntu:/# docker exec -it munginx bash
root@b03e4fe98393:/# cat /etc/hosts
。。。。
172.17.0.2	b03e4fe98393

在容器alpine中,通过curl访问nginx容器,alpine是最小的linux系统
root@ubuntu:/# docker run -dit alpine
root@ubuntu:/# docker exec -it 47db684c3721 sh
/ # apk add curl
/ # curl 172.17.0.2

(2)通过--link参数将另一个容器映射到本容器里面,将alpine连接到munginx上(就是将munginx的映射到alpine)
munginx作为域名,可以被解析到nginx的IP
root@ubuntu:/# docker run -d -p80:80 --name munginx nginx
root@ubuntu:/# docker run -dit --link munginx:munginx alpine    ##在alpine镜像上启动nginx容器,等价于:docker run -dit alpine --link munginx:munginx sh
root@ubuntu:docker exec -it 32 sh
/ # apk add curl
/ # curl munginx 
/ # cat /etc/hosts

  • 图2的相关操作:使用docker-compose,不使用link

root@ubuntu:/home/jiwangreal/dockertest# mkdir conf
root@ubuntu:/home/jiwangreal/dockertest# mkdir html
root@ubuntu:/home/jiwangreal/dockertest# cd html/
root@ubuntu:/home/jiwangreal/dockertest/html# vim index.html

监测php是否运行成功
root@ubuntu:/home/jiwangreal/dockertest/html# vim test.php  

mysql的数据库访问
root@ubuntu:/home/jiwangreal/dockertest/html# vim mysql.php

========上述三个文件的设置结果=======
root@ubuntu:/home/jiwangreal/dockertest/html# cat index.html 
index.html
root@ubuntu:/home/jiwangreal/dockertest/html# cat mysql.php 
<?php
$dbhost = "mysql";
$dbuser = "root";
$dbpass = "123456";
 
// 创建连接
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
 
// 检测连接
if (!$conn) {
    die("mysql not connect " . mysqli_error());
} 
echo "mysql connected";
mysqli_close($conn);
?>
root@ubuntu:/home/jiwangreal/dockertest/html# cat test.php 
<?php
phpinfo();
========上述三个文件的设置结果=======


root@ubuntu:/home/jiwangreal/dockertest/conf# vim nginx.conf
。。。
location /		##监听/目录,若没有匹配的话,将该目录/usr/share/nginx/html的文件映射出来
{
	root /usr/share/nginx/html
	index index.html index.htm;
}
。。。
。。。
location ~ \.php$     ##表示以php结尾的文件
{
	fastcgi_pass php:9000; ##php是个域名
	fastcgi_index index.php;
	##在php容器下寻找/var/www/html/目录下的$fastcgi_script_name php的脚本文件
	fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
	include fastcgi_params;
}

  • 下面的/root目录用/home/jiwangreal/dockertest/代替

组织一个多容器项目docker-compose_php_02

(1)在根目录下面写docker compose,会自动拉起镜像和启动容器
vim docker-compose.yml
version: "3"
service:  ##指定服务
	nginx:
		images: nginx:alpine             镜像名:版本号
		ports:##相当于-p参数
		- 80:80
		volumes:  ##相当于-v参数,目录的映射
		- /root/html:/usr/share/nginx/html
		- /root/conf/nginx.conf:/etc/nginx/nginx.conf
	php:
		image: devilbox/php-fpm:5.2-work-0.89
		volume:
		- /root/html:/var/www/html
	mysql:
		image: mysql:5.6
		enviroment:
		- MYSQL_ROOT_PASSWORD=123456

(2)指定docker-compose为后台启动
docker-compose up -d

  • 访问逻辑解释:

3.docker-compose教程

  • ref:Docker Compose
  • 安装教程见:为Ubuntu系统添加新的普通用户
  • 若alpine很慢,见:alpine切换源 安装慢 apk add很慢

docker-compose常用命令

  • ref:docker-compose常用命令-详解

docker-compose 命令 --help                     获得一个命令的帮助
docker-compose up -d nginx                     构建启动nignx容器
docker-compose exec nginx bash                 登录到nginx容器中
docker-compose down                            此命令将会停止 up 命令所启动的容器,并移除网络
docker-compose ps                              列出项目中目前的所有容器
docker-compose restart nginx                   重新启动nginx容器
docker-compose build nginx                     构建镜像 
docker-compose build --no-cache nginx          不带缓存的构建
docker-compose top                             查看各个服务容器内运行的进程 
docker-compose logs -f nginx                   查看nginx的实时日志
docker-compose images                          列出 Compose 文件包含的镜像
docker-compose config                          验证文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。 
docker-compose events --json nginx             以json的形式输出nginx的docker日志
docker-compose pause nginx                     暂停nignx容器
docker-compose unpause nginx                   恢复ningx容器
docker-compose rm nginx                        删除容器(删除前必须关闭容器,执行stop)
docker-compose stop nginx                      停止nignx容器
docker-compose start nginx                     启动nignx容器
docker-compose restart nginx                   重启项目中的nignx容器
docker-compose run --no-deps --rm php-fpm php -v   在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器

docker默认位置:/var/lib/docker/containers/
日志是以-json.log结尾的

  • 参考


举报

相关推荐

0 条评论