欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用Dockerfile脚本创建镜像

程序员文章站 2024-03-12 11:21:32
...

1、使用Dockerfile脚本创建镜像

(1)创建目录

mkdir -p /usr/local/dockerjdk8

(2)下载

下载jdk-8u171-linux-x64.tar.gz并上传到服务器(虚拟机)中的/usr/local/dockerjdk8目录

mv jdk-8u171-linux-x64.tar.gz /usr/local/dockerjdk8/

(3)创建文件Dockerfile

切换到dockerjdk8目录

cd /usr/local/dockerjdk8/

vi Dockerfile   注意:文件名是固定的


#依赖镜像名称和ID  
FROM centos:7
#指定镜像创建者信息 
MAINTAINER xzy 
#切换工作目录 
WORKDIR /usr 
RUN mkdir  /usr/local/java 
#ADD 是相对路径jar,把java添加到容器中 
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/ 

#配置java环境变量 
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171 
ENV JRE_HOME $JAVA_HOME/jre 
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH 
ENV PATH $JAVA_HOME/bin:$PATH

(4)执行命令构建镜像

docker build -t='dockerjdk8' .

注意后边的空格和点,不要省略

(5)查看镜像是否建立完成

docker images

(6)创建容器

docker run -it jdk1.8 /bin/bash

ctrl+shift+a+d 退出容器  会进入到里面

查看容器目录:cd local/java/jdk1.8.0_171


练习:

mkdir /usr/local/eureka-package

FROM dockerjdk8
VOLUME /tmp
ADD app.jar /usr/local/
ENTRYPOINT ["java","-jar","/usr/local/app.jar"]

2、私有仓库搭建与配置

(1) 拉取私有仓库镜像(此步略)

docker pull registry

(2) 启动私有仓库容器

docker run -di --name=registry -p 5000:5000 registry

(3) 打开浏览器 输入地址

http://192.168.184.135:5000/v2/_catalog

看到 {“repositories”:[]} 表示私有仓库搭建成功并且内容为空

(4) 修改daemon.json

用于让 docker信任私有仓库地址

vi /etc/docker/daemon.json

添加以下内容,保存退出。

"insecure-registries":["192.168.184.135:5000"]

我的还需要配置这个参数
# vi /etc/sysconfig/docker

OPTIONS='--selinux-enabled --insecure-registry 192.168.137.17:5000'

(5) 重启docker 服务

systemctl restart docker

3、镜像上传至私有仓库

(1) 标记此镜像为私有仓库镜像

192.168.192.128:5000:必须是ip:端口号标志push到哪里
docker tag jdk1.8   192.168.192.128:5000/jdk1.8

(2) 上传标记的镜像

docker push 192.168.192.128:5000/jdk1.8

(3) 刷新页面查看

{"repositories":["jdk1.8"]}

4、DockerMaven插件

通过Maven插件自动部署。

(1) 修改docker配置

修改宿主机的docker配置,让其可以远程访问

vi /lib/systemd/system/docker.service

其中ExecStart=后添加配置
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

(2) 刷新配置,重启服务

systemctl daemon-reload
systemctl restart docker
docker start registry

(3) 在tensquare_eureka工程pom.xml 增加配置

<build>
    <finalName>app</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- docker的maven插件,官网:
        https://github.com/spotify/docker-maven-plugin -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.13</version>
            <configuration>
                <imageName>192.168.184.135:5000/${project.artifactId}:${project.version}
                </imageName>
                <baseImage>myjdk</baseImage>
                <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
                  <!--这是docker容器的对外端口  就是将jar放到那个容器中 前提是docker 服务器已经
                    将docker 容器的端口开放  其中2375 就是容器的 端口-->
                <dockerHost>http://192.168.184.135:2375</dockerHost>
            </configuration>
        </plugin>
    </plugins>
</build>


------------------------------------------测试已成功-------------------------------------------



    <build>

        <!--镜像名字-->
        <finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- docker的maven插件,官网:
            https://github.com/spotify/docker-maven-plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                     <!--这个地方如果随便写是可以放到docker中的但是由于
                      push 根据标记去找地址所以找不到地址-->
                    <imageName>192.168.2.157:5000/${project.artifactId}:${project.version}
                    </imageName>
                    <baseImage>jdk8</baseImage>
                    <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
                    <resources>
                        <!--将targe目录下的某个jar提交到那个地方-->
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                    <!--这是docker容器的对外端口  就是将jar放到那个容器中 前提是docker 服务器已经
                    将docker 容器的端口开放  其中2375 就是容器的 端口-->
                    <dockerHost>http://192.168.2.157:2375</dockerHost>
                </configuration>
            </plugin>
        </plugins>
    </build>

以上配置会自动生成Dockerfile

FROM jdk1.8 
ADD app.jar / 
ENTRYPOINT ["java","‐jar","/app.jar"]

(4) 打包和上传镜像

在windows的命令提示符下,进入tensquare_eureka工程所在的目录,输入以下命令,进行打包和上传镜像

mvn clean package docker:build  -DpushImage

浏览器访问 http://192.168.184.135:5000/v2/_catalog ,显示

{"repositories":["jdk1.8","tensquare_eureka"]}

(5) 进入宿主机 , 查看镜像

docker images

(6) 浏览器访问eureka

http://192.168.192.128:6868/

5、Gogs安装与配置

(1) 下载镜像

docker pull gogs/gogs

(2) 创建系统用户git,并设置密码

adduser git
passwd git

切换用户
su git
su root

(3) 上传gogs

mkdir /usr/local/gogs-package

mv gogs_0.11.43_linux_amd64.tar.gz /usr/local/gogs-package

解压
tar -zxvf gogs_0.11.43_linux_amd64.tar.gz

(4) 启动gogs

cd gogs
./gogs web

(5) 配置

假设我的centos虚拟机IP为192.168.184.135 完成以下步骤

在地址栏输入http://192.168.184.135:3000  会进入首次运行安装程序页面,我们

可以选择一种数据库作为gogs数据的存储,最简单的是选择SQLite3。如果对于规模较大

的公司,可以选择MySQL

6、Jenkins安装

6.1、JDK安装(此步略)

(1) 将jdk-8u171-linux-x64.rpm上传至服务器(虚拟机)

(2) 执行安装命令

rpm -ivh jdk-8u171-linux-x64.rpm

RPM方式安装JDK,其根目录为:/usr/java/jdk1.8.0_171t

6.2 安装Maven与本地仓库

(1) 将Maven压缩包上传至服务器(虚拟机)

(2) 解压

tar -zxvf apache‐maven-3.3.9-bin.tar.gz

(3) 移动目录

mv apache-maven-3.3.9 /usr/local/maven

(4) 配置本地仓库目录

编辑setting.xml配置文件 vi /usr/local/maven/conf/settings.xml ,配置本地仓库目录,内容如下
<localRepository>/usr/local/repository</localRepository>

(5) 上传本地仓库

将开发环境的本地仓库上传至服务器(虚拟机)并移动到/usr/local/repository

mv reponsitory_boot /usr/local/repository

是为了以后在打包的时候不必重新下载依赖包,缩短打包的时间。

(6) 编辑settings.xml配置文件

vi /usr/local/maven/conf/settings.xml

<pluginGroups>     
    <pluginGroup>com.spotify</pluginGroup>     
</pluginGroups>

6.2、Jenkins安装与启动

(1) 下载jenkins 或直接从资料上传

wget https://pkg.jenkins.io/redhat/jenkins-2.83-1.1.noarch.rpm

(2) 安装jenkins

mkdir -p /usr/local/jenkins-package
mv jenkins-2.83-1.1.noarch.rpm /usr/local/jenkins-package/
cd /usr/local/jenkins-package
安装
rpm -ivh jenkins-2.83-1.1.noarch.rpm

(3) 配置jenkins

vi /etc/sysconfig/jenkins

修改用户和端口

JENKINS_USER="root" 
JENKINS_PORT="8888"

(4) 启动服务

systemctl start jenkins

service  jenkins start	

(5) 访问链接

http://192.168.184.135:8888

从 /var/lib/jenkins/secrets/initialAdminPassword 中获取初始密码串

(6) Jenkins插件安装

安装Maven插件 、 安装Git插件

6.4 全局工具配置

配置jdk路径
/usr/java/jdk1.8.0_171-amd64/

配置maven路径
/usr/local/maven