目标
基于基镜像【adoptopenjdk-8u222-b10-jdk-hotspot-bionic:x86】 将【appcloud】下的应用,制作成名称为【appcloud】,tag为【v1.0.0】的镜像,并推送到registry.myserver.com下的project仓库中
示例目录结构
appcloud:应用目录 dockerfile:镜像制作配置文件 .dockerignore:排除打镜像时候处理的文件
dockerfile
# 定义使用的基础镜像
FROM adoptopenjdk-8u222-b10-jdk-hotspot-bionic:x86
# 定义容器运行时的应用目录
WORKDIR /app
# 拷贝模板机上的文件到容器应用目录下
COPY appcloud/bin /app/bin
COPY appcloud/components /app/components
COPY appcloud/metadata /app/metadata
COPY appcloud/server /app/server
COPY appcloud/startup.sh /app/startup.sh
COPY appcloud/web /app/web
# 对容器启动时候的脚本赋权
RUN chmod a+x startup.sh
# 指定容器启动时运行的脚本文件
ENTRYPOINT ["./startup.sh"]
.dockerignore
创建.dockerignore文件,排除打镜像时候处理的文件
appcloud/tools/
appcloud/gclog
appcloud/log.path*
appcloud/server/log/*.log
appcloud/server/log/*.gz
appcloud/nohup.out
docker load
#导入基镜像,到tar文件的目录下执行
docker load < adoptopenjdk-8u222-b10-jdk-hotspot-bionic-x86.tar
docker build
#创建镜像,不要漏掉最后面的点
docker build -f ./dockerfile -t ImageName:tag .
# 示例,制作名为【registry.myserver.com/project/appcloud】,tag为【v1.0.0】的镜像
docker build -f ./dockerfile -t registry.myserver.com/project/appcloud:v1.0.0 .
docker images
#展示docker环境中的镜像列表,用来查看是否创建成功
docker images
docker run
# docker中进行镜像的启动验证
docker run -d -p 80:80 --privileged=true --name appcloudtest registry.myserver.com/project/appcloud:v1.0.0
# -d 后台运行
# -p 端口映射
# --privileged=true 赋权
# -name 启动的容器名称
# 最后内容:启动容器的镜像
docker login
# 登录镜像仓库
docker login registry.myserver.com
Username: username
Password:
docker tag
# 镜像仓库对镜像名称有要求,一般是仓库地址:端口/项目名/镜像名:tag
# 如果build的镜像名称不符合要求,推送会失败,所以通过 docker tag对镜像改名
# docker tag 镜像ID 仓库地址:端口/项目名/镜像名:版本tag
# 示例
docker tag 663f13bea92d registry.myserver.com/project/appcloud:v1.0.0
docker push
# 镜像推送到registry.myserver.com仓库
docker push registry.myserver.com/project/appcloud:v1.0.0
docker save
# 如果没有镜像仓库,或者无法连接的时候,可以将镜像导出为离线文件,拷贝到对应容器环境中导入使用
# 执行后,会在执行目录下,生成一个name.tar文件,就是离线的镜像文件
docker save -o name.tar registry.myserver.com/project/appcloud:v1.0.0
磁盘处理
#空间占用查看
docker system df
#Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的。
#Containers:运行的容器占用的空间,表示每个容器的读写层的空间。
#Local Volumes:容器挂载本地数据卷的空间。
#Build Cache:镜像构建过程中产生的缓存空间(只有在使用 BuildKit 时才有,Docker 18.09 以后可用)。
#删除不用的镜像
docker rmi -f name:tag
#删除镜像构建时候的缓存
docker builder prune
#删除不用的数据卷
docker volume prune
#一键清理
docker system prune