zoukankan      html  css  js  c++  java
  • docker 安装与相关操作

    目录

    一、安装docker
    二、获取镜像
    三、创建容器
    四、安装NVIDIA Container TOOLKIT
    五、管理docker存储路径
    六、使用过程中遇到的错误


    一、安装docker

    以下是Ubuntu18.04安装步骤,其他系统安装可以参照官网

    1.1 添加使用HTTPS传输的软件包以及CA证书

    $ sudo apt-get update
    $ sudo apt-get install  
    	apt-transport-https  
    	ca-certificates  
    	curl  
    	software-properties-common
    

    1.2 为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥

    $ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    
    # 官方源 
    # $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

    1.3 要向 source.list 中添加 Docker 软件源

    $ sudo add-apt-repository  
    	"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  
    	$(lsb_release -cs)  
    	stable" 
    	
    # 官方源 
    # $ sudo add-apt-repository  
    # "deb [arch=amd64] https://download.docker.com/linux/ubuntu  
    # $(lsb_release -cs)  
    # stable"
    

    1.4 更新 apt 软件包缓存,并安装 docker-ce

    $ sudo apt-get update 
    $ sudo apt-get install docker-ce
    

    1.5 启动docker

    $ sudo service docker start
    

    1.6 建立 docker 用户组

    $ sudo groupadd docker  // 建立 docker 用户组
    $ sudo usermod -aG docker $USER   //将当前用户加入 docker 组
    

    1.7 测试是否安装正确

    $ docker run hello-world
    

    二、获取镜像

    2.1 dockerfile文件

    自己编写dockerfile文件,根据该文件生成镜像

    docker build --build-arg USER_ID=$UID -t 镜像名:版本号 .
    

    2.2 dockerhub

    直接从dockerhub上拉去镜像

    docker pull 镜像名:版本号
    

    三、创建容器

    3.1 创建容器

    docker run --privileged --net=host --gpus all -it 
        --shm-size=8gb --env="DISPLAY" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" 
        --name=topdetectron detectron2:v0
    
    # Centos 需添加/sbin/init 不然systemctl没法用
    docker run --privileged --net=host -it 
        --shm-size=8gb --env="DISPLAY" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" 
        --name=topdetectron detectron2:v0  /sbin/init
    
    

    3.2 为容器开设端口映射

    如果容器创建时网络模式为--net=host,则容器和宿主机共享network namespace,无需添加端口映射, 只要在ssh中设置好不和主机冲突的端口号即可,否则下面两步都需要执行。

    1.安装ssh
    apt-get install openssh-server
    apt-get install openssh-client
    
    • 修改SSH配置
    vim /etc/ssh/sshd_config
    # 修改下面内容
    PubkeyAuthentication yes
    PermitRootLogin yes
    PasswordAuthentication yes
    # 查看端口是否被占用命令 netstat -apn | grep 22222
    Port 22222  
    
    • 启动ssh服务
    # Ubuntu18.04
    /etc/init.d/ssh restart
    
    # Centos7
    systemctl start sshd
    
    2.开设端口映射

    假设需要将某个容器的端口22映射到宿主机的端口1022

    • 关闭所有容器
    # 查看运行的container
    docker container ls
    # 关闭container
    docker container stop [container id or name] bash
    # 停止docker服务
    sudo systemctl stop docker
    
    • 修改容器配置文件
    # 进入容器配置文件夹
    vim /var/lib/docker/containers/
    # 选择对应的container id后,修改hostconfig.json 和 config.v2.json两个文件
    
      • 修改hostconfig.json
    # 修改PortBindings内容
    "PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"1022"}]}
    
      • 修改config.v2.json
    # 在"Cofig":{}中添加"ExposedPorts"
    "ExposedPort":{"22/tcp":{}}
    

    启动docker服务,进入容器,重启ssh服务

    3.3 容器常用操作

    启动容器: docker container start 容器名/ID
    进入容器: docker exec -it 容器名/ID
    查看所有容器: docker ps -a
    查看运行中容器: docker container ls
    删除容器: docker rm 容器名/ID


    四、安装Nvidia Container Toolkit

    • 新建一个安装脚本nvidia-container.sh

    • 脚本内容为

      distribution=$(. /etc/os-release;echo $ID$VERSION_ID)                           
      curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -   
      curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
      sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit        
      sudo systemctl restart docker
      
    • 测试显卡是否可用

      docker run -it --rm --gpus all ubuntu nvidia-smi
      
    • 中间出现错误gpg: no valid OpenPGP data found
      解决措施

    Step1. Open this website https://github.io.ipaddress.com/, and then search nvidia.github.io corresponding IP address.
    Step2. sudo vim /etc/hosts ,Add the following at the end.
    
    185.199.108.153 nvidia.github.io
    185.199.109.153 nvidia.github.io
    185.199.110.153 nvidia.github.io
    185.199.111.153 nvidia.github.io
    

    五、管理docker存储路径

    Ubuntu18.04中docker中容器和镜像默认存储在/var/lib/docker下(可用df -h命令查看),时间一长很容易把存储空间占满,这里将默认路径更改为/data目录下。

    sudo cp -r /var/lib/docker /data/
    sudo mv /var/lib/docker /var/lib/docker.bak
    sudo ln -s /data/docker /var/lib/docker
    rm -rf /var/lib/docker.bak
    

    六、使用过程中遇到的错误

    • gtk failed to load module canberra-gtk-module

      sudo apt install libcanberra-gtk-module libcanberra-gtk3-module
      
    • LIBDBUSMENU-GLIB-WARNING: Unable to get session bus

      sudo apt-get install dbus-x11
      
  • 相关阅读:
    百度搜索技巧
    Redis汇总
    分享一个经验,代码打开mysql链接,执行存储过程时,提示:Table 'mysql.proc' doesn't exist
    WPF 重写微调自带的样式,ListView、DataGrid、TreeView等所有控件的默认样式
    WPF 图片抗锯齿,尤其是小图片更为严重
    通过鼠标事件,从鼠标点击的坐标寻找指定的控件
    重写TreeView,多层级节点下批量显示图片,图片支持缩略图和文件名列表切换,支持调用者动态匹配选中,支持外界拖入图片并添加到对应节点下
    重写TreeView,自定义图标,生成通行的下划线,取消默认获得焦点失去焦点的效果,并支持拖拽节点到外界
    四、C#入门—表达式与运算符
    三、C#入门—数据类型
  • 原文地址:https://www.cnblogs.com/xiaxuexiaoab/p/14587353.html
Copyright © 2011-2022 走看看