美文网首页
Docker 常用命令

Docker 常用命令

作者: andyhacker | 来源:发表于2019-07-31 17:47 被阅读0次

1. 登录

以用户名登录

docker exec -it --user root <容器ID> /bin/bash

docker 容器重命名

docker rename 原容器名  新容器名

挂载,docker可以支持把一个宿主机上的目录挂载到镜像里
通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径

docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash

How can I add a volume to an existing Docker container?

$ docker ps  -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS                          PORTS               NAMES
    5a8f89adeead        ubuntu:14.04          "/bin/bash"              About a minute ago   Exited (0) About a minute ago                       agitated_newton

$ docker commit 5a8f89adeead newimagename
$ docker run -ti -v "$PWD/dir1":/dir1 -v "$PWD/dir2":/dir2 newimagename /bin/bash

docker 启动参数

docker run -it -e DISPLAY=unix$DISPLAY --env="QT_X11_NO_MITSHM=1" \
--net=host --privileged=true \
-v /tmp/.X11-unix:/tmp/.X11-unix -v /home/andy/colcon_ws:/home/andy/colcon_ws \
-v $HOME/.Xauthority:/root/.Xauthority \
--user andy --name ros2_crystal \
--mount source=ros2-vol,target=/vol <image id> \
/bin/zsh

一个脚本示例:

#!/bin/bash
DNAME=ros2_docker
if [ ! "$(docker ps -q -f name=$DNAME)" ]; then
    if [ "$(docker ps -aq -f status=exited -f name=$DNAME)" ]; then
        echo "$DNAME is exited"
        [ "$(docker start ros2_docker)" ] && docker exec -it ros2_docker /bin/bash
    else
        echo "$DNAME is not exist"
        docker run -it -e DISPLAY=unix$DISPLAY --env="QT_X11_NO_MITSHM=1" \
            --net=host --privileged=true -v /tmp/.X11-unix:/tmp/.X11-unix \
            -v $HOME/.Xauthority:/root/.Xauthority --name ros2_docker --user docker \
            f6798c4b1fdf /bin/bash
    fi
else
    echo "$DNAME is runing, now into"
    docker exec -it ros2_docker /bin/bash
fi

主机安装了cuda,在docker中调用并使用

首先需要保证 主机根目录可以挂载,如挂载在 /host_root
在docker中

export PATH=$PATH:/host_root/usr/cuda/bin:/host_root/usr/lib/nvidia-xxx/bin
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:/host_root/usr/lib/nvidia-xxx:/host_root/usr/lib/x86_64-linux-gnu:/host_root/usr/local/cuda/lib
## 为了方便使用,可以建立cuda超链接
sudo ln -s /host_root/usr/local/cuda-x.x /usr/local/cuda-x.x
sudo ln -s /host_root/usr/local/cuda /usr/local/cuda
export CUDNN_INSTALL_DIR=/usr/local/cuda
export CUDA_INSTALL_DIR=/usr/local/cuda

经过上述设置后,测试nvcc和nvidia-smi两个命令,如果版本号正确,则说明挂载成功

xxx$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243

xxx$ nvidia-smi 
Tue Oct 29 18:47:37 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.56       Driver Version: 418.56       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 107...  Off  | 00000000:01:00.0  On |                  N/A |
| 23%   52C    P0    30W / 180W |   1821MiB /  8117MiB |     10%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+


修改docker镜像位置

#!/bin/bash
mkdir /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/docker-overlay.conf
echo "[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/home/.docker_overlay --storage-driver=overlay" >> /etc/systemd/system/docker.service.d/docker-overlay.conf
sudo systemctl daemon-reload
sudo systemctl restart docker

主机安装了nvidia驱动,rviz2无法启动时

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/host_root/usr/lib/nvidia-415/

其中/host_root/usr/lib/nvidia-415/表示nvidia驱动的位置

Problem

How to fix docker: Got permission denied issue

sudo chmod 666 /var/run/docker.sock

相关文章

网友评论

      本文标题:Docker 常用命令

      本文链接:https://www.haomeiwen.com/subject/gjotdctx.html