对于MacOS,我们可以使用 Homebrew 来安装 Docker,在终端中输入如下命令:
brew cask install docker
在载入 Docker App 后,点击 Next,可能会询问你的 MacOS 登陆密码,输入即可;
之后会弹出一个 Docker 运行的提示窗口,状态栏上也有有个小鲸鱼的图标,如下:
这就表示Docker下载并且安装成功了。
参考资料: MacOS Docker 安装
构建Java+Gradle环境的Docker镜像的整体流程如下:
1、编写Dockerfile脚本文件,创建Docker镜像;
2、通过镜像启动容器,进行本地调试;
3、在本地容器中设置Java环境;
4、在本地容器中设置Gradle环境;
5、保存并上传镜像;
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明;
在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容:
## 镜像下载链接
FROM xxxUrl
USER root
## 在 Dockerfile 的这里,写自定义镜像的脚本
## 熟悉Docker命令的可以直接在此处通过命令设置Java和Gradle环境
## 不熟悉的就按照本文说的进行本地调试
在 Dockerfile 文件的存放目录下,执行构建动作,执行以下命令:
## 根据 Dockerfile 构建镜像,【. 目录为 Dockerfile 所在的目录】
docker build -t xxx/xxx .
##上述命令构建出一个xxx/xxx的镜像,(镜像名称:镜像标签)
通过Dockerfile脚本创建好一个Docker镜像之后,执行如下操作开启本地调试:
## 打公司或者个人的 tag
docker tag xxx/xxx docker.yyy.com/xxx/xxx:1.0.0
## 上传该镜像到公司/个人源
docker push docker.yyy.com/xxx/xxx:1.0.0
## 测试拉下来镜像
docker pull docker.yyy.com/xxx/xxx:1.0.0
## 本地通过镜像来启动一个容器
docker run -itd docker.yyy.com/xxx/xxx:1.0.0 /bin/bash
## 本地进入容器中调试
docker exec -t -i [容器的 hash]
注意:
1、通过docker images命令可以查看本机镜像;
2、Docker的操作类似于Git,本机调试完之后需要commit保存,然后pull、push;
3、Docker命令大全:Docker 命令大全
后面两个步骤可能会由于你下载的Docker镜像内核不同而不同,本文以Linux64位为例进行说明;
这个步骤归根到底就一句话:在Linux中安装Java环境;
本文采用的方式是在电脑上下载好JDK,然后拷贝进Docker镜像,最后设置环境变量。
1、下载JDK
这个步骤不用说,去官网下载所需版本即可;
2、拷贝JDK进Docker镜像;
这个步骤可以通过Docker cp命令完成,如下:
docker cp [容器的hash]:/usr/java /tmp/jdk-8u221-linux-x64.tar.gz
拷贝完成之后,进入镜像解压缩即可;
3、设置环境变量;
这个步骤不说了,不会的参考:linux配置java环境变量(详细)
Gradle是基于Ant和Maven的构建工具,同样需要Java运行环境,安装之前需要先安装配置好Java环境;
1、下载Gradle
进入Docker容器,进入安装包下载,输入以下命令:
wget https://downloads.gradle.org/distributions/gradle-4.6-bin.zip
耐心等待下载完成即可。
2、解压安装
下载完成后,执行下面的命令,将压缩包解压到如下路径:
unzip -d /opt/gradle gradle-4.6-bin.zip
3、修改配置
解压完成后,输入命令 vim /etc/profile ,进入配置文件进行编辑,输入下面红色圈出来的内容:
保存退出后,输入刷新命令 source /etc/profile ,刷新配置文件使其生效。
4、校验安装结果
输入命令 gradle --version ,检查安装的Gradle版本号及其他信息,如出现如下信息,则安装完成。
此部分参考:Linux下安装Gradle
环境配置好之后,通过 docker commit命令保存镜像,如下:
runoob@runoob:~$ docker commit -a "jgc" -m "提交说明" a404c6c174a2 xxx:xxx
关于commit命令的说明见:Docker commit 命令
最后通过docker push上传完成的镜像就好啦~