docker-compose Demo

Eg1

version: '3.6'
services:
	nginx-service:
		image:
		network_mode: bridge
		container_name: nginx-web1
		networks: #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有两块网卡
    	- front
      - backend
		expose:
			- 80
			- 443
		ports:
			- "80:80"
			- "443:443"

	tomcat-service-app1:
		container name: tomcat-appl
		networks: #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有一块网卡
      - backend
		volumes:
			- /data/xxx:/data/tomcat/xxx
		image: 
		expose:
			- 8080
			- 8443
		ports:
			- "8080:8080"
			- "8443:8443"

	tomcat-service-app2:
		container name: tomcat-app2
		image: 
		volumes:
			- /data/xxx:/data/tomcat/xxx
		networks: #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有一块网卡
      - backend
		expose:
			- 9080
			- 9443
		ports:
			- "9080:8080"
			- "9443:8443"

networks:
  front: #自定义前端服务网络
    driver: bridge
  backend:  #自定义后端服务的网络
    driver: bridge
  default: #使用已经存在的docker0默认172.17.0.1/16的网络
    external:
      name: bridge

Eg2

FROM centos:7.6.1810 #在整个dockfile文件中,除了注释之外的第一行,要是from,用于指定父镜像
ADD #用于添加宿主机本地的文件、目录、压缩等资源到镜像里面去,会自动解压tar.gz格式的压缩包,不会自动解压zip
MAINTAINER   #(镜像的作者信息)
LABEL #设置镜像的属性标签
COPY #用于添加宿主机本地的文件、目录、压缩等资源到镜像里面去,不会解压任何压缩包
ENV #设置容器环境变量
USER nginx #指定运行操作的用户
RUN yum install vim unzip -y && cd /etc/nginx  #执行shell命令,但是一定要以非交互式的方式执行
VOLUME #定义volume
WORKDIR #用于定义工作目录
EXPOSE 80 #生命要把容器的某些端口映射到宿主机
CMD  #镜像启动为一个容器时候的默认命令或脚本, CMD ["/bin/bash"] 
ENTRYPOINT #也可以用于定义容器在启动时候默认执行的命令或者脚本,如果是和CMD命令混合使用的时候,会将CMD的命令当做参数传递给ENTRYPOINT后面的脚本,可以在脚本中对参数做判断并相应的容器初始化操作。
EG:
    1.ENTRYPOINT ["top", "-b"] 
    CMD ["-c"]
		==  ENTRYPOINT ["top", "-b", "-c"]
		2.ENTRYPOINT ["nginx"] 
    CMD ["-g","daemon off;"]
		==  ENTRYPOINT ["nginx", "-g", "daemon off;"]
		3.ENTRYPOINT ["docker-entrypoint.sh"]
		CMD ["mysqld"]
		=ENTRYPOINT ["docker-entrypoint.sh","mysqld"]
		解释:ENTRYPOINT(脚本) + CMD(当做参数传递给ENTRYPOINT)


====
#
# FIRST NGINX DOCKERFILE
FROM centos:7.8.2003
MAINTAINER "BIRKHOFF 807722920@qq.com"
RUN yum install -y epel-release && yum install -y  make zlib zlib-devel gcc-c++ libtool openssl openssl-devel lrzsz wget tree iproute net-tools iotop
ADD nginx-1.16.1.tar.gz /usr/local/src
RUN cd /usr/local/src/nginx-1.16.1 && ./configure --prefix=/usr/local/nginx --with-http_sub_module && make && make install
RUN cd /usr/local/nginx
#ADD nginx.conf /usr/local/nginx/conf/nginx.conf
RUN useradd nginx -s /sbin/nologin
RUN ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx
RUN echo "BIRKHOFF TEST DOCKERFILE NGINX PAGE" > /usr/local/nginx/html/index.html
EXPOSE 80 443
CMD ["nginx","-g","daemon off;"]


#docker build -t harbor.xks.com/winnie/nginx-web1:1.16.1 .
====
#CENTOS DOCKERFILE
FROM centos:7.8.2003
LABEL MAINTAINER="BIRKHOFF 807722920@qq.com"
RUN yum install -y epel-release && yum install -y  make zlib zlib-devel gcc-c++ libtool openssl openssl-devel lrzsz wget tree iproute net-tools iotop

====
*private:私有仓库,无论上传镜像还是下载镜像,都需要提前登录之后才能上传或者下载
*public:公有仓库,如果要上传需要登录成功后才能上传,如果仅仅是下载镜像就不需要登录即可下载(在dockerd的service文件添加--insecure-registry 172.31.6.102)

 

posted @ 2025-09-16 13:22  しみずよしだ  阅读(9)  评论(0)    收藏  举报