docker安装:
uname -r 查看当前的kernel版本
nvidia-docker安装:
方法一:https://github.com/NVIDIA/nvidia-docker
卸载旧版本docker
sudo apt-get remove docker docker-engine docker.io
更新系统软件
sudo apt-get update
安装依赖包
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
添加官方密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
添加仓库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
再次更新软件
sudo apt-get update
安装docker ce
sudo apt-get install docker-ce
在生产系统上,可能会需要应该安装一个特定版本的Docker CE,而不是总是使用最新版本:列出可用的版本:
apt-cache madison docker-ce
安装特定的版本:
sudo apt-get install docker-ce=<VERSION>
查看docker版本
docker -v
查看docker服务是否启动:
systemctl status docker
若未启动,则启动docker服务:
sudo systemctl start docker
启动docker 后台服务
sudo service docker start
镜像加速
sudo vim /etc/docker/daemon.json
添加:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
测试docker hello world
sudo docker run hello-world
Nvidia-docker安装:
#If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker
#Add the package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
#Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
#Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
取消sudo的输入:
可以先通过指令查看是否有用户组:
cat /etc/group | grep docker
如果有跳过第一步!
第一步:创建docker用户组
sudo groupadd docker
第二步:用户加入到用户组
sudo usermod -aG docker 用户名
第三步:检查是否有效
cat /etc/group
第四步:重启docker-daemon
sudo systemctl restart docker
第五步:给docker.sock添加权限
sudo chmod a+rw /var/run/docker.sock
解决docker下载慢的问题:
进入docker容器中->vim /etc/apt/sources.list
全部换成aliyun的源,可以从你的本地电脑中拷贝参数,对一些参数作一些修改
docker命令集合:
搜索docker:
docker search xx
从docker云中拉取镜像文件:
docker pull Image:Tag
docker image pull xxx
docker ps -a
列出所有container
docker images
列出所有image
运行镜像文件:
docker run -it --name "容器名" Image:Tag
docker rm containerID
删除容器
docker rmi ImageID
删除image
从主机拷贝文件到container中:
docker cp 主机目录 containerID:/home/Documents(docker容器中的目录)
#打开已创建的容器
docker attach containerID
docker attach containerName
#结束已打开的容器
docker pause containerID
docker pause containerName
#存一下image
docker commit -m "commit message" -a "author" containerID "new Image Name"
#保存image到本地
docker save -o 本机目录保存地址 imageID
e:docker save -o ~/1.tar ImageID
docker save -o 本机目录保存地址 imageName:Tag
#从本地加载image到docker容器
docker load -i 本机目录保存地址
#从容器中导出xx.tar
docker export -o ~/xx.tar 容器名
#导入
docker import ~/xx.tar
指定镜像的REPOSITORY、TAG
docker import - myubuntu:tag < /home/myubuntu-export-1204.tar
我们可以使用cat centos.tar | docker import - my/centos:v888 导入容器快照作为镜像
#跑nvidia-docker
docker run -it --runtime=nvidia --rm --name "your containnerName 你的容器名字,自己取" Image:Tag
#进入一个已经在运行容器
docker exec -it containerID /bin/bash
docker exec -it containerName /bin/bash
#指定IP运行
docker run -it --name "你设定的容器名" --network "host你的IP" Image:Tag
开始停止container:
docker stop containerID
docker start containerID
docker 历史查看:
docker history [OPTIONS] IMAGE
-H :以可读的格式打印镜像大小和日期,默认为true;
–no-trunc :显示完整的提交记录;
-q :仅列出提交记录ID。
exit 退出当前容器
–no-install-recommends参数来避免安装非必须的文件,从而减小镜像的体积
/etc/ 配置文件
/var/ 存储各种变化的文件
docker run 参数意思:
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
–name=“nginx-lb”: 为容器指定一个名称;
–dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
–dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h “mars”: 指定容器的hostname;
-e username=“ritchie”: 设置环境变量;
–env-file=[]: 从指定文件读入环境变量;
–cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
–net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
–link=[]: 添加链接到另一个容器;
–expose=[]: 开放一个端口或一组端口;
http服务可用:
sudo gedit /etc/docker/deamon.json
{
“insecure-registries”:[“node02.magedu.com:5000”]
}