docker容器之dockerfile镜像(代码片段)

人间失格727 人间失格727     2022-12-20     554

关键词:

一.创建ssh镜像

1.创建镜像目录

2. 创建编写dockerfile文件 

3. 生成镜像 

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

二. 构建Systemctl镜像

1.创建镜像目录方便管理

 2.创建编写dockerfile文件

3. 生成镜像

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

5.进入容器 

 或者用第二种方法:

三、构建nginx镜像 

1.创建镜像目录方便管理

 2.创建编写dockerfile文件

 3. 编写脚本

4.生成镜像

 

 

5.浏览器访问测试

四、构建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.创建编写dockerfile文件

vim Dockerfile

FROM centos:7
MAINTAINER this is tomcat image <clj>
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 
 

4.浏览器访问测试

 
http://192.168.80.10:1216
 

五、构建mysql镜像

1.创建镜像目录方便管理

mkdir /opt/mysqld
cd /opt/mysqld
 

2.创建编写dockerfile文件

vim Dockerfile

FROM centos:7
MAINTAINER this is mysql image <clj>
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"]

3.编写my.cnf脚本

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
 

4.编写run.sh脚本


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

 5.创建新镜像、启动容器,并进行初始化

docker build -t mysql:centos .
#启动容器,并进行初始化
docker run --name=mysql_server -d -P --privileged mysql:centos /usr/sbin/init &
 

6.进容器给权限

docker ps -a
CONTAINER ID   IMAGE          COMMAND             CREATED          STATUS          PORTS                     NAMES
f9a4d8f6c65f   mysql:centos   "/usr/sbin/init"    17 seconds ago   Up 16 seconds   0.0.0.0:49153->3306/tcp   mysql_server
 

7.进入容器,授权远程连接 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;
 

8.在客户端连接mysql容器

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

docker容器之镜像管理,端口映射,容器互联(代码片段)

docker镜像的分层Dockerfile中的每个指令都会创建一个新的镜像层;镜像层将会被缓存和复用;当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效;某一层的镜像缓存失效... 查看详情

docker容器之镜像管理端口映射容器互联(代码片段)

docker镜像的分层?Dockerfile中的每个指令都会创建一个新的镜像层;?镜像层将会被缓存和复用;?当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效;?某一层的镜像缓存失... 查看详情

容器技术之dockerfile

...6327.html;今天我们来聊一聊docker的另一个制作镜像的方式dockerfile;  什么是dockerfile?所谓dockerfile就是用来描述docker镜像制作过 查看详情

docker容器高级篇(代码片段)

文章目录一、Dockerfile文件1.dockerfile基础知识2.docker执行dockerfile的大致流程3.dockerfile常用保留字4.dockerfile构建镜像示例二、dockernetwork1.dockernet常用指令2.docker的网络模式三、docker-compose容器编排1.下载安装2.三个步骤3.compose常用命令... 查看详情

docker学习笔记——镜像制作(dockerfile)(代码片段)

...绍3.制作基础镜像4.应用镜像制作使用commit提交镜像5.使用Dockerfile创建应用镜像1)Dockerfile关键字2)Dockerfile应用案例6.容器镜像在dockerhost存储位置1)写时复制与用时分配2)Overlay及Overlay27.docker存储状态1)运行前2)启动后3)下载镜像后4)运... 查看详情

docker系列教程之四dockerfile入门(代码片段)

在上一篇的文章中,我们把 Docker 容器的工作流程剖析的十分清楚了,我们大体可以知道 Docker 组件协作运行容器可以分为以下几个过程:Docker 客户端执行 dockerrun 命令Dockerdaemon 发现本地没有我们需... 查看详情

docker容器dockerfile镜像实战案例(代码片段)

dockerfile镜像实战案例一、构建SSH镜像二、构建Systemctl镜像三、构建nginx镜像四、构建tomcat镜像五、构建mysql镜像一、构建SSH镜像①创建镜像目录方便管理mkdir/opt/sshdcd/opt/sshd②创建编写dockerfile文件vimDockerfile#第一行必须指明基于的... 查看详情

docker:dockerfile使用介绍(代码片段)

...:Docker入门教程介绍了Docker基本概念,其中镜像、容器和Dockerfile。我们使用Dockerfile定义镜像,依赖镜像来运行容器,因此Dockerfile是镜像和容器的关键,Dockerfile可以非常容易的定义镜像内容,同时在我们后期的微服务实践中,Do... 查看详情

docker容器dockerfile镜像实战案例(代码片段)

文章目录构建SSH镜像Systemctl镜像nginx镜像tomcat镜像mysql镜像构建SSH镜像mkdir/opt/sshdcd/opt/sshdvimDockerfile#第一行必须指明基于的基础镜像FROMcentos:7#作者信息MAINTAINERthisissshimage<wl>#镜像的操作指令RUNyum-yupdateRUNyum-yinstallopenssh* 查看详情

docker的数据管理镜像dockerfile创建(代码片段)

...的创建1、基于已有镜像创建2、基于本地模板创建3、基于Dockerfile创建1.联合文件系统(UnionFS)2.镜像加载原理3.Dockerfile4.Docker镜像结构的分层5.Dockerfile操作指令4、dockerfile案例一、docker的数据管理管理Docker容器中 查看详情

docker入门之三:docker构建私有镜像入门到实践(代码片段)

docker的简单使用1.docker构建私有镜像1.1.使用Dockerfile定制镜像1.2.构建镜像1.docker构建私有镜像1.1.使用Dockerfile定制镜像在空目录创建文件,命名为Dockerfile[hadoop@hadoop101file]$cddocker/[hadoop@hadoop101docker]$mkdirmydockerfile[hadoop@hadoop101docker]$to... 查看详情

dockerfile构建过程(代码片段)

...令都会创建一个新的镜像层,并对镜像进行提交docker执行dockerfile的大致流程第一步,docker从基础镜像运行一个容器第二步,执行一条指令并对容器做出修改第三步,执行类似dockercommit的操作提交一个新的镜像层第四步,docker再基于刚提... 查看详情

docker基础之镜像详解与dockerfile及优化~(代码片段)

一、镜像分成1.1、镜像的原理镜像包含以下:①:基础镜像(baseimage):比如centos7②:依赖环境:比如gcc、gcc-c++、make、jdk、jre、gd③:应用服务软件包④:应用服务的相关配置文件⑤:启动方... 查看详情

docker基础之镜像详解与dockerfile及优化~(代码片段)

一、镜像分成1.1、镜像的原理镜像包含以下:①:基础镜像(baseimage):比如centos7②:依赖环境:比如gcc、gcc-c++、make、jdk、jre、gd③:应用服务软件包④:应用服务的相关配置文件⑤:启动方... 查看详情

云原生之使用docker部署python应用(代码片段)

...python文件1.创建目录2.编辑test.py文件四、构建镜像1.编辑dockerfile文件2.使用dockerfile构建镜像五、运行镜像容器1.运行python_app容器2.查看容器状态六、访问Python应用一、检查系统版本1.检查系统版本[root@n 查看详情

docker实践之03-dockerfile指令详解(代码片段)

目录FROM,指定基础镜像RUN,执行命令COPY,复制文件ADD,复制并解压文件CMD,容器启动命令ENTRYPOINT,入口点ENV,设置环境变量ARG,构建参数VOLUME,定义匿名卷EXPOSE,声明端口WORKDIR,指定工作目录USER,指定当前用户HEALTHCHECK,健... 查看详情

容器安全之dockerfile安全扫描(代码片段)

一、Dockerfile扫描工具checkovhadolint(构建最佳实践Docker镜像。)也可以考虑dockerscan二、checkovDockerfileConfigurationScaning-checkovcheckov不仅可以扫描dockfile,也可以扫描Cloudformation、AWSSAM、Kubernetes、Helmcharts、Kustomize、镜像等。Checkov支持对Doc... 查看详情

浅谈docker之docker常用命令及dockerfile基础命令(记录)

一、Docker镜像相关命令查看本地镜像dockerimages  从远程仓库下载镜像dockerpullmysql:5.7搜索mysql5.7镜像  dockersearchmysql:5.7  删除镜像dockerrmimysql:5.7  修改本地镜像名字 dockertagmysql:5.7mysql:v1  查看... 查看详情