二十八、Docker (4)

news2025/1/14 1:02:04

🌻🌻 目录

  • 一、Dockerfile入门
    • 1.1 Dockerfile 常用命令
    • 1.2 Dockerfile 搭建 jdk 环境
    • 1.3 Dockerfile 搭建 tomcat 环境镜像
    • 1.4 Dockerfile 创建微服务 java 镜像
  • 二、使用Nexus搭建Docker镜像私有仓库
    • 2.1 安装 Nexus
    • 2.2 访问配置 Nexus
    • 2.3 配置 Docker 服务器连接到 Nexus 私有仓库
    • 2.4 连接 docker 私服镜像仓库及使用

一、Dockerfile入门

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像(centos或者ubuntu,即操作系统级别的镜像)并最终创建一个新的镜像。

  1. 对于开发人员:可以为开发团队提供一个完全一致的开发环境;
  2. 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;
  3. 对于运维人员:在部署时,可以实现应用的无缝移植。

1.1 Dockerfile 常用命令

命令作用
FROM image_name:tag定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name声明镜像的创建者
ENV key value设置环境变量 (可以写多条),可以在创建容器的时候传递参数给容器
RUN command是Dockerfile的核心部分,执行系统指令(可以写多条)
ADD source_dir/file dest_dir/file将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir设置工作目录
CMD指定容器启动时运行的命令

1.2 Dockerfile 搭建 jdk 环境

  • 第一步:在宿主机创建jdk存储目录
mkdir   /usr/local/test001

在这里插入图片描述

  • 第二步:下载 jdk-8u131-linux-x64.tar.gz 并上传到服务器(宿主机)中的/usr/local/test001目录

在这里插入图片描述
在这里插入图片描述

  • 第三步:在/usr/local/test001目录下创建文件Dockerfile
touch Dockerfile

 vi  Dockerfile 
FROM centos:7                                 			 #设置基础镜像名称
MAINTAINER daniel                               		 #设置镜像作者
WORKDIR  /usr/local                                 			 #设置工作目录
RUN  mkdir /usr/local/java                      	      #在镜像创建目录
ADD  jdk-8u151-linux-x64.tar.gz  /usr/local/java/         #复制宿主机jdk安装包到镜像(自动解压)
ENV JAVA_HOME /usr/local/java/jdk1.8.0_151               #设置环境变量JAVA_HOME
ENV CLASSPATH $JAVA_HOME/lib                             #设置环境变量 CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH                            #设置环境变量 PATH

在这里插入图片描述

  • 第四步:执行命令构建镜像
 docker build -t='jdk1.8' .

注意后边的空格和点(.表示当前目录,也就是Dockerfile所在目录),不要省略

在这里插入图片描述

  • 第五步:查看镜像是否建立完成
docker images

在这里插入图片描述

创建一个j1容器

验证是否成功构建

在这里插入图片描述

1.3 Dockerfile 搭建 tomcat 环境镜像

  • 第一步:在宿主机创建tomcat存储目录
 mkdir   /usr/local/dockertomcat

在这里插入图片描述

  • 第二步:上传安装包到服务器
    下载 jdk-8u131-linux-x64.tar.gz、apache-tomcat-8.5.15.tar.gz并上传到服务器(宿主机)中的/usr/local/dockertomcat目录

在这里插入图片描述

  • 第三步:在/usr/local/dockertomcat目录下创建文件Dockerfile
touch Dockerfile

vi  Dockerfile 

在这里插入图片描述

FROM centos:7                                                   #设置基础镜像名称
MAINTAINER daniel                                               #设置镜像作者
WORKDIR  /usr/local                                                   #设置工作目录
RUN  mkdir /usr/local/app                                        #在镜像创建目录
ADD  jdk-8u151-linux-x64.tar.gz  /usr/local/app/                  #复制宿主机jdk安装包到镜像(自动解压)
ADD apache-tomcat-9.0.21.tar.gz  /usr/local/app/
ENV JAVA_HOME /usr/local/app/jdk1.8.0_151                         #设置环境变量JAVA_HOME
ENV CATALINA_HOME /usr/local/app/apache-tomcat-8.5.15
ENV CLASSPATH $JAVA_HOME/lib                                     #设置环境变量 CLASSPATH
ENV PATH $JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH                  #设置环境变量 PATH
EXPOSE 8080                                                        #暴露8080端口
CMD ["/usr/local/app/apache-tomcat-8.5.15/bin/catalina.sh","run"]  #容器启动时运行tomcat

在这里插入图片描述

  • 第四步:执行命令构建镜像
 docker build -t='tomcat8.5' .

注意后边的空格和点(.表示当前目录),不要省略

在这里插入图片描述

  • 第五步:查看镜像是否建立完成
docker images

在这里插入图片描述

  • 第六步:使用镜像创建运行容器
docker run -di --name=t1 -p 8081:8080 tomcat8.5

创建失败问题:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused “exec: “/usr/local/app/apache-tomcat-8.5.15/bin/catalina.sh”: stat /usr/local/app/apache-tomcat-8.5.15/bin/catalina.sh: no such file or directory”: unknown.

在这里插入图片描述
解决:

在这里插入图片描述

在这里插入图片描述

  • 第七步:访问测试tomcat http://192.168.188.181:8088/

在这里插入图片描述

1.4 Dockerfile 创建微服务 java 镜像

  • 第一步、 项目案例下载
  1. 注意:EurekaServer01服务器单独部署,暂不使用集群,需要修改属性配置文件

在这里插入图片描述

#服务器端口号
server:
  port: 10086
  #应用名称
spring:
  application:
    name: EurekaServer
  #是否将自己注册到Eureka服务中,本身就是所有无需注册
eureka:
  client:
    register-with-eureka: false
  #是否从Eureka中获取注册信息
    fetch-registry: false
  #EurekaServer注册中心地址
    service-url:
      defaultZone: http://localhost:10086/eureka #注册中心访问地址
  1. 注意:pom.xml一定要增加springboot 的maven编译插件,要不然打包不能使用
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

在这里插入图片描述

  1. 编译工程EurekaServer01执行构建指令

在这里插入图片描述

  1. 得到构建好的jar包:EurekaServer01-1.0.jar

在这里插入图片描述

拷贝到本地磁盘测试可以如下

java -jar EurekaServer01-1.0.jar

在这里插入图片描述

浏览器输入: http://localhost:10086/

在这里插入图片描述

  • 第二步:在宿主机创建jar存储目录
 mkdir   /usr/local/dockerspringboot

在这里插入图片描述

上传编译构建好的jar包 EurekaServer01-1.0.jar 到该目录

在这里插入图片描述

  • 第三步:在/usr/local/dockerspringboot目录下创建文件Dockerfile
 vi  Dockerfile 

在这里插入图片描述

# 基于哪个镜像
FROM jdk1.8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
ADD EurekaServer01-1.0.jar /app.jar
# 声明需要暴露的端口
EXPOSE 10086
# 配置容器启动后执行的命令
CMD ["java","-jar","/app.jar"]

在这里插入图片描述

在这里插入图片描述

  • 第四步:执行命令构建镜像
docker build -t='springboot1' .

注意后边的空格和点(.表示当前目录),不要省略

在这里插入图片描述

  • 第五步:查看镜像是否建立完成
docker images

在这里插入图片描述

  • 第六步:使用镜像创建运行容器
docker run -di --name=s1 -p 10086:10086 springboot1
  • 第七步:访问测试 http://192.168.188.181:10086/

在这里插入图片描述

二、使用Nexus搭建Docker镜像私有仓库

Docker镜像创建好了,怎么样实现在不同的用户和服务器之间共享镜像,Docker官方提供了DockerHub可以允许用户把自己创作的镜像上传到服务器,但是对于包含企业私有应用的镜像不允许暴露给公共用户,这个时候就需要企业搭建自己的私有镜像存储仓库。
nexus是一款非常优秀的私有仓库搭建软件,可以很方便的搭建私有镜像仓库。

为了下面更好的操作,再搭建一台服务器(虚拟机)

在这里插入图片描述

进入后:

在这里插入图片描述

下载地址:https://www.sonatype.com/download-oss-sonatype

在这里插入图片描述

2.1 安装 Nexus

  1. 安装nexus需要首先安装jdk环境 ( jdk安装参考 )

下载 jdk-8u151-linux-x64.tar.gz

java -version

在这里插入图片描述

  1. 上传 nexus-3.15.2-01-unix.tar.gz 安装包到服务器

在这里插入图片描述

  1. 创建目录、解压缩 nexus
mkdir /usr/local/nexus
tar xvf nexus-3.15.2-01-unix.tar.gz -C /usr/local/nexus

在这里插入图片描述

  1. 启动nexus
cd  /usr/local/nexus/nexus-3.15.2-01/bin
./nexus start

在这里插入图片描述

  1. 启动后稍等大于1分钟,查看端口监听
netstat -antp|grep 8081

端口监听问题:

-bash: netstat: command not found

在这里插入图片描述

解决:

yum install -y net-tools

在这里插入图片描述

成功解决,说明linux中没有安装这个东东,需要安装下哈

在这里插入图片描述

2.2 访问配置 Nexus

  1. 访问地址 http://ip:8081 我的是:http://192.168.188.182:8081/

在这里插入图片描述

出现登陆框,输入账号 admin 密码 admin123

在这里插入图片描述

在这里插入图片描述

登录成功

  1. 配置nexus创建Docker私有仓库
  • 进入系统设置界面

在这里插入图片描述

点击Repositories

在这里插入图片描述

点击创建仓库(Create Repository

在这里插入图片描述

选择要创建的仓库类型(docker(hosted)

在这里插入图片描述

配置docker仓库信息

在这里插入图片描述

在这里插入图片描述

查看仓库详情

在这里插入图片描述

  • 仓库地址:192.168.188.182:8086
  • 仓库账号: admin
  • 密码: admin123

2.3 配置 Docker 服务器连接到 Nexus 私有仓库

步骤一:

进入上面Dockerfile (之前)的那台服务器(192.198.188.181)
关闭并且删除启动过的容器,如下:

在这里插入图片描述
步骤二:

  1. 修改 /etc/docker/daemon.json 配置docker私有仓库
    编辑:
vi  /etc/docker/daemon.json

在这里插入图片描述

{
  "registry-mirrors": ["https://fln0ctgy.mirror.aliyuncs.com"],
   "insecure-registries":["192.168.188.182:8086"]
}

在这里插入图片描述

  1. 刷新守护进程、重启dcker
systemctl daemon-reload
systemctl restart docker

在这里插入图片描述

2.4 连接 docker 私服镜像仓库及使用

  1. 登录私服镜像仓库
docker login 192.168.188.182:8086
  • 输入账号:admin
  • 密码:admin123
  • 提示,Login Succeeded 表示登录成功

在这里插入图片描述

  1. 为镜像打一个tag标签
    在上传镜像之前需要先打一个tag,用于版本标记。
    格式是这样的:
docker tag <imageId or imageName> <nexus-hostname>:<repository-port>/<image>:<tag> 

例如:

docker tag springboot1 192.168.188.182:8086/springboot1

在这里插入图片描述

  1. 上传(推送)镜像
docker push 192.168.188.182:8086/springboot1

在这里插入图片描述

登录私服查看,则已经推送成功 http://192.168.188.182:8081/

在这里插入图片描述

  1. 删除推送的镜像和之前的同一个镜像,为了看看是否能拉取成功

在这里插入图片描述

  1. 下载镜像
    从私服中下载镜像也很简单,执行以下命令即可
docker pull 192.168.188.182:8086/springboot1:latest

注意:确保docke服务器和私服在同一网段、或者能够进行通信。

在这里插入图片描述

  1. 搜索镜像(大家看到可以再琢磨哈)
  • 搜索镜像也与之前的类似,如下:
docker search 192.168.188.182:8086/springboot1
  • 就可以搜索带有springboot1的镜像了:

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

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

相关文章

自动驾驶助力智慧港口建设,景联文科技提供数据标注服务

“在无人集卡出现以前&#xff0c;岸桥式起重机需要把停靠在岸边的船舶上数百个集装箱全部吊起&#xff0c;放到一旁的集装箱卡车上&#xff0c;运向堆场&#xff0c;等待集装箱卸货后再进行下一次往返工作。为保证工作效率&#xff0c;需要上百位司机驾驶着集卡在港口中来回往…

拉伯证券|磷酸铁锂电池在储能市场的应用有哪些?

时隔四个月&#xff0c;中国有色金属工业协会硅业分会重启硅料报价。本周&#xff0c;单晶复投料成交均价为17.82万元/吨&#xff0c;单晶细密料成交均价为17.62万元/吨。综合其他组织报价数据&#xff0c;硅料已全线跌破20万元/吨&#xff0c;作为对比&#xff0c;上一年10月底…

Java入门知识以及细节(1.3w字笔记)

欢迎来到我的主页&#xff1a;【一只认真写代码的程序猿】 本篇文章收录于专栏【Java入门学习】 如果这篇文章对你有帮助&#xff0c;希望点赞收藏加关注啦~ 目录 Java和C的区别 Java中的运算 Math.random()函数 跳出多重循环的两种break方法 数组中的使用以及Java中的…

windows下图像标注软件Labelme安装及使用教程

文章目录一.Labelme简介二.安装labelme三.使用labelme进行图像标注一.Labelme简介 LabelMe 是一个用于在线图像标注的Javascript标注工具。与传统图像标注工具相比&#xff0c;其优势在于我们可以在任意地方使用该工具。此外&#xff0c;它也可以帮助我们标注图像&#xff0c;…

TCP 三次握手 四次挥手

请描述TCP三次握手和四次挥手&#xff0c;这是非常常考的一道面试题。 大家不要去追求过多的细节&#xff0c;你如果是搜一些文章或者答案的话&#xff0c;它会给你描述的很细。 然后我/你看到会很懵&#xff0c;因为这里面如果讲细了的话&#xff0c;需要很多这种网络请求的相…

Go语言基础2

一、注释 单行注释 // 我是单行注释多行注释 /* 我是多行注释 我是多行注释 我是多行注释 */二、变量 1. var name type (声明变量时将变量的类型放在变量的名称之后) var&#xff0c;声明变量的关键字name&#xff0c;变量的名字type&#xff0c;变量的类型 eg:单个定义…

FFMPEG完美入门资料---003---FFmpeg 架构

3.1 FFmpeg 文件结构 libavformat 主要存放 ffmpeg 支持的 各种编解码器 的实现及 ffmpeg 编解码 功能相关的数 文件简要说明allcodecs.c简单的注册类函数avcodec.h编解码相关结构体定义和函数原型声明dsputil.c限幅数组初始化dsputil.h限幅数组声明imgconvert.c颜色空间转换相…

剑指offer(C++)-JZ63:买卖股票的最好时机(一)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 假设你有一个数组prices&#xff0c;长度为n&#xff0c;其中prices[i]是股票在第i天的价格&#xff0c;请…

FreeMen正式上线,让工作更自由

“让工作更自由”&#xff0c;开屏页上六个大字宣告着FreeMen正式上线&#xff0c;全新的FreeMen APP也正式登录各大手机应用市场。作为一款专注IT技术者圈子的APP&#xff0c;其上线标志着助力程序员职业道路上向前迈进一大步。 FreeMen相关负责人表示&#xff0c;基本上10个职…

基于java+Springboot操作系统教学交流平台详细设计实现

基于javaSpringboot操作系统教学交流平台详细设计实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源…

【C语言】使用指针时出现的各种错误总结以及处理方法

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;《初识C语言》 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录前言一、什么是野指针二、野指针出现…

Redis主从哨兵集群

主从 主从同步原理 1.全量同步 1.从节点刚连接到主节点时&#xff0c;主动请求数据同步 2.主节点判断是否是第一次同步&#xff0c;如果是&#xff0c;就返回主节点的数据版本信息 3.随后&#xff0c;主节点执行bgsave&#xff0c;生成RDB文件&#xff0c;并发送给从节点 4.这…

Java时间类

时间在Java中是两个类 Date 和 Calendar Date类 Date是在Java.util包中的也就是工具包。 测试 输出的是当前的系统时间 修改idea中的注释的颜色&#xff1a; 是date不是data package org.data; import java.util.Date; public class Test { public static void main(…

【Oracle】20230106PLSQL中文不显示,全部为?解决流程

问题&#xff1a;查询的表中有中文数据&#xff0c;全部显示为&#xff1f; 解决途径1&#xff1a;修改注册表以及环境变量&#xff08;改系统变量&#xff01;不要只改用户变量&#xff09; Oracle使用——PLSQL的中文乱码显示全是问号_海蓝树的博客-CSDN博客_plsql无法显示…

上线网站详细介绍(服务器购买-域名申请-SSL证书申请)

文章目录上线之前的准备工作&#xff0c;通俗的来讲&#xff1a;服务器是什么-云服务器购买域名解释-域名备案-域名如何申请①什么是域名&#xff0c;为什么要域名&#xff1f;②为什么非要域名备案和不备案的区别&#xff1f;③自己的主机怎么备案-自己的电脑可以作为服务器吗…

系分架构 - 软件架构设计

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录系分&架构 - 软件架构设计考点摘要概念架构的 4 1 视图软件架构风格经典五大架构风格调用/返回风格独立构件风格虚拟机风格仓库风格层次架构风格二层C/S架构三层C/S架构B/S架构混合架构风格闭环控制架…

Linux 软件管理 RPM 管理工具

概念引入 &#xff1a; # 首先提出一个问题&#xff0c;我们在 Linux 操作系统中是如何 安装软件的 &#xff1f;&#xff1f; >>> 在 Linux 系统中&#xff0c;安装软件是有三种方式 >>> 第一种 &#xff1a; RPM 管理工具 第二种 &#xff1a; …

如何在新环境接手项目?(上)【洞见2】

01、世界真实情况根据IDC机构在2022年统计显示&#xff0c;截止2021年我国中小企业数量已达到4881万家&#xff0c;同比增长8.5%。中小企业的行业分布不均匀&#xff0c;超过70%的中小企业分布于专业服务业&#xff08;含互联网和科技服务&#xff09;、物流批发、零售和制造业…

剑指offer----C语言版----第十一天

目录 1. 数值的整数次方 1.1 运行超时的思路 1.2 思路一: 快速幂 (递归实现) 1.3 思路二: 快速幂 (迭代实现) 1. 数值的整数次方 原题链接: 剑指 Offer 16. 数值的整数次方 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-f…

web3学习:什么是以太坊

以太网是“世界的计算机”&#xff0c;这是以太坊平台的一种常见描述。这是什么意思呢&#xff1f;让我们首先从关注计算机科学的描述开始&#xff0c;然后对以太坊的功能和特性进行更实际的解读&#xff0c;并将其与比特币和其他分布式账本技术&#xff08;简单起见&#xff0…