zoukankan      html  css  js  c++  java
  • docker学习笔记

    更改docker的默认存储路径

    https://medium.com/developer-space/how-to-change-docker-data-folder-configuration-33d372669056
    方法一

    • service docker stop
    • 改/etc/default/docker 放开DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /your_docker_path"
    • 改/etc/docker/daemon.json 添加"data-root": "/your_docker_path",
    • service docker start

    方法二:

    • 修改/lib/systemd/system/docker.service
    ExecStart=/usr/bin/dockerd -H fd:// --dns 8.8.8.8 --dns 8.8.4.4 -g /media/sc/unitek1/docker_base_dir
    
    • sudo systemctl daemon-reload
      告知docker配置文件已经修改

    • 重启docker服务
      service docker restart

    创建container时赋予名称

    docker run -itd --name linux123 ubuntu /bin/bash

    镜像的保存和载入

    docker save -o cuda_cudnn_tensorrt.tar responsity:tag

    docker load -i cuda_cudnn_tensorrt.tar

    gui操作

    xhost +
    docker run -it -v /home/sc/Desktop/ros2_container_home:/home --env="DISPLAY=${DISPLAY}" --privileged --net=host --runtime=nvidia ros2_nv:new

    • docker启动时加--rm,容器退出后就没有了

    • 查看有哪些docker
      docker container ls -a

    docker ls只会列出活跃的container(即没退出的) docker ls -a才会列出所有存在的容器!

    • 移除所有exited container

    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把镜像及容器文件都存储在哪里?

    /var/lib/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.

    每一个docker命令的具体用法可以加--help查看,比如docker ps --help

  • 相关阅读:
    javascript中数组去重的4种方法
    dede使用方法----实现英文版的搜索功能
    dede去掉当前位置position后面的箭头
    dede使用方法----如何转换时间戳
    Python字符串、元组、列表、字典互相转换的方法
    Python 列表的操作
    Python 元祖的操作
    Python 操作文件、文件夹、目录大全
    python文件目录操作大全
    python用time函数计算程序运行时间
  • 原文地址:https://www.cnblogs.com/sdu20112013/p/11821583.html
Copyright © 2011-2022 走看看