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上来的)。

posted @ 2022-07-03 21:38  cavan丶keke  阅读(56)  评论(0编辑  收藏  举报