一:命令
登录命令
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