docker-compose 单机容器编排

docker-compose 单机容器编排

Dockerfile:先配置好的文件,然后bulid,镜像容器。

docker-compose 既可以基于dockerfile,也可以基于镜像,一键式拉起镜像和容器。

docker-compose 核心就是yml文件,可以定义容器的一切。通过yml配置,直接运行容器。

什么场景下我们用到docker

docker:单节点。docker没有同一对外提供的端口和配置。docker一般都是内部访问。无需使用https。如果要对外和分布式的方式提供统一访问的端口,k8s+ingress。

docker-compose的常用命令:

build:构建服务

ps:列出由docker-compose编排出来的容器

up:创建和启动容器

top:显示容器的进程

logs:查看容器的输出日志

down:删除容器,网络,数据卷。

exec:在容器当中执行命令。

stop/start/restart

scale:指定容器启动的副本(一模一样的容器)nginx3

安装docker-compose

mv docker-compose-linux-x86_64 docker-compose

mv docker-compose /usr/local/bin/

chmod 777 /usr/local/bin/docker-compose

docker-compose -v

查看结构:

yum -y install tree

创建简单nginx

mkdir compose-nginx

cd compose-nginx/

mkdir nginx

vim Dockerfile

FROM centos:7

RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make && useradd -M -s /sbin/nologin nginx

ADD nginx-1.22.0.tar.gz /usr/local/src/

WORKDIR /usr/local/src/nginx-1.22.0

RUN ./configure

--prefix=/usr/local/nginx

--user=nginx

--group=nginx

--with-http_stub_status_module && make -j 4 && make install

ENV PATH /usr/local/nginx/sbin:$PATH

EXPOSE 80

CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

配置访问页面

mkdir www

echo "this is nginx1" > index.html

在nginx和www目录下创建docker-compose.yml

vim docker-compose.yml

version: '3'

#指定docker-compose的文件版本

services :

#定义需要运行的服务

nginx:

container_name: web1

#指定创建容器的名字。

hostname: nginx

#指定容器的主机名

build:

#指定构建nginx容器的.上"下文以及dockerfile

context: /opt/compose-nginx/nginx

#指定dockerfile的位置,如果用镜像换成image:

dockerfile: Dockerfile

ports:

#直接指定宿主机和容器的端口映射关系

  • 1213:80

networks:

#声明给容器指定的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 pull centos:7

docker-compose -f docker-compose.yml up -d

docker-compose:命令的开头,使用docker-compose进行容器编排

-f:使用特定的compose的模版文件, -般都用docker-compose.yml

-p:project-name:指定项目名称,如果不加,会使用目录名称

-d:后台运行

只能要在 docker-compose.yml文件下才能用命令

进入直接 docker exec -it web1 bash

docker-compose最直接的 作用就是一键拉起镜像容器。不需要docker run

实验:直接拉起lnmp

mkdir lnmp

nginx:

mysql:

php:

vim docker-compose.yml

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

  • "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:

privileged: true

#虽然我们登录容器,显示的是root用户,伪管理员,一旦privileged: true,容内的root用户和宿主机的root用户,拥有一-样的权限,在生产中能不给就不给。

设置网络:

启动

docker-compose -f docker-compose.yml up -d

进入数据库,打开远程连接权限

create database wordpress;

grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';

grant all privileges on *.* to 'root'@'%' identified by '123456';

flush privileges;

docker-compose 特点:

单机容器编排构建,可以实现以及是的拉起镜像和创建容器。

yml文件的格式:

version: '3'

解析代码的版本,声明解释器

services:

声明服务,可以由多个services

networks:

写在服务配置,赋予容器ip当中

写在定格,大的模块,创建网段!

volumes:

nginx nginx-data: /usr/local/nginx

volumes:

nginx-data:

mysql-data:

docker-compose核心就是yml文件, yml就是把docker run的命令写成代码。

相关推荐
努力进修5 分钟前
跨地域传文件太麻烦?Nginx+cpolar 让本地服务直接公网访问
运维·nginx·cpolar
Qayrup14 分钟前
docker 搭建私有仓库,推送并拉取
运维·docker·容器
闪耀星星19 分钟前
debian elctron-builder
运维·debian
会飞的土拨鼠呀19 分钟前
Debian 12 笔记本合盖不休眠设置指南
运维·debian
郭庆汝31 分钟前
docker拉取英伟达官方cuda11.8镜像
docker·cuda11.8
天下不喵2 小时前
Ubuntu24.04安装Docker过程记录
docker
黑黍2 小时前
如何在k8s中配置并使用nvidia显卡
云原生·容器·kubernetes
梁正雄3 小时前
6、prometheus资源规划
运维·服务器·服务发现·prometheus·监控
晨曦之旅3 小时前
零成本体验云计算!阿贝云免费服务器深度测评
运维·服务器·云计算
工具人55553 小时前
Linux 抓取 RAM Dump 完整指南
linux·运维·安全