Dockerfile镜像实战

目录

一 构建SSH镜像

1.开启ip转发功能

2. 准备工作目录

3.修改配置文件

 5.启动容器并修改root密码

二 构建Systemctl镜像

1. 准备工作目录

​编辑2.修改配置文件

3.生成镜像

4.启动容器,并挂载宿主机目录挂载到容器中,进行初始化

5.进入容器

 三 nginx镜像

1. 准备工作目录

2.修改配置文件

3.创建新镜像

 四 tomcat镜像

1.准备工作目录

2.修改配置文件

​编辑3.创建新镜像

五 MySQL镜像

1.准备工作目录

2.修改配置文件

3.创建新镜像

4.启动容器并进行初始化

5.进入容器给权限

6.授权远程连接MySQL

7.在客户端连接MySQL容器


一 构建SSH镜像

1.开启ip转发功能

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

sysctl -p

systemctl restart docker

2. 准备工作目录

mkdir /opt/sshd

cd /opt/sshd

3.修改配置文件

vim Dockerfile

#第一行必须指明基于的基础镜像

FROM centos:7

#作者信息

MAINTAINER this is ssh image <hmj>

#镜像的操作指令

RUN yum -y update

RUN yum -y install openssh* net-tools lsof telnet passwd

RUN echo 'abc1234' | passwd --stdin root

RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config #不使用PAM认证

RUN sed -ri '/^session\s+required\s+pam_loginuid.so/ s/^/#/' /etc/pam.d/sshd#取消pam限制

RUN ssh-keygen -t rsa -A #生成密钥认证文件

RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh

EXPOSE 22

CMD ["/usr/sbin/sshd" , "-D"] #/usr/sbin/sshd -D 用于前台启动sshd服务

 5.启动容器并修改root密码

docker run -d -P sshd:centos

docker ps -a | grep sshd        #过滤随机端口号

ssh localhost -p 32768


二 构建Systemctl镜像

1. 准备工作目录

mkdir /opt/systemctl
cd /opt/systemctl


2.修改配置文件

vim Dockerfile

FROM sshd:centos
MAINTAINER this is systemctl image <hmj>
ENV container docker   #除了systemd-tmpfiles-setup.service,删除其它所有文件
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \    
rm -f /lib/systemd/system/multi-user.target.wants/*; \
rm -f /etc/systemd/system/*.wants/*; \
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
#CMD ["/usr/sbin/init"]

3.生成镜像

docker build -t systemd:centos .

4.启动容器,并挂载宿主机目录挂载到容器中,进行初始化

docker run --privileged -d -P -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemd:centos /sbin/init

docker ps -a

#--privileged:使container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。

5.进入容器

docker exec -it a0d624d2bfa9 bash

systemctl status sshd


 三 nginx镜像

1. 准备工作目录

mkdir /opt/nginx
cd /opt/nginx/
cp /opt/nginx-1.12.0.tar.gz /opt/nginx

2.修改配置文件

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 /opt/
#指定工作目录
WORKDIR /opt/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"]
CMD ["/usr/local/sbin/nginx", "-g", "daemon off;"]
 

 

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

 

3.创建新镜像


docker build -t nginx:centos .

docker run -d -P nginx:centos

docker ps -a

测试:http://192.168.27.20:32769


 四 tomcat镜像

1.准备工作目录

mkdir /opt/tomcat
cd /opt/tomcat
cp /opt/jdk-8u91-linux-x64.tar.gz /opt/tomcat
cp /opt/apache-tomcat-8.5.16.tar.gz /opt/tomcat

2.修改配置文件

FROM centos:7
MAINTAINER this is tomcat image <hmj>
ADD jdk-8u91-linux-x64.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv jdk1.8.0_91 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH $JAVA_HOME/bin:$PATH
ADD apache-tomcat-8.5.16.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv apache-tomcat-8.5.16 /usr/local/tomcat
EXPOSE 8080
#CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"] 


3.创建新镜像

docker build -t tomcat:centos .

docker run -d --name tomcat01 -p 1216:8080 tomcat:centos 
测试:http://192.168.27.20:1216


五 MySQL镜像

1.准备工作目录

mkdir /opt/mysqld
cd /opt/mysqld
 

2.修改配置文件

vim Dockerfile

FROM centos:7
MAINTAINER this is mysql image <hmj>
RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make
RUN useradd -M -s /sbin/nologin  mysql
ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
WORKDIR /usr/local/src/mysql-5.7.20/
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 && make && make install
RUN chown -R mysql:mysql /usr/local/mysql/
RUN rm -rf /etc/my.cnf
ADD my.cnf /etc/
RUN chown mysql:mysql /etc/my.cnf
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
WORKDIR /usr/local/mysql/
RUN bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
RUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
EXPOSE 3306
ADD run.sh /usr/local/src
RUN chmod 755 /usr/local/src/run.sh
RUN sh /usr/local/src/run.sh
#CMD ["/usr/sbin/init"]

vim my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

vim run.sh
#!/bin/bash
/usr/local/mysql/bin/mysqld    
systemctl enable mysqld

3.创建新镜像

docker build -t mysql:centos .

4.启动容器并进行初始化

docker run --name=mysql_server -d -P --privileged mysql:centos /usr/sbin/init

5.进入容器给权限

docker ps -a
 

6.授权远程连接MySQL

docker exec -it f9a4d8f6c65f /bin/bash

mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'localhost' identified by 'abc123';
flush privileges;

7.在客户端连接MySQL容器

mysql -h 192.168.27.20 -u root -P 49153 -pabc123


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/631188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Qt-license】误操作qt下载导致只能安装商业版试用十天,无法安装社区版

背景&#xff1a; 原本是为了学习qml&#xff0c;需要下载一个design studio&#xff0c;而这个需要比较新版的安装程序&#xff0c;但新版的安装程序官方都是online安装。于是从官网找下载链接。毕竟是英文的&#xff0c;又心急&#xff0c;误打误撞中我选择了商业版试用。 其…

大屏数据可视化的设计流程及原则

随着数字经济的快速发展和信息化在各行业各领域的深入推进&#xff0c;可视化大屏在各行各业得到越来越广泛的应用。可视化大屏不再只是电影里奇幻的画面&#xff0c;而是被实实在在地应用在政府、商业、金融、制造、交通、城市等各个行业的业务场景中&#xff0c;切切实实地实…

大模型日报-20240118

这里写目录标题 微软TaskWeaver开源框架&#xff1a;携手数据分析与行业定制&#xff0c;打造顶级Agent解决方案在24项场景中优于人类医生&#xff0c;Google团队开发基于自博弈的诊断对话大模型上海人工智能实验室团队开发具有多核光纤单元旋转功能的AI驱动投影断层扫描微软Co…

3DGS 其一:3D Gaussian Splatting for Real-Time Radiance Field Rendering

3DGS 其一&#xff1a;3D Gaussian Splatting for Real-Time Radiance Field Rendering 1. 预备知识1.1 球谐函数1.2 Splatting1.3 α \alpha α blending1.4 多维高斯的协方差矩阵1.4.1 高斯与椭球体的关系1.4.2 世界坐标系下的三维高斯到二维像素平面投影过程 2. 3D Gaussia…

如何绘制出图像的色素分布直方图

效果 如图&#xff0c;可以展示出我们的图像的颜色分布直方图,表明的图像的亮和暗 实现可视化色素分布直方图方法 这里我们对我们的灰色图片和彩色图片进行了直方图显示 import cv2 import matplotlib.pyplot as plt image cv2.imread("test.jpg") # 彩色图片->…

k8s的对外服务---ingress

service的作用体现在两个方面&#xff1a; 集群内部&#xff1a;不断追踪pod的变化。他会更新endpoint中的pod对象&#xff0c;基于pod的IP地址不断变化的一种服务发现机制。 集群外部&#xff1a;类似负载均衡器&#xff0c;把流量IP端口&#xff0c;不涉及转发url(http、htt…

CNAS中兴新支点——软件测试7条原则

软件测试报告 最需要注意的就是测试思考&#xff0c;而非测试执行。而对软件测试菜鸟来说&#xff0c;初入行&#xff0c;首先要知道软件测试的7条原则&#xff0c;了解这些可以让你事倍功半。 软件测试的7条原则 1&#xff09;测试的不可穷尽原则 是的&#xff01;任何产品…

线性代数的学习和整理23:用EXCEL计算 向量/向量组的点乘 (内积) (建设ing)

目录 前言&#xff1a;EXCEL里的的向量相关计算公式 0.1 EXCEL里相关公式 0.2 先说结论&#xff1a;向量组的点乘公式和 向量组的点乘公式不一样 1 向量的点乘 (内积) 1.1 向量的点乘公式 1.2 EXCEL里向量点乘的计算 ​编辑 1.3 向量点乘的性质 1.3.1 内积的公式…

分析Unity崩溃日志(Android)

Unity版本&#xff1a; 这里Unity版本是Unity 2019.4.30f1 崩溃信息&#xff1a; 错误信息如下&#xff1a; Exception Appversion: versionName 1.0.1 versionCode 1 Process: sg.atla.f.c PID: 22716 UID: 10749 Flags: 0x3088be44 Package: sg.atla.f.c v1 (1.0.1) Fo…

[Node]yarn介绍、安装与常用命令 2024最新出炉!

介绍 Yarn 是一个由 Facebook 开发的开源的包管理工具&#xff0c;用于 JavaScript 应用程序的依赖管理。它旨在解决 npm&#xff08;Node Package Manager&#xff09;在处理依赖关系时的速度和安全性问题。Yarn 提供了如下特性&#xff1a; 速度&#xff1a;Yarn 通过缓存已…

系统架构的演变:从单体到微服务的旅程

文章目录 前言一、单体架构简图 二、垂直架构简图 三、水平架构简图 四、面向服务架构&#xff08;SOA&#xff09;简图 五、微服务架构简图 总结 前言 随着信息技术的快速发展&#xff0c;系统架构也在不断演变。从早期的单体架构到现代的微服务架构&#xff0c;每一次的变革都…

mac PyCharm 上传文件到远程服务器+远程服务器下载到本地

1 部署配置 选择SFTP name&#xff1a;test6 输入ssh账号和密码。保存密码和30s心跳。 2 目录映射 Local path&#xff08;本地mac机器&#xff09;&#xff1a;/Users/clevercode/PycharmProjects/test6 Root path&#xff08;远程服务机器&#xff09;&#xff1a;/home/…

【汇编】 13.3 对int iret和栈的深入理解

书中示例 assume cs:codecode segment start:mov ax,csmov ds,axmov si,offset lpmov ax,0mov es,axmov di,200hmov cx,offset end0-offset lpcldrep movsb ;lp到end0的指令传送到0:200处mov ax,0mov es,axmov word ptr es:[7ch*4],200hmov word ptr es:[7ch*42],0 ;设置7c表项…

Kafka-消费者-Consumer Group Rebalance设计

在同一个Consumer Group中&#xff0c;同一个Topic的不同分区会分配给不同的消费者进行消费&#xff0c;那么为消费者分配分区的操作是在Kafka服务端完成的吗?分区是如何进行分配呢?下面来分析Rebalance操作的原理。 方案一 Kafka最开始的解决方案是通过ZooKeeper的Watcher…

dubbo项目发布时Destroyed异常分析

1、问题现象 在发布项目时&#xff0c;elk有打印use dubbo version 2.6.2 is DESTROYED, can not be invoked any more!相关的报错日志&#xff0c;来提示dubbo消费者调用生产者时&#xff0c;生产者服务已经DESTROYED。 ChatGpt可知&#xff1a; 2、问题溯源 com.alibaba.dub…

序列到序列模型

一.序列到序列模型的简介 序列到序列&#xff08;Sequence-to-Sequence&#xff0c;Seq2Seq&#xff09;模型是一类用于处理序列数据的深度学习模型。该模型最初被设计用于机器翻译&#xff0c;但后来在各种自然语言处理和其他领域的任务中得到了广泛应用。 Seq2Seq模型的核…

【软件测试学习笔记6】Linux常用命令

格式 command [-options] [parameter] command 表示的是命令的名称 []表示是可选的&#xff0c;可有可无 [-options]&#xff1a;表示的是命令的选项&#xff0c;可有一个或多个&#xff0c;也可以没有 [parameter]&#xff1a;表示命令的参数&#xff0c;可以有一个或多…

VLAN区域间路由详解

LAN局域网 WAN 广域网 WLAN无线局域网 VLAN:虚拟局域网 交换机和路由器&#xff0c;协同工作后&#xff0c;将原来的一个广播域&#xff0c;切分为多个&#xff0c;节省硬件成本&#xff1b; 配置思路&#xff1a; 交换机上创建vlan交换机上的各个接口划分到对应的vlan中 T…

尚无忧【无人共享空间 saas 系统源码】无人共享棋牌室系统源码共享自习室系统源码,共享茶室系统源码

可saas多开&#xff0c;非常方便&#xff0c;大大降低了上线成本 UNIAPPthinkphpmysql 独立开源&#xff01; 1、定位功能&#xff1a;可定位附近是否有店 2、能通过关键字搜索现有的店铺 3、个性轮播图展示&#xff0c;系统公告消息提醒 4、个性化功能展示&#xff0c;智能…

LED车灯电源解决方案SCT8162x、SCT2464Q、SCT71403Q、SCT71405Q、SCT53600等

随着LED封装技术的成熟和成本的下降&#xff0c;LED车灯渗透率迅速提升。车灯控制技术不断向节能化、智能化和个性化方向发展。ADB大灯配置门槛下探&#xff0c;像素数据急剧增加&#xff0c;LED 数量不断增加&#xff0c;陆续有智能车灯达到百万级像素&#xff0c;且动画效果需…