docker 经常使用总结

2021年11月24日 阅读数:0
这篇文章主要向大家介绍docker 经常使用总结,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

1.关于Dockerfile
本身定义 Dockerfile ,构建本身要的镜像,以下:linux

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/profile

ENV LIBRARY_PATH /usr/local/cuda/lib64/stubs

ENV 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.构建镜像git

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

3.基于镜像构建 CONTAINERgolang


#--name 自定义 容器名字,否则会自动起一个默认的名字
#前台运行,退出 exit 就会退出容器,里面的东西也会没了 
#-t:进入终端;-i:得到一个交互式的链接,经过获取container的输入
docker run -it -p 8080:8080 -v /a/b:/home/a/b --name=one_docker  mydocker /bin/bash

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

4.gpu 相关docker

#启用 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.

5.如何进入进入容器
(1)docker attach
` docker attach container_id
`当多个窗口同时使用该命令进入该容器时,全部的窗口都会同步显示。若是有一个窗口阻塞了,那么其余窗口也没法再进行操做。
当使用 exit 退出是,会同时退出容器ubuntu

由于这个缘由,因此docker attach命令不太适合于生产环境,平时本身开发应用时可使用该命令。 vim

`#可使用这个命令重启
docker restart container_id`segmentfault

(2)使用docker exec 进入Docker容器bash

sudo docker exec -it 0c98227630f(或者容器名称) /bin/bash 
这个方式执行 exit 退出,不会退出容器

6.其余命令
`#查看容器信息
docker inspect container_id`curl

`#删除 容器
docker rm -f CONTAINER_ID`ui

#删除镜像 image
/#docker rmi -f image_id ##-f:表示强制删除镜像;image_id:镜像id
docker image ls | grep '<none>' | 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...