docker run :创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
-it: 以交互模式运行容器;
--gpus all:使用GPU(docker19.03及以上版本,安装nvidia-container-toolkit)
--name="nginx-lb": 为容器指定一个名称;
--ipc=host:共享宿主机的内存;
-v /home/yolov5:/home/yolov5:挂载宿主机目录到容器中;
-w /home/yolov5/, 指定容器的工作目录;
-p 8080:8080, 指定容器暴露的端口;
-d: 后台运行容器,并返回容器ID;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
-e username="ritchie": 设置环境变量;
--entrypoint /bin/bash:自启动命令;
--restart=always:在容器退出时总是重启容器;
个人经验:
1.算法训练或推理时,由于部分镜像创建容器时默认内存较小,最好加上--ipc=host,避免算法运行时崩溃;
2.个人习惯加上 -v /etc/localtime:/etc/localtime:ro,使容器时间同宿主机同步,有时可避免算法训练中断、文件时间错误等问题;
3.当使用dockerfile打包自启动镜像时,创建容器调试时可加上--entrypoint /bin/bash来屏蔽先前设置的自启动命令进入容器,查看报错原因,方便重新打包;
4.普通用户使用docker,不用每次输入sudo,而且按tab键,容器名称可自动补齐:
(1)把user1这个用户加到docker用户组
sudo usermod -aG docker user1
或
sudo gpasswd -a user1 docker
(2)重启docker
sudo service docker restart
5.直接使用docker commit将容器打包为镜像,即使没有任何改变,容量也会增加,我碰到的是增加几百M,而使用dockerfile打包镜像,不会出现上述现象。