二十八、Docker (4)

一、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

在这里插入图片描述

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

  • 第三步:在/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

在这里插入图片描述

在这里插入图片描述

  • 第三步:在/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的镜像了:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Daniel521-Spark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值