docker日常使用操作场景
日常使用场景
场景1:将自己的镜像从hub中拉取,并压缩成tar.gz文件
# 首先拉取镜像
docker pull docker.images.hub/{namespace}/{servicename}:{version}
# 给镜像重新打tag
docker tag docker.images.hub/{namespace}/servicename {servicename}:{image_tag}
# 生成tar镜像文件
docker save -o {servicename}.tar {servicename}:{image_tag}
# 将tar压缩成tar.gz文件
pigz -p 16 {servicename}.tar
场景2:上传镜像到hub中
# 首先登录自己的账号(要先hub.docker.com官网注册账号,并新建一个仓库Repositories)
docker login -u
# 给镜像重新打tag
docker tag local-image:tag_name new-repo:tag_name
# 将镜像推到hub
docker push new-repo:tag_name
场景3:加载tar.gz镜像,并push到hub中
# 上传tar.gz的包,并加载
docker load < mymysql.tar.gz
# 或者
docker load -i mymysql.tar.gz
# 给镜像重新打tag
docker tag mymysql:22.2.rc1 cavan520/mymysql:22.2.rc1
# 将镜像推到hub
docker push cavan520/mymysql:22.2.rc1
场景4:排查镜像问题
可以通过加--entrypoint /bin/sh 覆盖里面的启动命令 这个即使是服务启动不了,也能顺利进入容器里面 这样就可以很好得排查问题
docker run -it --entrypoint bash 81399a2859fa
排查完后,删除运行中的容器
docker ps -a
docker rm 81399a2859fa
场景5:向dockerfile文件中传入参数
可以通过加--build-arg 添加参数
docker build --build-arg BASE_VERSION="${base_version}" -f Dockerfile -t mymysql:22.2.rc1 . || {
echo "build image for mymysql failed! "
exit 1
}
Dockerfile中通过ARG BASE_VERSION接收参数
遇到的问题
1、denied: requested access to the resource is denied
上面的信息显示是拒接访问,因为tag的名字不包含本人的用户名,下面把它修改为mydockerhubname/xxxxx再push成功。需要注意的是mydockerhubname是本人的docker用户名。
解决方法:
在给镜像重新打tag时,改成docker hub对应的用户名下。例如我的账户名:cavan520,重新打完tag再push上去,成功了
然后进入docker hub网站查看,发现多了一个repository(就是你push上来的)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!