目录
3. 推送镜像到Harbor(推送到私有镜像仓库:http://175.24.125.8:85/)
1. 使用官方安装脚本自动安装Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 卸载docker
yum remove docker-ce # 删除安装包
rm -rf /var/lib/docker # 删除镜像、容器、配置文件等内容
2. 构建自定义镜像(以Jenkins-Slave为例)
2.1 常见Dockerfile指令
FROM # 基于哪个基础镜像构建
MAINTAINER # 镜像作者的信息
RUN # 容器镜像构建的时候需要运行的命令
ADD # 在这个镜像中放置的软件压缩包,会自动解压
WORKDIR # 镜像的工作目录
VOLUME # 给镜像指定挂在卷
EXPOSE # 对外暴露的端口
CMD # 容器启动后执行的命令,可以被替代,只有最后一个会生效, (通常用于启动我们的应用)
ENTRYPOINT # 容器启动后执行的命令,可以追加
ONBUILD
COPY # 和add类似,将压缩包拷贝进镜像中
ENV # 构建时,设置环境变量,如设置mysql的用户名密码
2.2 准备材料
Dockerfile文件内容如下:
FROM jenkins/jnlp-slave:latest
MAINTAINER itcast
# 切换到 root 账户进行操作
USER root
# 安装 maven
COPY apache-maven-3.8.3-bin.tar.gz .
RUN tar -zxf apache-maven-3.8.3-bin.tar.gz && \
mkdir -p /usr/local/soft/maven && \
mv apache-maven-3.8.3 /usr/local/soft/maven && \
rm -f apache-maven-3.8.3-bin.tar.gz && \
ln -s /usr/local/soft/maven/apache-maven-3.8.3/bin/mvn /usr/bin/mvn && \
mkdir -p /usr/local/soft/maven/apache-maven && \
ln -s /usr/local/soft/maven/apache-maven-3.8.3 /usr/local/soft/maven/apache-maven && \
mkdir -p /usr/local/soft/maven/apache-maven/repo
COPY settings.xml /usr/local/soft/maven/apache-maven/conf/settings.xml
USER jenkins
2.2 构建镜像
docker build -f /usr/deploy/Dockerfile -t jenkins-slave-maven:latest .
- Dockerfile一般位于构建上下文的根目录下,也可以通过-f指定该文件的位置
- 自定义的镜像名不能出现大写字母
- 通过-t参数指定构建成后,镜像的仓库、标签等
- -t后的自定义镜像名如果没有添加TAG标签的话,默认使用latest
- 最后的点不能省略
由于Jenkins-Slave的Dockerfile,需要安装Maven, 此处在Dockerfile所在文件夹下执行
cd /usr/deploy
docker build -t jenkins-slave-maven:latest .
2.3 查看Docker镜像
docker images
3. 推送镜像到Harbor(推送到私有镜像仓库:http://175.24.125.8:85/
)
3.1 登录私有镜像仓库
docker login --username admin --password Harbor12345 http://175.24.125.8:85
出现错误
[root@VM-0-2-centos ~]# docker login --username admin --password Harbor123456 http://175.24.125.8:85
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get “https://175.24.125.8:85/v2/”: http: server gave HTTP response to HTTPS client
vi /etc/docker/daemon.json
# 插入以下语句:
{"insecure-registries": ["http://175.24.125.8:85"]}
# 重新加载服务的配置文件
systemctl daemon-reload
# 重启docker
systemctl restart docker
3.2 推送镜像到远程仓库
# 在项目中标记镜像
docker tag jenkins-slave-maven:latest 175.24.125.8:85/library/jenkins-slave-maven:latest
# 推送镜像到当前项目
docker push 175.24.125.8:85/library/jenkins-slave-maven:latest
需要等待5-10分钟
上传成功