常用的容器部署

整理了一下常用的容器


1.移除老容器

sudo apt-get remove docker docker-engine docker.io containerd runc

2.安装容器环境

curl -fsSL https://get.docker.com | bash -s docker —mirror Aliyun
docker info
systemctl enable docker
systemctl enable docker
systemctl enable docker.socket


3.修改容器目录

systemctl stop docker.socket
systemctl stop docker
vi  /usr/lib/systemd/system/docker.service
# 增加容器的数据目录 --data-root=/data/docker
systemctl daemon-reload
systemctl start docker.socket
systemctl start docker
systemctl status docker.socket
systemctl status docker
docker info

4.换源

  1. vi /etc/docker/daemon.json
    {
     "registry-mirrors" : [
       "https://ustc-edu-cn.mirror.aliyuncs.com/",
       "https://mirror.ccs.tencentyun.com",
       "http://registry.docker-cn.com",
       "http://docker.mirrors.ustc.edu.cn",
       "https://mirror.baidubce.com",
       "http://hub-mirror.c.163.com"
     ],
     "insecure-registries" : [
       "registry.docker-cn.com",
       "docker.mirrors.ustc.edu.cn"
     ],
     "debug" : true,
     "experimental" : true
    }

gitlab

docker pull gitlab/gitlab-ce:latest

mkdir -p /opt/gitlab    
mkdir -p /opt/gitlab/config # 映射到 Glitlab 容器中的配置目录
mkdir -p /opt/gitlab/logs # 映射到 Glitlab 容器中的日志目录
mkdir -p /opt/gitlab/data # 映射到 Glitlab 容器中的数据目录 

docker run --detach \
	--hostname=192.168.1.50 \
	--publish 443:443 \
	--publish 9001:80 \
	--publish 8022:22 \
	--name=mygitlab \
	--restart=always \
	--volume /opt/gitlab/config:/etc/gitlab \
	--volume /opt/gitlab/logs:/var/log/gitlab \
	--volume/opt/gitlab/data:/var/opt/gitlab \
	--volume /etc/localtime:/etc/localtime:ro \
	--privileged=true \
	gitlab/gitlab-ce:latest

修改gitlab仓库http下载链接

vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

#修改gitlab.yml如下:
gitlab:
    ## Web server settings (note: host is the FQDN, do not include http://)
    host: 192.168.1.50
    port: 9001
    https: false
    time_zone: "Asia/Shanghai" 
ssh_host: 192.168.1.50
ssh_port: 1022


gitlab-ctl restart


portainer

docker run -d --name=portainer \
	--publish 9091:9000 \
	--restart=always \
	-v /var/run/docker.sock:/var/run/docker.sock \
	-v /opt/portainer/:/data:rw \
	portainer/portainer-ce:latest

mariadb

docker run -d \
    --name db \
    --restart=always \
    -v /opt/db/sqlbak:/sqlbak:rw \
    -v /opt/db/data:/var/lib/mysql:rw \
    -e MYSQL_ROOT_PASSWORD=09UKtHVPTH2NnxKjhiq3JzAFGNVyHHTC \
    mariadb

phpmyadmin

docker run -d \
-e PMA_HOST=db \
--name phpmyadmin \
--restart=always \
phpmyadmin:latest

mm-wiki

docker container run -d \
    --restart=always \
    --name wiki \
    -p 8081:8080 \
    --network coust-net \
     -v /opt/mm-wiki/bin:/mm-wiki \
     -v /opt/mm-wiki/data:/data \
     217heidai/mm-wiki

caddy

docker search caddy


深度学习  nvidia-docker2

# 配置源
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu18.04/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

# 安装nvidia docker
sudo apt-get install nvidia-docker2
sudo systemctl restart docker


# 测试CUDA是否能够运行
# https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/supported-tags.md
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
docker run --rm --gpus all nvidia/cuda:11.0.3-base nvidia-smi
docker run --rm --gpus all nvidia/cuda:12.2.0-base nvidia-smi

labelimg

docker pull ludwigprager/labelimg



#  远程 export DISPLAY=192.168.0.111:0.0
# 本地  export DISPLAY=:0.0
xhost +
 


docker run -ti --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $DIR/images/:/images/ \
ludwigprager/labelimg:1

# --device=/dev/video0:/dev/video0 \






#export DISPLAY=$1:0.0
DIS=$(who -mu | awk '{print $NF}'):0.0
DISPLAY=`echo $DIS | sed 's/[()]//g'`
xhost +
docker run -ti --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /data/cloudeye/comm_img:/images/ \
ludwigprager/labelimg:1

labelme

docker pull wkentaro/labelme

xhost +
docker run -it \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=$DISPLAY \
-v /opt/work_docker/labelme/:/root/workdir \
wkentaro/labelme




#export DISPLAY=$1:0.0
DIS=$(who -mu | awk '{print $NF}'):0.0
DISPLAY=`echo $DIS | sed 's/[()]//g'`
xhost +
docker run -it --rm \
        -v /data/cloudeye/comm_img:/root/workdir \
        -v /tmp/.X11-unix:/tmp/.X11-unix \
        -e DISPLAY=$DISPLAY \
         wkentaro/labelme


yolov5_gpu

#指定端口映射、指定GPU模式进行启动
sudo docker run -it \
--runtime=nvidia \
-v /opt/work_docker/yolov5:/project \
-p 16022:22 \
-p 16027:6066 \
--ipc=host  \
--name yolov5_gpu \
--gpus all \
ultralytics/yolov5:latest




FROM ubuntu:latest
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:123456' | chpasswd
RUN sed -ri 's/^PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]


 https://github.com/ultralytics/yolov5

mkdir -p  /usr/src/datasets/coco128/images/train2017/ 
cp -r /work/coco128/* /usr/src/datasets/coco128/images/train2017/ 
cp /work/taoguan_imgs/yolov5n.pt  ./

apt install  openssh-server   

/etc/sshd_config
PermitRootLogin yes

password root


/etc/profile  env

service ssh restart


ssh 到 docker

训练 
 nohup  python train.py --data /work/imgs/coco128_cfg1.yaml   --weights yolov5n.pt >train_task1.txt &

导出
python  export.py --data /work/imgs/coco128_cfg1.yaml --weights best.pt --train --simplify --include onnx

paddleocr

# jupyter notebook
docker run --name ppocr \
  -v $PWD:/mnt \
  -p 8888:8888 \
  --shm-size=32g \
  paddlecloud/paddleocr:2.5-cpu-latest 

#CPU
# 这是加上参数 --shm-size=32g 是为了防止容器里内存不足
docker run --name ppocr\
 -v $PWD:/mnt \
  -p 8888:8888 \
  -it --shm-size=32g \
  paddlecloud/paddleocr:2.5-cpu-efbb0a /bin/bash

#GPU
docker run --name ppocr \
--runtime=nvidia \
-v $PWD:/mnt \
-p 8888:8888 \
-it --shm-size=32g \
paddlecloud/paddleocr:2.5-gpu-cuda10.2-cudnn7-latest /bin/bash

相关文档


ESXI  显卡直通

驱动下载  https://www.nvidia.cn/Download/index.aspx?lang=cn

找到相应平台的驱动下载

上传到 /PATH 目录


安装 

 

esxcli software vib install -v  /PATH/NVIDIA-vGPU-kepler-VMware_ESXi_6.5_Host_Driver_367.134-1OEM.650.0.0.4598673.vib --maintenance-mode


web管理界面   管理   硬件-->PCI设备-->直通活动    选择相应的硬件  激活 直通 

虚拟机配置

内存设置     预留 64G

高级参数配置

hypervisor.cpuid.v0=FALSE      #这个代码是欺骗显卡,让它误以为自己运行在物理机上 
pciPassthru.64bitMMIOSizeGB=64       
#注意:这里的数值计算公式为显卡数量与单卡显存数的乘积向上舍入到下一个2的次幂,
例如我的p40(24G)计算方式为:1*24=24≈32;如果是三张p40(24G)计算方式为3*24=72≈128。
但是我实际测试下来,如果填写32就无法打开机,只有写64才能开机。
pciPassthru.use64bitMMIO=TRUE        #这个是调用内存映射


克隆vm  只考虑了一个虚拟硬盘的情况  ./clone  vm1name  newvmname

#!/bin/bash

echo $1 $2
if [ ! -d "$PWD/$1" ]; then
    echo "src vm not exist $PWD/$1"
    exit 0
fi

if [ -d "$PWD/$2" ]; then
    echo "des vm  is exist $PWD/$2"
    exit 0
fi

mkdir "$PWD/$2"
vmkfstools -i $PWD/$1/$1.vmdk -d thin $PWD/$2/$2.vmdk
cp $PWD/$1/$1.nvram  $PWD/$2/$2.nvram
cp $PWD/$1/$1.vmsd  $PWD/$2/$2.vmsd
cp $PWD/$1/$1.vmx  $PWD/$2/$2.vmx
echo 's|$1|$2|g'  "$PWD/$2/$2.vmx"
sed -i "s|$1|$2|g"  "$PWD/$2/$2.vmx"
vim-cmd solo/registervm   "$PWD/$2/$2.vmx"
exit 0