docker操作
- 我们可以使用 docker images 来列出本地主机上的镜像。
docker run -it [imagename] /bin/bash (-i 交互式操作 -t 终端)
主机和容器之间拷贝文件
docker cp foo.txt mycontainer:/foo.txt
docker cp mycontainer:/foo.txt foo.txt
sudo docker cp 071ccac5310e:/tensorflow/models/research/slim/transfer_learn
退出docker
容器内shell:exit- 创建新的image
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker commit -m "sc images" -a "sc" a8a86ef8085f sc_tpu:v1
删除image
docker rmi [imagename]保存image
docker image save [imagename] -o [outtputname],比如docker image save bionic_ros2:v0 -o bionic_ros2.tar容器内的磁盘路径映射到主机磁盘路径
docker run -it -v [本机路径]:[容器内路径] [imagename]
比如:sudo docker run -it -v /home/sc/work_codes/git/tpu/ws:/home/sc ros2_nv:new
创建挂载点的几种方式:https://blog.csdn.net/zhuchunyan_aijia/article/details/80094644
进入一个容器
sudo docker exec -it [容器id] /bin/bash杀掉一个容器
docker kill -s KILL [容器id或name]
sudo docker kill -s KILL bca754c9a6b7
docker把镜像及容器文件都存储在哪里?
参考:https://blog.csdn.net/weixin_39800144/article/details/79019503
privileged参数作用
大约在0.6版,privileged被引入docker。
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器
privileged参数
container name "/tpu" is already in use
docker: Error response from daemon: Conflict. The container name "/tpu" is already in use by container "d9af0c6899a9aaa0445ab98a43abde5e29a313414565443ef9dadc55587c932a". You have to remove (or rename) that container to be able to reuse that name
docker rename d9af0c6899a9 tpu_test 把相应冲突的容器rename 或者删掉,则可以解决name冲突的问题.
新手容易搞错的概念
容器退出和容器销毁不是一个概念
docker run其实应该叫docker create,会创建一个新的container. container内exit后,这个container其实还在,只是是处于stop的状态. 包括你在container内新建的文件什么的都在!, docker ps -a可以看到所有的container,docker ps默认是只显示还在running状态的container. docker start -ai container_id可以启动一个stop的container.