一台设备上有个docker容器,很好用,但是没有Dockfile,并且镜像hub是私有的不允许pull,但我想在另一台设备上使用这个镜像,应该怎么做呢?本文就介绍下操作方法。
一、导出容器为镜像
# 1.查看运行中的容器
docker ps
ONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1fa529a5fa31 autoware/autoware:latest-melodic-cuda "/tmp/entrypoint.sh" 3 hours ago Up 3 hours compassionate_liskov
# 2.导出容器为镜像
# docker commit -a "用户名" -m "镜像注释" ${需要导出的容器ID} ${用户名}/${镜像名称}:${版本号}
docker commit -a "yanjingang" -m "autoware.ai latest-melodic-cuda" 1fa529a5fa31 yanjingang/autoware:latest-melodic-cuda
sha256:5557c9ef52f5023a329e115e86cc31dd52bb4daeea0f993508f579fea97d6f95
或分两步也可以:
docker commit 1fa529a5fa31 autoware:latest-melodic-cuda //没有版本号默认latest
docker tag autoware yanjingang/autoware:latest-melodic-cuda
# 3.检查镜像
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
yanjingang/autoware latest-melodic-cuda 5557c9ef52f5 10 seconds ago 10.1GB
二、镜像远程push/pull
直接push到远程docker-hub,方便别的设备pull拉取:
# 1.登陆docker-hub
docker login
# 2.push本地镜像到hub
docker push yanjingang/autoware:latest-melodic-cuda
# 3.pull远程镜像到本地
docker pull yanjingang/autoware:latest-melodic-cuda
三、镜像本地打包与载入
有时国内访问docker-hub不便,或者其他hub不稳定,想在本地保存一份,可以通过以下方法打包和加载:
# 1.镜像打包为tar包
sudo docker save -o autoware-latest-melodic-cuda.tar yanjingang/autoware:latest-melodic-cuda
# 2.从tar包载入镜像(如果同名镜像已存在,需要先sudo docker image rm 9bea76b87e92)
sudo docker load -i autoware-latest-melodic-cuda.tar
参考: