一:命令

登录命令

docker login -u 用户名 -p 密码

拉取命令,即使标签一样,如果镜像发生过变化(代码变更等),会触发镜像对比进行拉取。

docker-compose up -d(其中-d为后台执行,up会检测本地的镜像是否发生变化,若发生变化将重启启动镜像)

docker pull java

标记命令,通常,zflzqy代表docker私有仓库的域名,biz是你在harbor中的项目名, test就是你的应用名,可以类比java的pom依赖

docker tag dockerhub:jre8 zflzqy/biz/test:v8

4、上传到镜像仓库

docker push zflzqy/biz/test:v8

查看 docker占用空间

docker system df

#删除停止容器 docker container prune

#删除所有容器

docker rm -f $(docker ps -aq)

#查询悬挂镜像(没有真正创建的镜像)

docker image ls -f dangling=true

#删除悬挂镜像(没有真正创建的镜像)

docker image rm $(docker image ls -f dangling=true -q) 或者docker image prune #删除未使用的镜像

docker image prune -a

crictl rmi --prune

docker镜像重制作,用于将镜像历史删除,通常用来缩小镜像大小(请自行替换脚本中的镜像名称) 脚本

二:docker仓库

准备一个用于存储私有镜像的docker仓库,比如harbor,为啥需要私有呢,因为网络不通,无法抓取镜像,且服务器大部分处于内网环境,无法获取外网镜像

1、harbor仓库提示证书x509异常:

参考:https://blog.csdn.net/weixin_44466805/article/details/125767736?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-125767736-blog-114700571.pc_relevant_default&spm=1001.2101.3001.4242.1&utm_relevant_index=3 重新生成harbor证书 harbor push时提示project not fund,请自行前往harbor的web端创建对应的项目

2、docker仓库的所有镜像文件基本都会做压缩(不管是官方dockerhub的还是自己搭建的私有),所以查看一个镜像的真正大小应该是docker pull 下来然后使用docker images查看docker镜像的具体大小

3、docker 拉取外网地址并重新推送到本地私库,

脚本脚本 用法:

chmod 700 pullImage.sh 
# 请自行修改脚本内的local变量为自己的本地私有仓库
./pullImage.sh  openjdk:latest

三、dockerfile文件

# 基础镜像
FROM openjdk:8-jdk-oraclelinux8
# 作者信息
MAINTAINER zflzqy
# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
# 拷贝jar 把可执行jar包复制到基础镜像的根目录下
ADD school-work-system/target/*.jar /app.jar
# 设置暴露的端口号
EXPOSE  8080
# 在镜像运行为容器后执行的命令
ENTRYPOINT ["java","-jar","app.jar"]

小包镜像: jdk8: 1396954535/alpine-oraclejdk8-bash:v1
jdk11: openjdk:11-jre-slim