docker-compose 单机容器编排
docker-compose 单机容器编排
dockerfile:先配置好文件,然后build,镜像------->容器
docker-conpose既可以基于dockerfile,也可以基于镜像,一件事拉起镜像和容器。
docker-compose 核心就是yml文件,可以定义容器的一切,通过yml配置,直接运行容器。
docker:主要服务于单节点,docker没有统一对外提供服务的端口和配置 docker一般都是内部访问,无需使用https
如果对外以集群和分布式的方式提供统一访问的端口,k8s+ingress。
docker-compose的常用命令:
build:构建服务
ps:列出由docker-compose编排的容器
up:创建和启动容器
top:显示容器的进程
logs:查看容器的输出日志
down:删除容器,网络,数据卷
exec:在容器中执行命令
stop/start/retart:停止,启动,重启容器
scale:指定容器服务启动的数量(副本)
vim docker-compose.yml
version '3'
#指定docker-compose的文件版本
service:
#定义需要运行的服务
nginx:
container_name: web1
#指定创建容器的名字
hostname: nginx
#容器的主机名
build:
#指定构建nginx容器的上下文以及dockerfile
context: /opt/compose-nginx/nginx
#指定dockerfile的位置,如果用镜像换成image: 镜像名称
dockerfile: Dockerfile
ports:
#直接指定宿主机和容器的端口映射关系
- 1213:80
tworks:
#声明给容器指定的ip地址
mynet:
#自定义网络
ipv4_address: 172.18.0.10
volumes:
- /opt/compose-nginx/www:/usr/local/nginx/html
networks:
#创建自定义网桥配置接口
mynet:
driver: bridge
#声明网段的类型
ipam:
#ip地址的管理和配置,声明网段
config:
#子网配置,指定ip地址范围
- subnet: 172.18.0.0/16
docker-compose -f docker-compose.yml up -d
docker-compose:命令开头,使用docker-compose进行容器编排
-f:使用特定的compose的模板文件,一般都用docker-compose.yml
-p:project-name:指定项目名称,如果不加,会使用目录名称
-d:后台运行
privileged: true
虽然我们登录容器,显示的是root用户,伪管理员,一旦privileged: true,容器内的root用户和宿主机的root用户,拥有一样的权限,生产者能不给就不给
创建三个目录mysql nginx php
nginx
vim Dockerfile
vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
root html;
index index.php index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
fastcgi_pass 172.111.0.30:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
}
}
cd /mysql?
vim Dockerfile
php
cd /opt/lnmp
version: '3'
services:
nginx:
hostname: nginx
build:
context: /opt/lnmp/nginx/
dockerfile: Dockerfile
ports:
- 1314:80
container_name: nginx_server
networks:
lnmp:
ipv4_address: 172.111.0.10
volumes:
- "nginx-data:/usr/local/nginx/html"
mysql:
hostname: mysql
build:
context: /opt/lnmp/mysql/
dockerfile: Dockerfile
ports:
- 3306:3306
container_name: mysql_server
networks:
lnmp:
ipv4_address: 172.111.0.20
privileged: true
volumes:
- "mysql-data:/usr/local/mysql/"
php:
hostname: php
build:
context: /opt/lnmp/php/
dockerfile: Dockerfile
ports:
- 9000:9000
container_name: php_server
networks:
lnmp:
ipv4_address: 172.111.0.30
volumes:
- "nginx-data:/usr/local/nginx/html/"
- "mysql-data:/usr/local/mysql/"
networks:
lnmp:
driver: bridge
ipam:
config:
- subnet: 172.111.0.0/16
volumes:
nginx-data:
mysql-data:
docker-compose -f docker-compose.yml up -d
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!