dockerFile构建镜像与swarm集群配置使用

dockerFile构建镜像

CentOS镜像模版

dockerfile-centos

# 依据哪个镜像创建 
From centos:7.6.1810
# 指定容器内部使用语言 
ENV LANG="en_US.UTF-8" 
ENV LC_ALL="en_US.UTF-8"
# 使用亚洲/上海时区 
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
# 创建工作目录 
RUN mkdir -p /data/apps /data/data /data/logs;ln -s /data/apps /apps
# 安装字体 
RUN yum install -y epel-release 
RUN yum groupinstall -y "fonts" 
RUN yum install -y kde-l10n-Chinese

# 安装openssl等依赖包 
RUN yum install -y openssl openssl-devel 
RUN yum install -y crontabs cronolog ntp

# 安装数据库依赖 
RUN yum install -y mariadb-libs 
RUN ln -s /usr/lib64/mysql/libmysqlclient.so.18 /usr/lib64/libmysqlclient_r.so.16
RUN yum install -y  gcc cmake 
RUN yum install -y lrzsz telnet net-tools file bind-utils less 
RUN yum install -y jq xml2; yum clean all 
RUN yum install -y expat-devel apr-devel ghostscript ghostscript-devel
# 运行容器时的默认命令 
CMD ["/bin/bash"]

构建命令:

docker build -f dockerfile-centos -t lagou/centos/7.6/centos . 
docker run  --rm -it lagou/centos/7.6/centos

JDK镜像模板

dockerfile-jdk

FROM  lagou/centos/7.6/centos
ENV JAVA_HOME="/apps/jdk"
ENV PATH=${JAVA_HOME}/bin:$PATH
ADD ./jdk-8u251-linux-x64.tar.gz /apps/
RUN ln -s /apps/jdk1.8.0_251 /apps/jdk
ADD ./UnlimitedJCEPolicyJDK8/US_export_policy.jar /apps/jdk/jre/lib/security/
ADD ./UnlimitedJCEPolicyJDK8/local_policy.jar /apps/jdk/jre/lib/security/
ADD ./msyhbd.ttf /apps/jdk/jre/lib/fonts/
ADD ./msyh.ttf /apps/jdk/jre/lib/fonts/


CMD ["/bin/bash"]

#下载jce_policy-8.zip并解压到当前目录 
wget http://pkgs-linux.cvimer.com/jdk/1.8/jce_policy-8.zip 
unzip jce_policy-8.zip
#下载jdk-8u251-linux-x64.tar.gz、msyh.ttf、msyhbd.ttf 
wget http://pkgs-linux.cvimer.com/jdk/1.8/jdk-8u251-linux-x64.tar.gz
wget http://pkgs-linux.cvimer.com/fonts/msyh.ttf
wget http://pkgs-linux.cvimer.com/fonts/msyhbd.ttf
#构建 
docker build -f dockerfile-jdk -t lagou/centos/7.6/jdk/1.8/jdk .

Tomcat镜像模版

dockerfile-tomcat

FROM lagou/centos/7.6/jdk/1.8/jdk
ENV TOMCAT_HOME="/apps/tomcat"
ENV PATH=${TOMCAT_HOME}/bin:$PATH
RUN yum install -y gcc make expat-devel apr-devel; yum clean all ; rm -rf /var/cache/yum/*
ADD ./apr-1.6.5.tar.gz /root/
RUN cd /root/apr-1.6.5 && ./configure && make && make install && rm -rf /root/apr*
ADD ./apr-util-1.6.1.tar.gz /root/
RUN cd /root/apr-util-1.6.1 && ./configure --with-apr=/usr/local/apr && make && make install && rm -rf /root/apr*
ADD ./apache-tomcat-7.0.93.tar.gz /data/apps/
RUN ln -s /apps/apache-tomcat-7.0.93 /apps/tomcat
RUN cd /apps/tomcat/bin; tar xf tomcat-native.tar.gz; cd /apps/tomcat/bin/tomcat-native-1.2.21-src/native && \     ./configure --with-apr=/usr/local/apr && make && make install
CMD ["/bin/bash"]

wget http://pkgs-linux.cvimer.com/apr/1.6.5/apr-1.6.5.tar.gz
wget http://pkgs-linux.cvimer.com/apr/1.6.1/apr-util-1.6.1.tar.gz
wget https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.93/bin/apache-tomcat-7.0.93.tar.gz

docker build -f dockerfile-tomcat -t lagou/centos/7.6/jdk/1.8/tomcat/7.0.9/tomcat .
docker run --rm -it --network host lagou/centos/7.6/jdk/1.8/tomcat/7.0.9/tomcat
#进入Docker
 cd apps 
 cd tomcat/bin
 ./startup.sh

自定义Hot镜像模板

vi dockerfile-hot

ADD ./hot.jar /apps/
EXPOSE 8080
ENTRYPOINT ["java","-jar","/apps/hot.jar"]
docker build -f dockerfile-hot -t lgedu/hot:1.0 .
docker run --rm -it --network host lgedu/hot:1.0

#进入容器
cd /apps;
java -jar hot.jar

swarm集群

192.168.70.100操作

#拉取镜像
docker pull swarm

docker swarm init --advertise-addr 192.168.70.100

#复制该命令返回的信息在另一台集群执行
docker swarm join-token manager
docker swarm join-token worker

192.168.70.101操作

docker pull swarm

#添加该节点为worker
docker swarm join --token SWMTKN-1-4aglt75ids5dx789m1839bb8hvyvn31u0kf6vylg95ymb57bjg-4jujwq3s53zwxv7swm9bus3nv 192.168.70.100:2377

192.168.70.100操作

docker node ls

安装Docker Compose

curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

  1. 将可执行权限应用于二进制文件:

    chmod +x /usr/local/bin/docker-compose
    
  2. 添加到环境中

    #ln -s : 软链接 
    ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    
    

4.测试安装

docker-compose --version

docker-compose.yml

模板文件是使用Compose的核心,默认的模板文件名称为docker-compose.yml,格式为YAML格式。

version: '2.0' #版本2.0
services:      #定义服务
  nginx:       #Nginx容器    
    image: nginx:1.18.0  #Nginx:latest 镜像 先拉镜像 指定镜像的版本
    ports:
      - 80:80     #映射端口
      - 433:433
    volumes:      #挂载数据   宿主机目录(一定要存在):容器的目录
      - /data/log:/var/log/nginx
      - /data/www:/var/www
      - /etc/letsencrypt:/etc/letsencrypt
 

案例

version: "2.0"
services:
  nginx:
    image: nginx:1.18.0
    restart: always
    container_name: nginx
    environment:
      - TZ=Asia/beijing
    ports:
      - 80:80
      - 443:443
    volumes:
      - /docker/nginx/log:/var/log/nginx
      - /docker/nginx/www:/etc/nginx/html
      - /etc/letsencrypt:/etc/letsencrypt
  mysql:
    image: mysql:5.7.30 
    restart: always
    container_name: mysql5.7
    ports:
      - 13306:3306
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --default-time-zone=+8:00 
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
    volumes:
       - "/docker/mysql/db:/var/lib/mysql"
  redis:
    image: redis:5.0.9
    container_name: redis
    environment:
      - TZ=Asia/beijing
    ports:
      - 6379:6379
    volumes:
      - /docker/redis/data:/data

运行

docker-compose up -d

与Swarm一起使用Compose

version: "3.0"
deploy:      
    mode: replicated
    replicas: 2

去掉不支持的:

restart: always 
container_name: nginx

version: "3.0"
services:
  nginx:
    image: nginx:1.18.0
    environment:
      - TZ=Asia/beijing
    ports:
      - 80:80
      - 443:443
    volumes:
      - /docker/nginx/log:/var/log/nginx
      - /docker/nginx/www:/etc/nginx/html
      - /etc/letsencrypt:/etc/letsencrypt
    deploy:
      mode: replicated
      replicas: 2
  mysql:
    image: mysql:5.7.30 
    ports:
      - 13306:3306
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --default-time-zone=+8:00 
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
    volumes:
       - "/docker/mysql/db:/var/lib/mysql"
    deploy:
      mode: replicated
      replicas: 2
  redis:
    image: redis:5.0.9
    environment:
      - TZ=Asia/beijing
    ports:
      - 6379:6379
    volumes:
      - /docker/redis/data:/data
    deploy:
      mode: replicated
      replicas: 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值