Linux下docker常用指令

126 阅读3分钟

docker

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库(Repository)类似Git的远程仓库,集中存放镜像文件。

镜像 Docker 镜像就是系统环境的载体。

Docker 镜像是 Docker 容器运行时的只读模板,类似于虚拟主机本体。

从 Docker 镜像仓库中可以找到大量可用的镜像,你可以按照自己的需求自行搜索,比如寻找一个安装了 PyTorch+Jupyter Notebook 的系统镜像。

容器 每一个 Docker 容器都是从 Docker 镜像中创建的。

之所以有容器的存在,因为镜像是只读的。当我们通过镜像运行一个系统环境(虚拟机)时,Docker 就会创建一个容器来容纳这个系统环境。我们在这个环境中进行的修改(包括创建文件、安装新软件包等等),相当于都是在容器中进行的,不会影响到原来的镜像。

在我们想分享修改后(比如安装了新软件包)的系统时,我们可以执行“commit”命令。这时被我们修改过的容器,就会提交到镜像中,形成新版本的镜像。这个过程特别像GitHub的使用。我们从GitHub上clone下代码,修改,然后直到 commit 提交。

简单来说,容器可以视为镜像的“运行态”。

Docker Hub 官方的镜像发布网站,你在这里可以找到自己需要的镜像。

然而在国内,我们往往使用国内的镜像库,比如阿里云、网易蜂巢等等。

Linux安装docker

1.卸载旧版本

sudo apt-get remove docker docker-engine docker.io

sudo apt-get upgrade

3.我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

4.切换阿里源(添加软件源的 GPG 密钥)

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

5.安装docker

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

docker常用指令

拉取hub上的镜像文件

docker pull

更改镜像tag

docker tag firstimage harryandjack/firstimage

然后push到dockerhub

docker push harryandjack/firstimage

更改Dockerfile中的内容(:wq退出,i编辑)

vi Dockerfile

查看docker镜像

docker images

查看运行中的docker容器

docker ps
docker ps -a

删除docker容器

docker rm <container id>
# 删除所有stop的容器
docker container prune

按照Dockerfile来build镜像

docker build -t harryandjack/test .
docker run -it harryandjack/webapp