简单搭建自己所需要的docker环境

简单利用 docker搭建自己所需开发环境

docker的基本理论

参考:https://www.runoob.com/docker/docker-tutorial.html
重点需要弄清楚 镜像容器

准备条件

首先需要安装

  • docker-ce
  • nvidia-docker (可选,如果容器需要调用系统的gpu则必须要安装)
    安装 nvidia-docker 参考链接: https://github.com/NVIDIA/nvidia-docker
    如果遇到找不到有效的 OpenPGP 数据的错误可以参考https://www.cnblogs.com/jimchen1218/p/14186262.html或者https://blog.csdn.net/anglemanyi/article/details/110917108

安装 docker-ce

安装 docker-ce 参考: https://www.runoob.com/docker/ubuntu-docker-install.html

安装 nvidia-docker

参考: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker
讲普通用户加入到docker 用户组中 : https://cloud.tencent.com/developer/article/1912506

  1. Setup the stable repository and the GPG key
    因为我使用的 debian 系的系统
cat /etc/debian_version #查看debian版本
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/debian9/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
  1. 安装 nvidia-container-toolkit
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

docker 换源

docker更换国内镜像,新建 /etc/docker/daemon.json

{
	"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com", "https://9iudsi8t.mirror.aliyuncs.com"],
	"exec-opts": ["native.cgroupdriver=systemd"]
}

获取相关镜像

  1. dockerhub 上搜索自己想要的基础镜像(也可以使用docker search命令)

  2. 获取想要的镜像,然后pull

docker pull ubuntu:18.04
docker images # 查看本地的镜像 

创建容器并安装相应依赖

  1. 创建容器

创建容器命令如下:

docker container run --gpus all --user root -it --ipc=host -v /home:/home dockerduong/cuda10.2-ubuntu18.04:latest /bin/bash

如果不需要使用gpu 则

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

另外旧版的 nvidia-docker 调用 gpu的方式:

docker run --runtime=nvidia [OPTIONS] IMAGE [COMMAND] [ARG...]

docker run的参数可以参考:https://www.runoob.com/docker/docker-run-command.html

  1. 容器换源以及安装相关依赖
cat /etc/issue # 在容器中查看 linux 版本
cp /etc/apt/sources.list /home/cc/ # 将容器中的源拷贝到 本机下,因为新的容器没有编辑器(有可能有nano编辑器吧),在本机上用文本编辑器(vim gedit vscode)将文件修改用来换源
mv /home/cc/sources.list /etc/apt/ #将本机修改后的文件替换掉容器中的文件
apt-get update
apt-get install gcc g++ gdb openssh-server rsync vim #如果需要sudo 的话还得安装 sudoer
apt-get install cmake
passwd root #设置root用户密码 
vim /etc/ssh/sshd_config #修改配置使能 root用户ssh登录
vim /etc/hosts.allow # 使能其他ip登录
/etc/init.d/ssh restart #重启服务

配置 ssh
vim /etc/ssh/sshd_config,修改配置 使能root用户ssh登录

PermitRootLogin yes  

vim /etc/hosts.allow,使能其他ip登录

sshd: ALL
  1. 保存镜像
    将容器保存镜像成离线文件后续配合load命令可以直接在其他设备上直接加载 自己制作的镜像
docker commit -a "cc" 05786906bed8 ubuntu18.04/cuda10.2:latest # 将容器提交为镜像
docker save -o ubuntu18.04cuda10.2.tar ubuntu18.04/cuda10.2:latest # 保存镜像成离线文件
  1. 启动这个镜像的容器,并映射本地的一个闲置的端口(例如10000)到容器的22端口,并启动容器的sshd 。
docker run -d -p 10000:22 ubuntu18.04/cuda10.2:latest /usr/sbin/sshd -D

现在打开新的终端,输入ssh root@127.0.0.1 -p 10000,如果能链接成功,会要求输入密码的,输入刚才设置的密码就可以进入容器的终端了。

  1. 容器的开机自启
    部署项目服务器时,为了应对停电等情况影响正常的docker服务,会把Docker容器设置为开机自动启动。
    在使用docker run启动容器时,使用--restart参数来设置
docker container run   --gpus all --restart=always ......

如果创建时未指定 --restart=always ,可通过update 命令

docker update --restart=always ......
  1. 自己的pc运行不同架构的镜像
    在自己x86的平台上运行 armv7的镜像 会出现问题

解决方法参考https://github.com/multiarch/qemu-user-static

posted @ 2021-02-10 15:00  cc96  阅读(539)  评论(0编辑  收藏  举报