在一个docker容器中做出了修改,如果不进行保存的话,下次再进入的时候,所做的更改就会被抹掉。。。。这是一件很忧伤的事情。so........如何对于更改的容器进行保存呢?
docker commit & docker push 步骤:
- 查看所修改的容器的CONTAINER ID
$ docker ps -a #显示所又的容器信息
$ docker ps -l #显示最新运行的容器
- 使用docker commit 对于修改的容器进行保存
$ docker commit CONTAINER ID docker_hub用户名/镜像名
-------------------例如-----------------------
[115 ]$ sudo docker commit 37853c88bd7d 447146005/dcase2017_task2env_gpu:v3
sha256:69d10999af8157dd6e22d4f3ee2d0e231a89bde53f9578ae6148581fbbdd2197
其中,37853c88bd7d为CONTAINER ID;447146005为docker hub 上的用户名;dcase2017_task2env_gpu为镜像名;v1是一个tag name 会在hub的Tags那里显示。后面出现sha256:则表示commit成功。之后,可以使用docker images 来进行查看,发现此时多了一个新镜像。
[115 ]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
447146005/dcase2017_task2env_gpu v3 69d10999af81 12 minutes ago 6.35GB
- 向docker hub 账户push新创建创建的容器
$ docker push 447146005/dcase2017_task2env_gpu:v3
- 验证:
(1)刷新你的docker hub 账户,就会看到新push的镜像。
(2)$ docker inspect 447146005/dcase2017_task2env_gpu:v3
会出现有有关信息,表明push成功
踩过的雷
1.在docker push 的时候出现:connect: permission denied
Warning: failed to get default registry endpoint from daemon (Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.37/info: dial unix /var/run/docker.sock: connect: permission denied). Using system default: https://index.docker.io/v1/
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.37/images/447146005/dcase2017_task2env_gpu/push?tag=v3: dial unix /var/run/docker.sock: connect: permission denied
原因:权限不够
解决方法:加sudo
$ sudo docker push 447146005/dcase2017_task2env_gpu:v3
2.denied: requested access to the resource is denied
[115 ]$ sudo docker push 447146005/dcase2017_task2env_gpu:v3
[sudo] 115 的密码:
The push refers to repository [docker.io/447146005/dcase2017_task2env_gpu]
daa4016d25ab: Waiting
。。。。中间省略好多行。。。。。
d7ff1dc646ba: Waiting
644879075e24: Waiting
denied: requested access to the resource is denied
出现原因:
(1)可能是没有登录docker hub 账户
——>解决方法:docker login 登录
(2)命名的方式不对,push的命名格式为:docker hub 用户名/镜像名
——>解决方法:
对于镜像重命名:$ docker tag IMAGE ID docker hub 用户名/镜像名
再次push,即可。