docker最全记录笔记

docker 安装教程:https://zhuanlan.zhihu.com/p/580156606

docker官网下载地址:https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/
nvidia-docker官网下载地址:http://mirror.cs.uchicago.edu/nvidia-docker/libnvidia-container/stable

1) docker安装
cd docker_deb
sudo dpkg -i containerd.io_1.6.9-1_amd64.deb
sudo dpkg -i docker-ce-cli_20.10.24_3-0_ubuntu-bionic_amd64.deb
sudo dpkg -i docker-ce_20.10.24_3-0_ubuntu-bionic_amd64.deb

卸载docker:
sudo dpkg -P docker-ce
sudo dpkg -P docker-ce-cli
sudo dpkg -P containerd.io

2) nvidia-docker2安装:
cd nvidia-docker
sudo dpkg -i libnvidia-container1_1.9.0-1_amd64.deb
sudo dpkg -i libnvidia-container-tools_1.9.0-1_amd64.deb
sudo dpkg -i nvidia-container-toolkit_1.9.0-1_amd64.deb
sudo dpkg -i nvidia-docker2_2.9.1-1_all.deb
sudo dpkg -i nvidia-container-runtime_3.9.0-1_all.deb

3)修改镜像源
cd /etc/docker
sudo gedit daemon.json
#添加该行到daemon.json文件里
{"registry-mirrors": ["https://registry.docker-cn.com"]}
docker加载配置文件,重启docker:
systemctl daemon-reload
systemctl restart docker

#sudo gedit /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"graph":"/media/data/daigang/docker"
}
#graph表示需要将docker安装的位置,默认安装到/var/lib/docker,因此可以指定安装到其他未知。

4)编写Dockerfile,Dockerfile制作ubuntu:20.04镜像
cat Dockerfile
内容为:
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
ENV LANG C.UTF-8
RUN sed -i 's@http://archive.ubuntu.com/ubuntu/@http://mirrors.aliyun.com/ubuntu/@g' /etc/apt/sources.list
#RUN apt-get install ffmpeg libsm6 libxext6  -y
然后执行:
cd /media/sdb/2023/limit_sign_project/docker_softwares/docker_file
sudo docker build -t ubuntu20 .
ubuntu20为你构建的镜像名称,.表示当前目录。通过当前目录的Dockerfile文件来构建docker

构建完成后,可以使用以下命令查看所有本地的Docker镜像:
sudo docker images


5)创建容器test并后台运行test容器的命令
sudo docker run -itd --gpus all --privileged --name test new_ubuntu22:v0
#docker rename test ms

sudo docker run -itd --gpus all --privileged --name mms ubuntu20_cuda116:v0
#容器内部需要安装gcc 和g++
#apt install gcc g++

sudo docker run -it --gpus all --privileged --name mms_v1.0 ubuntu20_cuda116:v0

6)进入容器
sudo docker start ms
sudo docker exec -it ms /bin/bash


7)docker复制命令:
sudo docker cp ./sources.list ms:/etc/apt/sources.list
sudo docker cp ms:/etc/apt/sources.list ./


8) 更换apt清华源
#
cd /media/sdb/2023/limit_sign_project/docker_softwares/docker_file
sudo docker cp ./sources.list mms:/etc/apt/sources.list
然后
apt install apt-transport-https
apt install ca-certificates
apt install update

9)将容器打包成镜像

# sudo docker ps -a
# 查看所有容器id
#sudo docker commit -p -a "dg" -m "create mms img" eda05ad514f8 new_ubuntu22:v0
#-p    在 commit 时,将容器暂停
#eda05ad514f8为容器的id
sudo docker commit -a "dg" -m "create mms mirror image" 342bddda7f91 ubuntu20_mms:v0


# 将容器打包成镜像
docker commit -a "dg" -m "create ms  image" af58c6836e3a ubuntu20_mms:v4


docker commit -a "dg" -m "create ms mirror image" af58c6836e3a mms_image:v0


#00bf907f7353为容器的id
#ubuntu20_ms:v3,ubuntu20_ms为你取名的镜像名称,v3为tag的id

# sudo docker ps -a
# 查看所有容器id
sudo docker commit -a "dg" -m "create mms mirror image" 342bddda7f91 ubuntu20_ms:v0
#89928e9d830b为容器的id
#ubuntu20_mms:v0,ubuntu20_mms为你取名的镜像名称,v0为tag的id
docker commit -a "dg" -m "create mms mirror image v2" b51258ced419 ubuntu20_ms:v2

docker ps -a
docker commit -a "dg" -m "create mms mirror image v4" a91e6dd38a45 ubuntu20_ms:v4


docker commit -a "dg" -m "create mms mirror image v4" a91e6dd38a45 ubuntu20_ms:v4


10)将镜像打包为 tar 文件

sudo docker save [OPTIONS] IMAGE [IMAGE...]
sudo docker save -o ubuntu20_mms.tar ubuntu20_ms:v0

ubuntu20_ms.tar为需要压缩的镜像包,ubuntu20_ms:v0为镜像名称和镜像tag的id
#sudo docker images #查看所有的镜像

10)将文件new_ubuntu22.tar复制到目标电脑中

11)从tar文件载入镜像,目标电脑需要安装docker

docker load [OPTIONS]
sudo docker load < ubuntu20_ms.tar

#从tar文件载入镜像,目标电脑需要安装docker


docker run --name yu_mysql -v C:\Users\Administrator\docker\mysql\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=pwd123456 -d -p 33062:3306 yuy:v1 /entrypoint.sh mysqld

自定义容器名
$ docker run --name=自定义名称 -i -t IMAGE /bin/bash
eg: $ docker run --name=container01 -i -t ubuntu /bin/bash


docker run -it -v /test:/soft centos /bin/bash

docker run -itd -v /test:/soft centos /bin/bash

docker run -itd -v /media/sdb/2023/limit_sign_project/mount:/soft ubuntu20_ms /bin/bash


docker run -itd -v /media/sdb/2023/limit_sign_project/mount:/soft ubuntu20_ms /bin/bash


#-v

sudo docker run -it -v /media/sda/2023/limit_sign_project/mount:/media/sda/2023/limit_sign_project/mount -p 8008:8008 ubuntu20_ms:v1 /bin/bash

#执行镜像的命令:
sudo docker run --gpus all -itd -v /media/sda/2023/limit_sign_project/mount:/media/sda/2023/limit_sign_project/mount -p 8008:8008 ubuntu20_ms:v0 /bin/bash


sudo docker run --gpus all -it -v /media/sda/2023/limit_sign_project/mount:/media/sda/2023/limit_sign_project/mount -p 8008:8008 ubuntu20_ms:v0 /bin/bash /home/algorithm_service_v5/run.sh

sudo docker run --gpus all -it -p 8008:8008 -v /media/sdb/2023/limit_sign_project/mount:/media/sdb/2023/limit_sign_project/mount ubuntu20_ms:v0

#启动容器
sudo docker run --gpus all -it -p 8008:8008 -v /home/yf/project/project/3d/SphereFormer-master:/test 4e8cd721fabf

#车道线启动本机
sudo docker run --gpus all -it -p 8008:8008 -v /home/yf/project/rcs/project/ufld/Ultra-Fast-Lane-Detection-v2-master:/test 632278b72312

#点云分割
sudo docker run --gpus all -it -v /media/sdb/2023/limit_sign_project/mount:/media/sdb/2023/limit_sign_project/mount ubuntu20_ms:v0

车道线检测
A6000:  30.123
docker run -d --shm-size=16g --name ufld --gpus all -it -p 8008:8008 -v /home/yf/projects/ufld/datas:/test/datas 80109b4fcd45

RTX3090:  30.145
V2:
docker run -d --shm-size=16g --name ufld --gpus all -it -p 8008:8008 -v /media/data/yf/projects/ufld/data:/test/datas 80109b4fcd45


v1:
docker run -d --shm-size=16g --gpus all -it --name ufv1 -v /media/data/yf/projects/ufv1/Ultra-Fast-Lane-Detection-master:/test 80109b4fcd45

H800
docker run -d --shm-size=16g --name ufld --gpus all -it -p 8008:8008 -v /disk21/yf/ufld/ufld:/test  efd0b1aec155

orin 100.45 tensorrt
docker run -d --shm-size=16g --runtime=nvidia -it --name ufld -v /opt/yf/tensorrt:/test 335c3bdcbdcd

nvidia


docker pull nvcr.io/nvidia/tensorrt:22.04-py3
tensorrt本机
docker run --gpus all -it --name trt -v /home/yf/project/tensorrt/tensorrtx:/test 7ef3481e3ca1


#执行镜像的命令:
第一步(创建docker容器):
sudo docker run --gpus all -it -p 8008:8008 --name mms -v /media/sdb/2023/limit_sign_project/mount:/media/sdb/2023/limit_sign_project/mount ubuntu20_ms:v0

第二步(到运行程序目录):
cd /home/algorithm_service_v5
第三步 (执行程序):
sh run.sh


#/media/sdb/2023/limit_sign_project/mount:/media/sdb/2023/limit_sign_project/mount为主机的目录:docker里面的共享的目录,其中docker里面的共享的目录不需要存在(因为为了使目录共享)
#--name mms为创建的容器id


docker stop mms
docker run --gpus all -it -p 8008:8008 --name mms -v /media/sdb/2023/limit_sign_project/mount:/media/sdb/2023/limit_sign_project/mount ubuntu20_ms:v1 /bin/bash /home/run_ms.sh


让普通用户执行docker相关指令时无需sudo
(1)创建名为docker的组,一般在安装docker的时候自动创建,此步骤可省略:
sudo groupadd docker
(2)将当前用户加入组docker:
sudo gpasswd -a ${USER} docker
${USER}为当前用户
(3)重启docker服务:
sudo systemctl restart docker
(4)重新启动服务器
shutdown -r now
(5)操作完毕,验证一下,现在可以不用带sudo了:
docker ps -a
docker images

让docker容器与主机的时间同步。
解决办法:把宿主机的localtime文件复制到容器中
docker cp /etc/localtime 容器名:/etc/
或者:
在创建 Docker 容器时,加上 “-v /etc/localtime:/etc/localtime:ro” 参数,让容器使用宿主机的时间,容器时间与宿主机时间同步。

如,需要使用超级权限执行python脚本:sudo python run.py,密码:123。则shell指令可写为:
echo 123 | sudo -S python run.py

#/media/sda/2023/limit_sign_project/mount/out01jl:/soft
#/soft/out01jl


挂载目录查看:https://zhuanlan.zhihu.com/p/540827187


会导致镜像越来越大。10G的镜像经过4次commit就变成100G。
我们可以通过:docker system df -v,在【Containers space usage:】中查看容器的大小
虽然显示只有10G,但是commit后会非常大。

所以在此找到2种方法:
方法1:直接打包容器,然后import为镜像img1

1) 先重命名挂载目录或取消挂载目录
    # 重命名挂载目录
    mv /media/sdb/2023/limit_sign_project/mount /media/sdb/2023/limit_sign_project/mount2
    # /media/sdb/2023/limit_sign_project/mount为挂载的目录路径

    # 或 取消挂载目录
    umount -v /home/ld/mount      通过挂载点卸载
    #/home/ld/mount为挂载的目录路径

2)容器打包镜像
    第1步查看容器id
    docker ps -a
    
    第2步先压缩容器为tar
    #docker export [OPTIONS] CONTAINER
    docker export -o ms_v5.tar ms_v0.4
    其中:ms_v0.4为容器名称,ms_v5.tar为压缩容器的tar

    第3步将压缩的tar打包成镜像
    docker import mms_v5.tar ms_image_v5:v5
    其中: ms_v5.tar为压缩容器的tar,ms_image_v5:v5为镜像


3)将镜像打包为 tar 文件
    docker save -o ms_image_v5.tar ms_image_v5:v5
    其中ms_image_v5.tar为压缩的镜像包,ms_image_v5:v5为镜像名称和镜像tag的id


4)从镜像的tar文件载入镜像,目标电脑需要安装docker
    docker load < ms_image_v9.tar
    其中ms_image_v9.tar为已经压缩的镜像包

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值