Docker compose

发布时间:2023年12月17日

yaml 文件

11:00

YAML 文件格式及编写注意事项 ? * * * *
YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 XML数据描述语言,语法比 XML 简单的很多。YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来。

使用 YAML 时需要注意下面事项:
●大小写敏感
●通过缩进表示层级关系
●不支持制表符 tab 键缩进,只能使用空格缩进
●缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
●用 # 号注释
●符号字符后缩进1个空格,如冒号 : ?、逗号 , ?、横杠 - ? ?
●如果包含特殊字符用单引号('')引起来会作为普通字符串处理,双引号(""): 特殊字符作为本身想表示的意思
name: "Hi,\nTom"


数据结构:
●对象映射: 键值对的字典
animal: pets

●序列数组: 一组按次序排列的列表
- Cat
- Dog
- Goldfish

["Cat", "Dog", "Goldfish"]

●布尔值
debug: true
debug: false


示例:
# yaml 格式
languages: ? ? ? #序列的映射
? - Java
? - Golang
? - Python
websites: ? ? ? ?#映射的映射
? cpu: 2
? memory: 1024M
? swap: 2048M
? disk: 60G?


键:{值}

# Json 格式
{
? languages: [
? ? 'Java',
? ? 'Golang',
? ? 'Python'?? ?
? ],
? resources: {
? ? cpu: '2',
? ? memory: '1024M',
? ? swap: '2048M',
? ? disk: '60G'
? }
}
?

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: 指定启动的容器数量(副本)。

准备依赖文件
mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwroot
cd /opt/compose_nginx/nginx
cp nginx-1.12.0.tar.gz ./

vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

vim Dockerfile
#基于基础镜像
FROM centos:7
#用户信息
MAINTAINER this is nginx image <hmj>
#添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
#上传nginx软件压缩包,并解压
ADD nginx-1.12.0.tar.gz /usr/local/src/
#指定工作目录
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
#指定http和https端口
EXPOSE 80
EXPOSE 443
//方法一:
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf?? ??? ??? ?#关闭 nginx 在后台运行
#添加宿主机中run.sh到容器中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
//方法二:
ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]

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
COPY nginx.conf /usr/local/nginx/conf/
ADD wordpress-6.4.2-zh_CN.tar.gz /usr/local/nginx/html
RUN chmod 777 -R /usr/local/nginx/html/
EXPOSE 80
VOLUME [ "/usr/local/nginx/html/" ]
CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]
?

编写配置文件docker-compose.yml
vim /opt/compose_nginx/docker-compose.yml


version: '3'
services:
? nginx:
? ? container_name: web1
? ? hostname: nginx
? ? build:
? ? ? context: ./nginx
? ? ? dockerfile: Dockerfile
? ? ports:
? ? ? - 1216:80
? ? ? - 1217:443
? ? networks:
? ? ? lnmp:
? ? ? ? ipv4_address: 172.18.0.10
? ? volumes:
? ? ? - ./wwwroot:/usr/local/nginx/html
networks:
? lnmp:
? ?driver: bridge
? ?ipam:
? ? ?config:
?? ? ? - subnet: 172.18.0.0/16


cd /opt/compose_nginx/
docker-compose -f docker-compose.yml up -d

安装



-f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME :指定项目名称,默认使用目录名称
-d :在后台运行
?

docker ps -a
CONTAINER ID ? IMAGE ? ? ? ? ? ? ? ? COMMAND ? ? CREATED ? ? ? ? ? ? ?STATUS ? ? ? ? ? ? ?PORTS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NAMES
b48dceee248f ? compose_nginx_nginx ? "/run.sh" ? About a minute ago ? Up About a minute ? 0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp ? compose_nginx_nginx_1

cd /opt/compose_nginx/
docker-compose ps?? ??? ??? ??? ??? ?#必须在docker-compose.yml所在目录执行此命令

Docker-compose部署LNMP

vim nginx.conf

? ? ? ? charset utf-8;
? ? ? ? location / {
? ? ? ? ? ? root ? html;
? ? ? ? ? ? index ?index.html index.php;
? ? ? ? }
? ? ? ? error_page ? 500 502 503 504 ?/50x.html;
? ? ? ? location = /50x.html {
? ? ? ? ? ? root ? html;
? ? ? ? }
? ? ? ? location ~ \.php$ {
? ? ? ? ? ? root ? ? ? ? ? html;
? ? ? ? ? ? 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;
? ? ? ? }
}
}

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
COPY nginx.conf /usr/local/nginx/conf/
ADD wordpress-6.4.2-zh_CN.tar.gz /usr/local/nginx/html
RUN chmod 777 -R /usr/local/nginx/html/
EXPOSE 80
VOLUME [ "/usr/local/nginx/html/" ]
CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]
?

文章来源:https://blog.csdn.net/m0_70766460/article/details/134944851
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。