docker save <镜像名> | bzip2 | pv | ssh <用户名>@<主机名> 'cat |docker load'
容器快照文件将丢失全部的历史数据和元数据信息(仅保存容器当时的快照状态) 从容器快照文件导入时能够从新指定标签等元数据信息。 镜像存储文件则将保存完整记录, 体积也要更大。
docker container prune
命令行登录 退出mysql
docker login docker logout
查找 拉取镜像nginx
docker search docker pull
推送镜像git
用户在登录后 docker push 将本身的镜像推送到Docker Hub
自动建立sql
容器运行docker
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
在私有仓库上传、搜索、下载镜像json
docker tag 标记一个镜像,并推送到仓库。好比私有仓库地址为127.0.0.1:5000ubuntu
格式: docker tag IMAGE[:TAG] [REGISTRY_HOST][:REGISTRY_PORT/]REPOSITORY[:TAG]
docker tag docker.io/mysql:5 127.0.0.1:5000/docker.io/mysql:5
docker push 上传标记的镜像centos
docker push 127.0.0.1:5000/docker.io/mysql
curl 查看仓库中的镜像服务器
curl 127.0.0.1:5000/v2/_catalog
从私有仓库下载dom
须要先删除已有镜像 docker image rm 127.0.0.1:5000/docker.io/mysql:5 docker pull 127.0.0.1:5000/docker.io/mysql:5
注意事项
Docker默认不容许非HTTPS方式推送镜像,能够经过docker配置选项取消这个限制
对于upstar系统(Ubuntu 14.04 Debian7 Wheezy)
编辑/etc/default/docker,在其中的DOCKER_OPTS增长内容 DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com --insecure-registries=10.9.2.100:5000" sudo service docker restart
对于systemd系统(Ubuntu16.04+ Debian8+ centos7)
编辑/etc/docker/daemon.json (不存在则新建) { "registry-mirror": [ "https://registry.docker-cn.com" ], "insecure-registries": [ "122.112.207.157:5000" ] } systemctl restart docker
使用Docker Compose构建,搭建一个拥有权限认证、TLS的私有仓库
使用openssl自行签发docker.domain.com的站点的SSL证书
step1 建立 CA 密钥
openssl genrsa -out "root-ca.key" 4096
step2 利用私钥建立 CA 根证书请求文件
openssl req \ -new -key "root-ca.key" \ -out "root-ca.csr" -sha256 \ -subj '/C=CN/ST=Zhejiang/L=Hangzhou/O=eichong/CN=eichong Docker Registry CA'
-subj参数 /C 表示国家 如CN /ST 表示省 /L 表示城市或地区 /O 表示组织名 /CN 通用名称
step3 配置 CA 根证书,新建root-ca.cnf
[root_ca] basicConstraints = critical, CA:TRUE, pathlen:1 keyUsage = critical, nonRepudiation, cRLSign, keyCertSign subjectKeyIdentifier=hash
step4 签发根证书
openssl x509 -req -days 3650 -in "root-ca.csr" \ -signkey "root-ca.key" -sha256 -out "root-ca.crt" \ -extfile "root-ca.cnf" -extensions \ root_ca
step5 生成站点 SSL 私钥
openssl genrsa -out "docker.domain.com.key" 4096
step6 使用私钥生成证书请求文件
openssl req -new -key "docker.domain.com.key" -out "site.csr" -sha256 \ -subj '/C=CN/ST=Zhejiang/L=Hangzhou/O=eichong/CN=docker.domain.com'
step7 配置证书,新建 site.cnf 文件
[server] authorityKeyIdentifier=keyid, issuer basicConstraints = critical, CA:FALSE extendedKeyUsage=serverAuth keyUsage = critical, digitalSignature, keyEncipherment subjectAltName = DNS:docker.domain.com, IP:127.0.0.1 subjectKeyIdentifier=hash
step8 签署站点 SSL 证书
openssl x509 -req -days 750 -in "site.csr" -sha256 \ -CA "root-ca.crt" -CAkey "root-ca.key" -CAcreateserial \ -out "docker.domain.com.crt" -extfile "site.cnf" -extensions server
通过以上步骤,就拥有了docker.domain.com的网站SSL私钥 docker.domain.com.key 和 SSL证书 docker.domain.com.crt 新建ssl文件夹将 docker.domain.com.key docker.domain.com.crt 移入,其余删除
配置私有仓库
私有仓库默认的配置文件位于 /etc/docker/registry/config.yml ,咱们先在本地编辑 config.yml ,以后挂载到容器中。
version: 0.1 log: accesslog: disabled: true level: debug formatter: text fields: service: registry environment: staging storage: delete: enabled: true cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry auth: htpasswd: realm: basic-realm path: /etc/docker/registry/auth/nginx.htpasswd http: addr: :443 host: https://docker.domain.com headers: X-Content-Type-Options: [nosniff] http2: disabled: false tls: certificate: /etc/docker/registry/ssl/docker.domain.com.crt key: /etc/docker/registry/ssl/docker.domain.com.key health: storagedriver: enabled: true interval: 10s threshold: 3
生成 http 认证文件
mkdir auth docker run --rm \ --entrypoint htpasswd registry \ -Bbn username password > auth/nginx.htpasswd
version: '3' services: registry: image: registry ports: - "443:443" volumes: - ./:/etc/docker/registry - registry-data:/var/lib/registry volumes: registry-data:
修改 hosts
编辑 /etc/hosts
docker.domain.com 127.0.0.1
启动
docker-compose up -d
测试私有仓库功能
登陆到私有仓库
docker login docker.domain.com
尝试推送、拉取镜像
docker pull ubuntu:17.10 docker tag ubuntu:17.10 docker.domain.com/username/ubuntu:17.10 docker push docker.domain.com/username/ubuntu:17.10 docker image rm docker.domain.com/username/ubuntu:17.10 docker pull docker.domain.com/username/ubuntu:17.10