二十八、Docker (4)
创始人
2024-05-08 04:57:52
0

🌻🌻 目录

  • 一、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 Dockerfilevi  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 Dockerfilevi  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编译插件,要不然打包不能使用
org.springframework.bootspring-boot-maven-plugin

在这里插入图片描述

  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  :/: 

例如:

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的镜像了:

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...