我们为什么需要Docker? 没有docker遇到的问题:

  • 依赖复杂:比如系统的其他应用需要python3.7和gcc9,而你的应用需要python2.7和gcc7,你不便把系统改成你要的环境。
  • 迁移环境耗时:上个环境可以正常工作,但更新环境后出现一堆bug,甚至难以进行环境回退。
  • 新开发者加入团队:代码在他的电脑上跑不起来,为新电脑安装环境费时费力。

docker和虚拟机的区别:

compare

从图中可以看到,docker比虚拟机更省内存。

Docker的关键概念

  1. Docker结构——Image、Container

    类比面向对象编程,一个image就像一个类,里面包含着所需的环境,image可以被存在云端,需要的时候拉取。一个container就像一个image的实例。

  2. Docker组件——Client、Server

    之前我们一直在用一个笼统的术语“Docker”来描述它的功能,但它其实有很多不同的组件:

    • Docker Registry: Docker官方保存 images的仓库,供大家pull
    • Docker Hub: 分享和获取Images的地方,类似于Github
    • Docker Client: The CLI tool used to interact with the Docker server
    • Docker Daemon: The Docker server process responsible for pulling, pushing, and building the images. It is also used for running the container

    流程为:你可以通过Docker Client要求Docker daemon运行某一个image,daemon就会在系统查找这个image,如果找到了就 run the container forked from that image,否则pull the image from the Docker registry and create a container from the image.

    concept

    如上图所示是Docker client要求daemon: pull a Redis image、run the Ubuntu image. 这些交流是通过Docker server提供的APIs完成的。

安装

docker的内容默认保存到 /var/lib/docker
查看保存路径 docker info | grep "Docker Root Dir"

这里是三个比较权威的安装教程,你也可以选择直接看我给出的代码块

# Ubuntu 
#卸载旧版本docker
sudo apt-get remove docker docker-engine docker-ce docker.io    
#清空旧版docker占用的内存
sudo apt-get remove --auto-remove docker
#更新系统源
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
#更新
sudo apt-get update
# 查看有哪些可以安装的版本
apt-cache madison docker-ce
#安装5:19.03.6~3-0~ubuntu-bionic版
sudo apt-get install -y docker-ce=5:19.03.6~3-0~ubuntu-bionic
# 重启docker
sudo systemctl restart docker
# 配置阿里云镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://7ixh250y.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证
sudo docker version
sudo docker run hello-world
# 安装docker-compose
sudo apt install python3-pip
sudo apt-get update
sudo pip3 install --upgrade pip
sudo pip3 install docker-compose
docker-compose --version
# 安装NVIDIA Container Toolkit
# 首先要确保已经安装了nvidia driver
# 添加源
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
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 && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
# 测试 NVIDIA gpu
# 其中最后的参数nvidia/cuda:10.0-base 是Nvidia官方的镜像,
# 需要根据工作站主机中实际安装的cuda版本进行修改,版本可以用nvcc -V查看。
# 进入容器之后可以跑一下nvidia-smi命令看看
sudo docker run -it --name test_nvidia_docker -p 26006:6006 --gpus all nvidia/cuda:10.0-base

标签: docker

添加新评论