docker封装镜像

一、docker镜像的封装(httpd服务)

vim dvd.repo

[rhel7]
name=rhel7
baseurl=http://172.25.20.250/rhel7.3
gpgcheck=0

vim Dockerfile

FROM rhel7
EXPOSE 80
COPY dvd.repo /etc/yum.repos.d/dvd.repo
RUN rpmdb --rebuilddb && yum install -y httpd && yum clean all 
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]

[root@foundation20 web]# docker build -t rhel7:v1 .

二、docker镜像的封装(sshd服务)

vim Dockerfile

FROM rhel7 
EXPOSE 22 
COPY dvd.repo /etc/yum.repos.d/dvd.repo 
RUN rpmdb --rebuilddb && yum install -y openssh-server openssh-clients && yum clean all&& ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ed25519_key -N "" && echo root:westos | chpasswd 
CMD ["/usr/sbin/sshd","-D"]

vim dvd.repo

[rhel7]
name=rhel7
baseurl=http://172.25.20.250/rhel7.3
gpgcheck=0

docker build -t rhel7:v2 .

三、docker镜像的封装(通过supervisord,将httpd和sshd结合起来)

vim dvd.repo

[dvd]
name=rhel7.0
baseurl=http://172.25.254.250/rhel7.0/x86_64/dvd/
gpgcheck=0

[docker]
name=docker
baseurl=http://172.25.254.20/docker
gpgcheck=0

vim Dockerfile

FROM rhel7
EXPOSE 80 22
COPY dvd.repo /etc/yum.repos.d/dvd.repo
COPY supervisord.conf /etc/supervisord.conf
RUN rpmdb --rebuilddb && yum install -y httpd openssh-server supervisor && yum clean all && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" -q && ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" -q && ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" -q && echo root:westos | chpasswd
CMD ["/usr/bin/supervisord"]

vim supervisord.conf

[supervisord]
nodaemon=true

[program:httpd]
command=/usr/sbin/httpd

[program:sshd]
command=/usr/sbin/sshd -D

docker build -t rhel7:v3 .

三、docker镜像的封装(nginx)

vim Dockerfile

FROM rhel7
EXPOSE 80
ADD nginx-1.14.0.tar.gz /mnt
COPY dvd.repo /etc/yum.repos.d/dvd.repo
RUN rpmdb --rebuilddb && yum install -y gcc pcre-devel openssl-devel make && cd /mnt/nginx-1.14.0 && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc  && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio && make && make install && cd .. && rm -fr /mnt/nginx-1.14.0 && yum remove gcc pcre-devel openssl-devel  make -y && yum clean all
FROM rhel7 
COPY --from=build /usr/local/nginx /usr/local/nginx
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

vim dvd.repo

[dvd]
name=rhel7.0
baseurl=http://172.25.254.250/rhel7.2
gpgcheck=0

docker build -t rhel7:v4 .

 

vim Dockerfile

FROM nginx as base

# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
ARG TIME_ZONE

RUN mkdir -p /opt/var/cache/nginx && \
    cp -a --parents /usr/lib/nginx /opt && \
    cp -a --parents /usr/share/nginx /opt && \
    cp -a --parents /var/log/nginx /opt && \
    cp -aL --parents /var/run /opt && \
    cp -a --parents /etc/nginx /opt && \
    cp -a --parents /etc/passwd /opt && \
    cp -a --parents /etc/group /opt && \
    cp -a --parents /usr/sbin/nginx /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libpcre.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libz.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libc.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libdl.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libpthread.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libcrypt.so.* /opt && \
    cp -a --parents /usr/lib/x86_64-linux-gnu/libssl.so.* /opt && \
    cp -a --parents /usr/lib/x86_64-linux-gnu/libcrypto.so.* /opt && \
    cp /usr/share/zoneinfo/${TIME_ZONE:-ROC} /opt/etc/localtime

FROM gcr.io/distroless/base

COPY --from=base /opt /

EXPOSE 80

ENTRYPOINT ["nginx", "-g", "daemon off;"]

vim dvd.repo

[dvd]
name=rhel7.0
baseurl=http://172.25.254.250/rhel7.2
gpgcheck=0

docker build -t rhel7:v5 .

 

实现一个docker封装postgresql集群镜像可以按照以下步骤进行: 1. 安装Docker,如果已经安装Docker可以跳过这一步。 2. 下载postgresql镜像,可以使用以下命令: ``` docker pull postgres ``` 3. 创建docker-compose.yml文件,可以使用以下代码: ``` version: "3" services: db1: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: mydatabase volumes: - ./data/db1:/var/lib/postgresql/data ports: - "5432:5432" db2: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: mydatabase volumes: - ./data/db2:/var/lib/postgresql/data ports: - "5433:5432" db3: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: mydatabase volumes: - ./data/db3:/var/lib/postgresql/data ports: - "5434:5432" ``` 上述代码中,我们创建了三个postgresql容器,并将它们绑定到不同的端口。同时,我们还定义了数据库的用户名、密码和数据库名称,并将数据保存在本地目录的data文件夹中。 4. 运行docker-compose.yml文件,可以使用以下命令: ``` docker-compose up -d ``` 上述命令将启动三个postgresql容器,并将它们绑定到不同的端口。 5. 验证postgresql集群是否正常工作,可以使用以下命令: ``` docker-compose ps ``` 上述命令将显示三个postgresql容器的状态,如果状态为“Up”,则表示集群正常工作。 以上就是一个基本的docker封装postgresql集群镜像的步骤,可以根据实际需要进行修改和优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值