注意
推荐环境:Centos7,文档环境:Centos7
Docker介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Centos7环境配置
关闭SELinux
## 查看状态
getenforce
## 临时关闭
##setenforce 1 设置SELinux 成为enforcing模式
setenforce 0
## 永久关闭
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
设置后需要重启才能生效
关闭防火墙
## 临时关闭
systemctl stop firewalld
## 查看状态
firewall-cmd --state
## 取消开机自启
systemctl disable firewalld
配置网络服务
vi /etc/sysconfig/network-scripts/ifcfg-eth0
把onboot=no改成onboot=yes
## 重启网络服务
service network restart
安装Docker
centos7 可能自带了较老版本,新的已经是docker-ce了。所以按照官方的步骤:https://docs.docker.com/engine/install/centos/
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# docker被墙,改成国内源
$
$ sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ sudo yum install docker-ce docker-ce-cli containerd.io
让普通用户也能运行 docker
默认情况下,普通用户运行 docker 会有权限问题,每次运行都得加 sudo,很麻烦。把你的账号加到 docker 用户组后就不用加 sudo 了:
sudo usermod -aG docker $USER
配置tcp管理端口
vi /usr/lib/systemd/system/docker.service
# 找到下面的
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 改成下面的
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
安装Docker-Compose
官方地址太慢,换一个:
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.5.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
配置自启动
systemctl enable docker
禁用Docker自动更新
sudo yum-config-manager --disable docker-ce-stable
修改Docker数据目录
vim /etc/docker/daemon.json
增加以下配置:
{
"data-root": "/home/docker"
}
安装Portainer
Portainer是docker的图像化管理工具,方便日常对容器的管理运维。
docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer-ce
执行成功,正常则会在控制台返回一串字符串(容器ID)。此时在浏览器访问 http://server_ip:9000
则可以进入portainer界面,根据提示设置管理员密码,如下图所示:

并添加docker服务,如下图所示:

选择Docker
,点击Connect
,成功则自动进入到管理界面了。
使用GPU
本文只针对N卡在Centos7下面的情况。其他的场景自行搜索资料
屏蔽nouveau
屏蔽nouveau
检查是否存在服务:
lsmod | grep nouveau
如果有显示内容,则存在服务;如果没有则跳过此步。
打开文件
vim /lib/modprobe.d/dist-blacklist.conf
将nvidiafb注释掉:
#blacklist nvidiafb
然后添加以下语句:
blacklist nouveau
options nouveau modeset=0
重建 initramfs image
mv /boot/initramfs-(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
重启
reboot
重启服务器,执行上面检查命令,确保没有内容输出
安装依赖
yum install kernel-devel gcc dkms -y
下载驱动:从官网下载即可 https://www.nvidia.cn/Download/index.aspx?lang=cn
安装驱动:
chmod +x NVIDIA-Linux-x86_64-510.73.05.run
./NVIDIA-Linux-x86_64-510.73.05.run --kernel-source-path=/usr/src/kernels/3.10.0-1160.66.1.el7.x86_64 -k $(uname -r)
测试安装结果,执行如下命令,如果能看到GPU信息则安装成功。
nvidia-smi
配置docker
打开daemon.json文件:
vi /etc/docker/daemon.json
修改runtimes
为如下内容,不能为runc。
{
"default-runtime":"nvidia",
"runtimes": {
"nvidia": {
"path":"/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
Docker中使用GPU
测试镜像:
docker run --gpus all nvidia/cuda:9.0-base nvidia-smi
如果需要自定义镜像,可拉取官方的cuda镜像进行修改,加入自己的环境。在部署容器时,注意加上--gpus
参数,后接分配核心数量,all
则代表可使用所有GPU核心。