2112-Docker笔记

Docker 简介

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroupnamespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 版本开始,则进一步演进为使用 runCcontainerd

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

基本概念

Image

root 文件系统 比如官方镜像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系统的 root 文件系统。

Container

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 实例 一样,镜像是静态的定义,容器是镜像运行时的实体

使用镜像

获取镜像

1
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

一般情况下 docker 的镜像下载如果是教育网,那么速度非常高效。如果需要使用镜像,那么可以使用:

https://yeasy.gitbook.io/docker_practice/install/mirror

的教程进行安排。

镜像列表

1
docker image ls

删除镜像

1
docker image rm ...

使用容器

创建容器实例

1
docker run -it --rm ubuntu:18.04 bash
  • -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。

  • --rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。

  • ubuntu:18.04:这是指用 ubuntu:18.04 镜像为基础来启动容器。

  • bash:放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是 bash

这里是交互式和镜像互动的方法。

更多操作在Docker Cheatsheet中学习

使用实例: Overleaf docker 安装

这里介绍一下在node6上配置overleaf的过程。

由于overleaf已经开源,所以可以使用他们的docker直接进行配置。

镜像拉取

1
docker pull sharelatex/sharelatex

配置文件拉取

1
2
wget https://raw.githubusercontent.com/sharelatex/sharelatex/master/docker-compose.yml
sudo vim docker-compose.yml

需要修改的就是ports: - 80:80,一般80端口都被apache或nginx占用了,改用其他端口如:ports: - 9000:80

启动sharelatex

1
docker-compose up -d

安装latex包

1
2
3
docker exec -it sharelatex bash
tlmgr update --self --all
tlmgr install scheme-full

创建admin

打开: http://hostname:9000/launchpad 创建admin即可

配置高亮

1
2
apt install python3
apt install python-pygments

参考: 【1】https://www.jianshu.com/p/408a3b7a40b0 【2】https://yxnchen.github.io/technique/Docker%E9%83%A8%E7%BD%B2ShareLaTeX%E5%B9%B6%E7%AE%80%E5%8D%95%E9%85%8D%E7%BD%AE%E4%B8%AD%E6%96%87%E7%8E%AF%E5%A2%83/#%E5%AE%89%E8%A3%85%E5%B9%B6%E9%85%8D%E7%BD%AEShareLaTeX 【3】https://sparktour.me/2021/04/02/self-host-overleaf/


2112-Docker笔记
http://blog.chivier.site/2022-01-22/2022/2112-Docker笔记/
Author
Chivier Humber
Posted on
January 22, 2022
Licensed under