docker 安装 (以Ubuntu为例)

卸载旧版本docker

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

使用APT安装

由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。


sudo apt-get update

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

为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。


$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg


# 官方源
# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

然后,我们需要向 sources.list 中添加 Docker 软件源


$ 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


# 官方源
# $ echo \
#   "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
#   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装docker

更新 apt 软件包缓存,并安装 docker-ce

$ sudo apt-get update

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

使用脚本自动安装

# $ curl -fsSL test.docker.com -o get-docker.sh
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
# $ sudo sh get-docker.sh --mirror AzureChinaCloud

启动docker

$ sudo systemctl enable docker
$ sudo systemctl start docker

镜像加速器

# 可以在 /etc/docker/daemon.json 中写入如下内容

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}


# 之后重新启动服务。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

搭建docker registry

拉取 registry 镜像

docker pull registry

通过registry镜像启动一个容器

docker run -d -v /opt/docker-registry:/var/lib/registry -p 5000:5000 --name registry registry

查看运行状况

docker ps 

验证请求成功

请求 https://192.168.30.142:5000/v2/

如果上传出现报错,因为docker仓库只支持https,http 需要添加信任
方法一:需要将仓库添加到信任仓库

vim /etc/docker/daemon.json

{
    "registry-mirrors":[
        "http://hub-mirror.c.163.com"
    ],
    "insecure-registries":[
        "192.168.30.142:5000"
    ]
}

方法二:通过创建证书自带的TLS认证

mkdir -p /opt/docker/registry/certs

openssl req -newkey rsa:4096 -nodes -sha256 -keyout /opt/docker/registry/certs/domain.key -x509 -days 365 -out /opt/docker/registry/certs/domain.crt


docker run -d --name registry2 -p 5000:5000  -v /opt/docker-registry/:/var/lib/registry -v /opt/docker/registry/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2 


curl -X GET https://192.168.30.142:5000/v2/_catalog -k

docker registry v2 api接口

官方地址: docker registry v2 api接口

method path Entity Description
GET /v2/ Base
GET /v2//tags/list Tags
GET /v2//manifests/ Manifest
PUT /v2//manifests/ Manifest
DELETE /v2//manifests/ Manifest
GET /v2//blobs/ Blob
DELETE /v2//blobs/ Blob
POST /v2//blobs/uploads/ Initiate Blob Upload
GET /v2//blobs/uploads/ Blob Upload
PATCH /v2//blobs/uploads/ Blob Upload
PUT /v2//blobs/uploads/ Blob Upload
DELETE /v2//blobs/uploads/ Blob Upload
GET /v2/_catalog Catalog