Docker 中的三个概念:镜像,容器,仓库

镜像(image):

Docker 镜像就是一个只读的模板,镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
镜像是一种文件结构。Dockerfile中的每条命令都会在文件系统中创建一个新的层次结构,文件系统在这些层次上构建起来,镜像就构建于这些联合的文件系统之上。

容器( Container):

容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境,Docker 利用容器来运行应用。镜像是只读的,容器在启动的时候创建一层可写层作为最上层。

仓库:

仓库是集中存放镜像文件的场所,仓库注册服务器(Registry)上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。 目前,最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。

查询镜像

docker search ubuntu docker search alpine

拉取镜像

docker pull ubuntu docker pull alpine docker pull alpine:latest docker pull alpine:3.14

容器使用 container

使用 docker stop 命令来停止容器

运行交互式的容器

docker run -i -t alpine:latest /bin/sh

docker run -i -t ubuntu:15.10 /bin/bash

清理掉所有处于终止状态的容器 docker container prune

查看容器内部的标准输出 docker logs -f bf08b7f2cd89

查看容器内部运行的进程 docker top 08bccf3d7177

镜像删除使用 docker rmi 命令 docker rmi hello-world

docker pull httpd

构建镜像

使用命令 docker build , 从零开始来创建一个新的镜像。 需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建镜像。

FROM alpine:3.14 MAINTAINER WYT “1007525761@qq.com" RUN apk --update add nginx EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]

批量删除容器

docker rm $(docker ps -a -q)

批量删除镜像

docker rmi $(docker images -a -q)

按条件删除镜像

没有打标签 docker rmi docker images -q | awk '/^<none>/ { print $3 }'

镜像名包含关键字 docker rmi --force docker images | grep keywords | awk '{print $3}' //其中keywords为关键字

Alpine 操作系统是一个面向安全的轻型 Linux 发行版。 Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗。 Alpine 还提供了自己的包管理工具 apk,可以通过 https://pkgs.alpinelinux.org/packages 网站上查询包信息,也可以直接通过 apk 命令直接查询和安装各种软件。 Alpine Docker 镜像也继承了 Alpine Linux 发行版的这些优势。相比于其他 Docker 镜像,它的容量非常小,仅仅只有 5.6 MB 左右(对比 Ubuntu 系列镜像接近 200 MB),且拥有非常友好的包管理机制。

Alpine 镜像源配置 这里推荐使用阿里云镜像源,由于公司应用都是部署在阿里云上,使用阿里云镜像源会快很多 $ vi /etc/apk/repositories

将这两行插入到repositories文件开头

http://mirrors.aliyun.com/alpine/v3.9/main http://mirrors.aliyun.com/alpine/v3.9/community

后面是原有的默认配置

http://dl-cdn.alpinelinux.org/alpine/v3.8/main http://dl-cdn.alpinelinux.org/alpine/v3.8/community