Docker
简明教程

Created by Jasen on 2022/07/16.

Docker 简介

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

Docker Images (镜像):镜像是一个包含程序运行必要以来环境和代码的只读文件,它采用分层的文件系统,将每一层的改变以读写层的形式增加到原来的只读文件上,属于静态文件,类似于程序中的类。

Docker Containers (容器):由镜像文件生成的硬件载体,相当于轻量级的虚拟机,类似于程序中的实例。

Docker 机制中各个部分的关系概括为下图:

1 镜像

1.1 镜像基本命令

$ docker images                      # 查看本机镜像文件
$ docker rmi ImagesName:tag/id      # 删除镜像文件

1.2 构建镜像

通过 docker file 构建新的镜像。

$ docker build -f /path/to/a/Dockerfile -t ImageName:ImageTag
# -f : Dockerfile文件路径
# -t : 新建镜像的名字:新建镜像的版本标签

以下为dockerfile的示例。

# Docker File Sample.
# Basic image
FROM nvidia/cuda:11.3.0-cudnn8-devel-ubuntu18.04 RUN sed -i "s/archive.ubuntu./mirrors.aliyun./g" /etc/apt/sources.list
RUN sed -i "s/deb.debian.org/mirrors.aliyun.com/g" /etc/apt/sources.list
RUN sed -i "s/security.debian.org/mirrors.aliyun.com\/debian-security/g" /etc/apt/sources.list
RUN sed -i "s/httpredir.debian.org/mirrors.aliyun.com\/debian-security/g" /etc/apt/sources.listRUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections# Install basics
RUN apt-get update -y \&& apt-get install build-essential \&& apt-get install -y apt-utils git curl ca-certificates bzip2 tree htop wget \&& apt-get install -y libglib2.0-0 libsm6 libxext6 libxrender-dev bmon iotop g++ python3.7 python3.7-dev python3.7-distutils# Install cmake v3.13.2
RUN apt-get purge -y cmake && \mkdir /root/temp && \cd /root/temp && \wget https://github.com/Kitware/CMake/releases/download/v3.13.2/cmake-3.13.2.tar.gz && \tar -xzvf cmake-3.13.2.tar.gz && \cd cmake-3.13.2 && \bash ./bootstrap && \make && \make install && \cmake --version && \rm -rf /root/temp# Install python
RUN ln -sv /usr/bin/python3.7 /usr/bin/python
RUN wget https://bootstrap.pypa.io/get-pip.py && \python get-pip.py && \rm get-pip.py# Install python packages
RUN PIP_INSTALL="python -m pip --no-cache-dir install" && \$PIP_INSTALL numpy==1.19.3 llvmlite numba

1.3 拉取镜像

docker hub 提供了丰富的官方和第三方的镜像文件,搜索指定环境和版本,可直接复制 docker 命令到终端进行镜像文件的拉取。以pytorch为例,再docker hub中搜索pytorch,在Tags选项可以选取不同的版本。

将TAG对应的命令复制到终端中即可拉取对应版本的镜像。

$ docker pull bitnami/pytorch:latest

2 容器

2.1 容器基本命令

$ docker ps                          # 查看运行中的容器
$ docker ps -a                      # 查看所有的容器
$ docker stop ContainerName/id      # 停止运行中的容器
$ docker start ContainerName/id     # 启动已停止的容器
$ docker restart ContainerName/id   # 重启容器
$ exit                              # 退出容器,可能停止进程
$ Ctrl + P + Q                        # 退出容器,不停止进程
$ docker rm ContainerName/id        # 根据容器id删除容器(不能删除正在运行中的容器)
$ docker rm -f ContainerName/id     # 强制删除指定容器(正在运行中的容器也可删除)

2.2 容器创建

通过 docker run 命令, 可以通过指定的镜像文件创建并运行一个容器,类似于编程语言中的对象实例化。

# docker run command sample.
$ docker run -it --gpus=all -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all -v /home/junjie/IA-SSD/:/IA-SSD --name junjie_IA-SSD pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel /bin/bash# -i : 交互式操作
# -t : 终端
# --gpus : 给定该容器的可使用的GPU权限
# -e : GPU设备的使用方式:cuda计算与程序
# -v : 宿主机与容器的文件映射(映射目录时宿主机与容器的目录实时同步,映射文件时容器关闭后同步)
# -v : 多目录映射(挂载)
# --name : 创建的容器的名称
# pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel : 使用的镜像文件
# /bin/bash : 交互式的Shell

2.3 进入容器

  • run

运行 docker run 命令之后,已经进入了容器的工作空间中。通过cd / 命令可以访问容器的根目录,挂载的文件夹可以在其中找到。

# In container workspace
root@fc40436c1c48:/IA-SSD# cd /
root@fc40436c1c48:/# ls
IA-SSD  NGC-DL-CONTAINER-LICENSE  bin  boot  dev  etc  home  lib ...
  • exec

dockers exec : 进入已运行的容器,并且执行命令,退出容器该让其不会停止。

此时执行**exit 会退出容器但不会停止容器运行。**

# docker exec command
# 进入对应的容器,执行bash
$ docker exec -it CONTAINERNAME/CONTAINERID /bin/bash
  • attach

docker attach : 将本机的标准输入(键盘)、标准输出(屏幕)、错误输出(屏幕)附加到一个运行的容器。本机的输入直接输到容器中,容器的输出会直接显示在本机的屏幕上。

此时执行**exit : 会退出容器并且停止容器运行。**

  • VS Code

VS Code的丰富扩展为开发人员提供了便利,通过安装一下两个扩展,可以更加边界地进行调试。

Docker & Docker Explorer

VS Code扩展中安装 DockerDocker Explorer 扩展,可以看到宿主机的镜像文件和容器,并且可以在右键菜单中对容器进行启动、停止。

Remote - Containers

安装 Remote -Containers 扩展,可以远程连接正在运行中的容器,进入到容器的文件目录中。在运行中的容器的右键菜单中选中 Attach Visual Studio Code ,输入远程密码后即可进入容器文件目录。

进入容器后的文件目录如下图

Docker 简明教程相关推荐

  1. python简明教程word版-计算机开放电子书归档 2018

    97 Things Every Programmer Should Know A Java Reference (UCB CS61b Textbook) AI Cheat Sheet Advanced ...

  2. c#服务器后台搭建_【环境搭建】Docker简明安装教程

    背景 在前面的文章中介绍了docker,这里讲讲它的安装 CZMan95:[环境搭建]Docker篇​zhuanlan.zhihu.com 在服务器上安装docker的话还是有些操作,所以这里写个简明 ...

  3. CGIC简明教程(转摘)

    CGIC简明教程 本系列的目的是演示如何使用C语言的CGI库"CGIC"完成Web开发的各种要求. *********************************     基础 ...

  4. kangle web server源代码安装简明教程

    kangle web server源代码安装简明教程 - kangle使用交流 - kangle软件 是一款高性能web服务器,反向代理服务器,提供虚拟主机管理系统及代理服务器,web服务器架设 - ...

  5. docker 镜像修改的配置文件自动还原_原创 | 全网最实在的docker入门教程四

    作者:潘吉祥 上一篇我们学习了如何使用Dockerfile制作自己的镜像,不过这种方式更像纯粹的运维方式,作为开发者来说,未免有些小繁琐,一个不小心写错些命令就执行失败,我们还不知道错误在哪,这着实有 ...

  6. CentOs6.5中安装和配置vsftp简明教程

    这篇文章主要介绍了CentOs6.5中安装和配置vsftp简明教程,需要的朋友可以参考下 一.vsftp安装篇 复制代码代码如下: # 安装vsftpd yum -y install vsftpd # ...

  7. sqlalchemy mysql_SQLAlchemy简明教程

    原文可见:SQLAlchemy简明教程 - Jiajun的编程随想 SQLAlchemy是Python中常用的一个ORM,SQLAlchemy分成三部分: ORM,就是我们用类来表示数据库schema ...

  8. python tcp server_python scoket 编程 | tcp server client - 简明教程

    TCP 和 UDP 的区别 这两个协议都是传输层的协议,解决的问题,都是端口与端口的通信问题. TCP 每次建立通信,都需要三次握手,确定双方状态完毕,在发送数据.如果发送的数据出现了异常,TCP 也 ...

  9. 简明python教程pdf-python简明教程中文pdf

    python简明教程中文pdf电子书是作者通过自己对计算机语言多年来的研究和学习得出的学习经验,对于python新手来说非常有用,值得大家下载学习. python简明教程中文pdf文章目录 1.介绍 ...

最新文章

  1. java.lang.IllegalAccessError: org.apache.commons.dbcp.DelegatingPreparedStatement.isClosed()Z
  2. 信息网络传播权保护条例(2006)
  3. 亿纬锂能:拟参与竞拍兴华锂盐35.2857%股权 挂牌价1.44亿元
  4. vmware 虚拟机设置 redhat 桥接模式
  5. 定义blob类型_MySQL 数据类型
  6. ExtJs 4.x MVC 架构
  7. Selenium2(WebDriver)总结(一)---启动浏览器、设置profile加载插件
  8. android 下载服务器的txt文档
  9. 藏在耳机里的小东西——蓝牙天线
  10. -未来世界的幸存者- 读后感(现实篇和职业篇)
  11. 用超级鹰来识别B站图片验证
  12. Linux系列-快速搞定CentOS7.0网络配置
  13. 【python 题练】
  14. AWS KVS(Kinesis Video Streams)之WebRTC移植编译(一)
  15. 像素和分辨率是什么?
  16. 基于Python的贝壳某城市二手房交易分析及预测系统 文档+项目源码+演示视频
  17. 用Excel为人生铺路,走向希望的彼岸
  18. Word文档修复实战
  19. elysia Phil‘s Cascade for Mac(硬件音色模拟插件) v1.1破解版
  20. 软件测试方法国内外研究现状,恶意软件检测的国内外研究现状

热门文章

  1. Mail::Sender
  2. 从大盘数据看A股是否为政策市
  3. 新玺配资:外围市场大跌 A股很难不受影响
  4. 如何恢复Linux中的误删文件
  5. 超能粒子炮·改 HYSBZ - 4591
  6. 超便捷mail163手机邮箱登录方法
  7. sas统计分析学习笔记(六)
  8. notepad删除包含/不包含的字符
  9. word转pdf时图片模糊/分辨率不高解决方案
  10. [Android]搜索工具条