修改操作

docker exec进入容器启动多个进程的注意事项

docker exec进入容器执行的第一个命令为 bash 命令时,当退出 exec 时,要保证在这次exec启动的进程都退出了,再执行exit退出,否则会导致exit退出时终端卡主的情况。如果要在exit退出时,exec中启动的进程仍然在后台保持运行,要在启动进程时加上nohup。

docker rename和docker stats 的使用冲突

如果使用docker stats 实时监控容器,当使用docker rename重命名容器之后,docker stats中显示的名字将还是原来的名字,不是rename后的名字。

docker rename操作restarting状态的容器可能会失败

对一个处于restarting状态的容器执行rename操作的时候,docker会同步修改容器网络的相关配置。由于restarting状态的容器可能还未真正启动起来,网络是不存在的,导致rename操作报错sandbox不存在。建议rename只操作非restarting的稳定状态的容器。

docker cp

  1. 使用docker cp向容器中拷贝文件时,docker ps以及所有对这个容器的操作都将等待docker cp结束之后才能进行。
  2. 容器以非root用户运行,当使用docker cp命令复制主机上的一个非root权限的文件到容器时,文件在容器中的权限角色会变成root。docker cp与cp命令不同,docker cp会修改复制到容器中文件的uid和gid为root。

docker login

执行docker login后,会将usrer/passwd经 aes(256位)加密后保存在/root/.docker/config.json,同时生成 root.docker/aeskey(权限0600),用来解密/root/.docker/config.json中的 usrer/passwd。目前不能定时更新aeskey,只能由用户手动删除aeskey来更新。aeskey更新后,不管是否重启过docker daemon,都需要重新login,才可以push。例如:

  1. root@hello:~/workspace/dockerfile# docker login
  2. Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
  3. Username: example Password:
  4. Login Succeeded
  5. root@hello:~/workspace/dockerfile# docker push example/empty
  6. The push refers to a repository [docker.io/example/empty]
  7. 547b6288eb33: Layer already exists
  8. latest: digest: sha256:99d4fb4ce6c6f850f3b39f54f8eca0bbd9e92bd326761a61f106a10454b8900b size: 524
  9. root@hello:~/workspace/dockerfile# rm /root/.docker/aeskey
  10. root@hello:~/workspace/dockerfile# docker push example/empty
  11. WARNING: Error loading config file:/root/.docker/config.json - illegal base64 data at input byte 0
  12. The push refers to a repository [docker.io/example/empty]
  13. 547b6288eb33: Layer already exists
  14. errors:
  15. denied: requested access to the resource is denied
  16. unauthorized: authentication required
  17. root@hello:~/workspace/dockerfile# docker login
  18. Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
  19. Username: example
  20. Password:
  21. Login Succeeded
  22. root@hello:~/workspace/dockerfile# docker push example/empty
  23. The push refers to a repository [docker.io/example/empty]
  24. 547b6288eb33: Layer already exists
  25. latest: digest: sha256:99d4fb4ce6c6f850f3b39f54f8eca0bbd9e92bd326761a61f106a10454b8900b size: 524