Table of Contents

Docker

https://www.docker.com/

外链资料:

  1. 30分钟Docker入门教程 https://www.youtube.com/watch?v=Ozb9mZg7MVM
  2. Docker 的入门「指北」 https://sspai.com/post/56893
  3. Play with Docker, first round https://www.youtube.com/watch?v=isr6cPKy8eg

祖传代码:

Docker和pip (python)、apt (debian)之类的工具一样,都是需要连接网络拉取数据的,曾经因为国内的网络,我也研究过很长时间的类似「如何自己从源码编译安装pip包」,「如何保存Linux软件的离线安装包」,「如何自己搭建软件源」之类的问题,就怕没办法连接网络或者下载失败。但是研究这些问题,还不如想办法解决自己的网络问题。实用主义至上,不需要没有必要的问题浪费时间(特别是自己没有兴趣的时候)


基础知识

  1. Docker是依赖于Linux环境的,即使是Windows版本的Docker,也是需要依赖于Windows的虚拟机(WSL),相当于还是基于Linux。原因是Docker的底层实现依赖于Linux(cgroups)(【后续更正】其实有原生Windows的Docker,只是没有Linux Docker那么应用广泛而已)
  2. 通过在Windows的虚拟的Linux,可以运行Docker,一定程度上相当于跨系统。但是Docker(的镜像)不能跨cpu架构(x86,amd64,arm)
  3. Docker是容器技术的一种,还有其他的容器技术,只是Docker做得比较成功
  4. Docker是前后端分离,如果安装Docker Desktop版本的话,Client和Server都是安装在本地机器上:Client用于发送命令,就是我们常用于那些 run 之类的命令;Server用于真正运行容器
  5. Dockerfile –(build)–> Image –(run)–> Container

安装

Windows上安装前(可能)要先开启虚拟化,安装WSL

验证安装:

% docker version
% docker run hello-world

启动容器

Docker运行镜像的系统需求

docker run

一条典型的启动命令:

docker run -d --name musicplayer -p 8080:8080 -v <本机缓存目录>:/var/www/html/cache quchaonet/musicplayer:arm64
  1. d:后台守护进程 daemon
  2. p:端口映射关系
  3. v:卷映射关系

其他常用参数:

  1. e:设置环境变量
  2. it:开启交互式环境

docker ps

如何理解端口映射?

如何理解卷(地址)映射?

AI
要进入正在运行的 Docker 容器的命令行界面,你可以使用 docker exec 命令。通常,我们会配合 -it 参数来启动一个交互式终端。这里的 -i 表示交互式操作,-t 表示分配一个伪终端。
以下是典型的使用方式:
docker exec -it <容器ID或容器名> /bin/bash

docker compose

docker-compose -f docker-compose.yaml up

关键是这个docker-compose.yaml

平台相关

Linux

Mac

安装Docker Desktop,在Terminal可以使用docker命令

Docker Hub

官方镜像仓库

可以 pull / push

自己创建的 Image 在 push 之前,需要先打好 tag (docker tag)

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

镜像版本

<image_name>:<version / tag>

Misc

Docker Hub是官方的镜像库,但是(应该)也可以在第三方的地址拉取镜像

docker pull registry.hf.space/bhaskartripathi-pdfchatter:latest

指令大全

资料来源:GeekHour
docker_dockercheatsheet-bygeekhour.pdf