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)