-1、docker主目录迁移(docker安装完成一定要进行此步骤,不然根目录会爆掉)
- 查看运行状态
systemctl status docker
- 关闭docker
systemctl stop docker
- 将docker 安装目录移动到指定目录下
mkdir .docker_data
mv /var/lib/docker .docker_data/
- 通过软连接把两个目录关联起来
原目录:/var/lib/docker
新目录: /home/unitree/.docker_data/.docker_data/docker
sudo ln -s /home/unitree/.docker_data/docker /var/lib/docker
- 启动命令
systemctl start docker
- 查看状态
systemctl status docker
- 可以直接查看docker info详细信息
docker info
0、卸载docker
sudo apt-get remove docker docker-engine docker-ce docker.io
1、安装docker(以ubuntu为例)(两种安装都是可以使用(二选一))
1.1 安装 nvidia-docker2
curl https://get.docker.com | sh
sudo systemctl start docker && sudo systemctl enable docker
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
curl -s -L https://nvidia.github.io/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
1.2、安装docker19和toolkit
- 安装docker19
sudo apt-get remove docker docker-engine docker-ce docker.io
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable "
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
- 安装toolkit
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
1.3、 重启docker服务
sudo service docker restart
1.4、 测试gups参数是否可用
docker run --help | grep -i gpus
2、导入外部镜像 两种方式
sudo docker load --input pytorch1.0_cuda10_py3_jupyter.tar #load只能导入使用save命令保存的镜像包
sudo docker import pytorch1.0_cuda10_py3_jupyter.tar docketsave:latest
#import 可以导入使用save保存的镜像包,也可以导入使用export保存的容器包,并且可以重新命名
$ \color{red}{注意:}$
i m p o r t 可以导入使用 s a v e 保存的镜像包但是使用 r u n 运行时会报错,导入使用 x e p o r t 容器包 r u n 执行不会报错。 \color{red}{import 可以导入使用save保存的镜像包但是 使用run运行时会报错,导入使用xeport容器包 run执行不会报错。} import可以导入使用save保存的镜像包但是使用run运行时会报错,导入使用xeport容器包run执行不会报错。
最好 i m p o r t 和 e x p o r t , l o a d 与 s a v e 对应使用 \color{red}{最好import和export, load与save对应使用} 最好import和export,load与save对应使用
查看导入的镜像
sudo docker images
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
---|---|---|---|---|
10.59.3.203:5000/pytorch1.0_cuda10_py3_jupyter | latest | 0a26eaf4e60a | 7 months ago | 5.16GB |
docketsave | latest | 7a3622967df9 | 21 seconds ago | 5.2GB |
3、运行容器
3.1、普通运行
sudo docker run -i -t 10.59.3.203:5000/pytorch1.0_cuda10_py3_jupyter:latest /bin/bash
3.2、本地的一个文件目录共享给docker,实现docker与本地文件的共享
sudo docker run -it -v /home/xj/docker_share:/share docketsave:latest /bin/bash
#把本地的/home/xj/docker_share 挂载到docketsave:latest的share下
3.3、带有桌面的容器运行/端口映射
sudo docker run -it --rm -e VNC_RESOLUTION=1920x1080 -p 5901:5901 -p 6901:6901 ros-kinetic-full-xfce-vnc-docker_docker:latest /bin/bash
# VNC_RESOLUTION=1920x1080 桌面大小 -p 5901:5901 -p 6901:6901 端口映射
或
sudo docker run -it --rm -e VNC_RESOLUTION=1920x1080 -p 5901:5901 -p 6901:6901 -v /home/lv/CodeFile/ROS/ros_ws:/share ros-kinetic-full-xfce-vnc-docker_docker:latest /bin/bash
使用浏览器或者vncviewer 访问docker桌面时默认密码为vncpassword
进入后有类似于[root@ca0889cdb68f ]#提示
进入docker 后使用
yum install 安装软件
pip install 按照库
3.4、多个终端连接一个容器
# 查看目前所运行的容器ID
sudo docker ps
sudo docker exec -it 8504037552ee(ID) /bin/bash
4、保存容器的两种方法
1、先把容器commit成镜像在使用save进行保存镜像包
另起终端
sudo docker ps -a #查看运行的容器 --- 为省略
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
---|---|---|---|---|---|---|
ca0889cdb68f | — | — | — | — | — | ---- |
把容器保存为镜像
sudo docker commit ca0889cdb68f(容器ID CONTAINER ID) torch041(要保存的镜像名)
查看镜像
sudo docker images
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
---|---|---|---|---|
torch041 | latest | ba9c647efa24 | 50 seconds ago | 7.47GB |
把镜像保存到本地
sudo docker save ba9c647efa24(镜像ID IMAGE ID) >/home/xj/torch041.tar
#这种方式会出现导进去没有tag等信息
推荐使用 \color{red}{推荐使用} 推荐使用
sudo docker save torch041:latest (REPOSITORY:TAG) -o /home/xj/test2.tar
2、直接使用export包容器保存成容器包
sudo docker export f691d3963a63(容器ID) /home/xj/test3.tar
5、退出容器
1、退出关闭容器
exit
2、退出不关闭容器
ctrl+q+p
6、进入后台运行的容器
1、使用docker attach命令
sudo docker attach pedantic_antonelli(容器名) 或者 sudo docker attach 1ac28784403f(容器ID)
缺点:只要这个连接终止,或者使用了exit命令,容器就会关闭
2、使用docker exec命令
docker exec -it pedantic_antonelli /bin/sh 或者 docker exec -it c87bed62f1a9 /bin/sh
这个命令即使使用exit命令或者终端关闭 。容器也不会退出,只会在后台运行
可以使用
sudo docker stop c87bed62f1a9
来关闭这个容器
7、修改root密码
7.1、以root身份进入
passwd
#然后修改即可
7.2、以其他身份进入
可以另起终端进行登录
sudo docker exec -it --user root e7554a096748 /bin/bash
# 然后
passwd
#即可修改
这时就可以在原来的终端进行
su root
8、清理docker所占空间(有风险请谨慎)
sudo docker system prune
9、docker使用宿主机界面
- 9.1 在宿主机执行以下步骤
1、安装xserver
$ sudo apt install x11-xserver-utils
2、许可所有用户都可访问xserver
xhost +
- 9.2 运行docker
sudo docker run -ti -h ubuntu --hostname ubuntu -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix
-v /home/unitree/opject:/share --gpus all yolact_edge_image:latest /bin/bash
-h ubuntu 指定docker的hostname
–hostname ubuntu 使用指定的hostname