【Docker】Ubuntu 环境安装配置 & 常用命令大全

Table of Content

  1. Overview
  2. Installation
  3. Instruction
  4. Docker Hub

Overview

在不同计算机上进行相同的环境配置一直是一大难题,虚拟机(virtual machine)是一种传统的解决方案,然而具有启动慢、资源占用多、冗余步骤多等缺点。

由于虚拟机的这些缺点,Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)。Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。由于容器是进程级别的,相比虚拟机有体积小、启动快、资源占用少等优势。

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

Docker 的主要用途,目前有提供一次性的环境、提供弹性的云服务、组建微服务架构三大类。

Installation

Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。

这里只介绍在 Ubuntu x86_64 上安装 Docker CE 的相关步骤:

安装 Docker

  • 删除旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
  • 安装新版本
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent 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
sudo apt-get install docker-ce docker-ce-cli containerd.io
  • 验证是否安装成功
sudo docker version # 或 sudo docker info
  • 启动 Docker 服务
sudo service docker start # 或 sudo systemctl start docker

安装 NVIDIA Docker

为了在 Docker 中使用 GPU,还需要安装 NVIDIA Docker

  • 删除旧版本
sudo 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
  • 安装新版本
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
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
  • 验证是否安装成功
sudo docker run --runtime=nvidia --rm nvidia/cuda:8.0-cudnn6-runtime nvidia-smi

运行使用 GPU 的 Docker 时,需要使用 nvidia-docker … 命令替代原有的 docker … 命令

镜像加速

通过 Docker 官方镜像加速,中国区用户能够快速访问最流行的 Docker 镜像。该镜像托管于中国大陆,本地用户现在将会享受到更快的下载速度和更强的稳定性,从而能够更敏捷地开发和交付 Docker 化应用。

使用 sudo 权限打开 /etc/default/docker 文件,在文件底部加上一行:

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"

重启服务:

sudo service docker restart

Instruction

【注】下文中:

REPO 表示云端网址或官方/本地镜像名

TAG 表示所属镜像的特定标签,如果不指定 TAG 则默认标签为 latest

ID 表示通过 ls 查看到的镜像或容器的 id

查看已有镜像/容器信息

sudo docker image ls -a # 查看所有镜像列表
sudo docker container ls -a # 查看所有容器列表

登录镜像站(云)

sudo docker login --username=USER SITE

拉取(下载)镜像

sudo docker pull REPO:TAG

推送(上传)镜像

sudo docker push REPO:TAG

查找镜像

sudo docker search REPO

创建一个容器运行镜像

sudo nvidia-docker run -it --user root REPO:TAG /bin/bash

其中,参数 -it 表示将容器的 Shell 映射到当前的 Shell,然后在本机窗口输入的命令,就会传入容器;可选参数 -d 表示后台运行;可选参数 -rm 表示容器运行结束后自动删除;–user root 表示以 root 用户身份运行容器,具备所有权限;运行指令 /bin/bash 表示容器启动以后,内部第一个执行的命令,这里启动 Bash,保证用户可以使用 Shell

  • 进入容器后结束运行并退出:Ctrl + D

  • 进入容器后后台运行并退出:Ctrl + P + Q

启动/停止运行后台容器

sudo docker start ID # 运行已停止容器
sudo docker stop ID # 停止已运行容器

后台容器运行到前台 bash

sudo nvidia-docker attach ID # 进入后台已运行容器

容器内外传送文件

sudo docker cp 本地位置 ID:容器位置 # 本地文件复制到容器
sudo docker cp ID:容器位置 本地位置 # 容器文件复制到本地

更新(保存)容器到镜像

sudo docker commit -m="MEMO" -a="AUTHOR" ID REPO:TAG

其中,ID 为容器 id,-m 与 -a 为可选信息

设置镜像标签

sudo docker tag ID REPO:TAG

其中,ID 为镜像 id

写入/读取镜像文件

sudo docker save -o FILE REPO:TAG # 保存镜像到文件
sudo docker load -i FILE # 载入镜像文件

删除本地镜像/容器

sudo docker rmi ID # 删除镜像
sudo docker rm ID # 删除容器

Docker Hub

常用镜像:

Ubuntu

CUDA

PyTorch

anibali/PyTorch

TensorFlow

Caffe

Caffe2

……

更多可在 Docker Hub 上进行搜索

References

[1] Enterprise Application Container Platform | Docker

[2] Get Docker CE for Ubuntu | Docker Documentation

[3] Get Started, Part 1: Orientation and setup | Docker Documentation

[4] Docker Documentation | Docker Documentation

[5] Docker Hub

[6] GitHub - NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs

[7] 镜像加速 | Docker 中国

[8] Docker 入门教程 - 阮一峰的网络日志

[9] Docker 镜像使用 | 菜鸟教程

[10] 如何进入docker 使用root用户的方式 - 乎然的专栏 - CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值