docker|docker 常用总结

1.关于Dockerfile
自己定义 Dockerfile ,构建自己要的镜像,如下:

FROM nvidia/cuda:11.4.2-runtime-ubuntu18.04 #MAINTAINER RUN apt-get update && apt-get install -y git vim wget curl #go RUN cd /tmp && wget https://golang.org/dl/go1.14.6.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.14.6.linux-amd64.tar.gz RUN cd /tmp && rm go1.14.6.linux-amd64.tar.gz RUN mkdir -p /home/go/src && mkdir -p /home/go/bin && mkdir -p /home/go/pkg RUN echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profileENV LIBRARY_PATH /usr/local/cuda/lib64/stubsENV NV_LIBNCCL_DEV_PACKAGE_NAME libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION 2.11.4-1 ENV NCCL_VERSION 2.11.4-1 ENV NV_LIBNCCL_DEV_PACKAGE ${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}+cuda11.4

2.构建镜像
#-f:指定 Dockerfile 名称 -t:为构建的镜像打上标签 docker build -f my.Dockerfile -t mydocker .

3.基于镜像构建 CONTAINER
#--name 自定义 容器名字,不然会自动起一个默认的名字 #前台运行,退出 exit 就会退出容器,里面的东西也会没了 #-t:进入终端; -i:获得一个交互式的连接,通过获取container的输入 docker run -it -p 8080:8080 -v /a/b:/home/a/b --name=one_dockermydocker /bin/bash

#创建一个守护态的Docker容器 docker run -itd --name=one_docker mydocker /bin/bash

4.gpu 相关
#启用 gpu #这个会跑所有 gpu 卡 docker run --gpus all -itd --name=one_docker mydocker /bin/bash

#跑指定 gpu 卡,将 id 换成你的 卡 docker run --gpus "device=${id}" -itd --name=one_docker mydocker /bin/bash docker run --gpus device=1 -itd --name=one_docker mydocker /bin/bash

#这个因为版本问题,可能会报错,所以用上面的方式 docker run --runtime=nvidia --name=one_docker -tid mydocker docker: Error response from daemon: Unknown runtime specified nvidia.

【docker|docker 常用总结】5.如何进入进入容器
(1)docker attach
` docker attach container_id
`当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。
当使用 exit 退出是,会同时退出容器
因为这个原因,所以docker attach命令不太适合于生产环境,平时自己开发应用时可以使用该命令。
`#可以使用这个命令重启
docker restart container_id`
(2)使用docker exec 进入Docker容器
sudo docker exec -it 0c98227630f(或者容器名称) /bin/bash 这个方式执行 exit 退出,不会退出容器

6.其他命令
`#查看容器信息
docker inspect container_id`
`#删除 容器
docker rm -f CONTAINER_ID`
#删除镜像 image /#docker rmi -f image_id ##-f:表示强制删除镜像;image_id:镜像id docker image ls | grep '' | awk '{print $3}' | xargs docker rmi -f

7.关于 docker run
(1)如何修改一个创建好的docker container的run参数?
docker run 没法修改,只能另外创建,但是还好不用完全重头来,用commit命令可以基于当前修改的内容创建一个新的image。
如,忘了设置port,volume,则
docker stop container a_container docker commit a_container b_image docker run --name b_container -itd -p ... -v ... b_image

参考文章:https://www.cnblogs.com/joker...

    推荐阅读