docker之基本命令(2)
上一篇介绍了一下,docker使用的有些基础命令。这次再来深入的了解一下较为复杂的docker命令
| 管理指令 | 说明 |
| docker container | 用于管理容器 |
| docker image | 用于管理镜像 |
| docker network | 用于管理Docker网络 |
| docker node | 用于管理Swarm集群节点 |
| docker plugin | 用于管理插件 |
| docker secret | 用于管理Docker机密 |
| docker service | 用于管理Docker一些服务 |
| docker stack | 用于管理Docker堆栈 |
| docker swarm | 用于管理Swarm |
| docker system | 用于管理Docker |
| docker volume | 用于管理数据卷 |
我们可以构建属于自己的镜像,可以将其存放在仓库中,方便日后拉取和维护,目前较为普遍使用的镜像管理工具:Docker Hub 和Docker Registry
Docker Hub:
- 开源免费
- 自动化进行项目管理
- 适用于个人和小团队
- 公开镜像免费,私有仓库默认一个,获取更多需要另付费
- 适用于新手
官方地址:https://hub.docker.com
进行登录注册,申请一个账户,
常见操作:
1 将本地镜像推送到远程Docker仓库中
1)推送的镜像名称必须符合DockerID/repository的形式规范(DockerID为Docker Hub上的账号名, repository为镜像名)
如果名称不规范,需要先进行名称的修改
例如本地有个镜像: hello-docker docker tag hello-docker:latest lanlang/test:latest 这个时候 会在本地复制一个名称为 lanlang/test的镜像。原来的镜像名称不变,可以通过docker images 查看
2)登录认证
推送到远程仓库的时候,需要进行登录验证
docker login 提示输入用户名和密码, 返回Login Succeeded则成功
3)镜像推送
docker push lanlang/hello-docker:latest
推送完成之后,就可以在Docker Hub 的test仓库中看到该镜像了
因为是对外公开的,Docker Hub会定时的对上传的公开镜像进行索引,过段时间 任何人都可以搜索到该仓库镜像了
Docker Registry:
- 完全免费
- 支持私有化管理
- 需要手动配置,升级,维护和管理,没有Docker Hub功能强大
- 适用于有一定经验的开发者
开始本地私有仓库的搭建之旅吧!!!
1. 使用Docker官方提供的Registry镜像可以搭建本地私有镜像仓库
docker run -d -p 5000:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry registry:2 -d: 在后台运行该容器
-p: 将私有镜像仓库内部默认暴露的5000端口映射到宿主机的5000端口
--restart=always: 本地私有镜像仓库宕机后始终会自动重启
--name registry 指定的容器的名称
-v mnt/registry:/var/lib/registry: 表示容器内的默认存储为止/var/lib/registry中的数据挂在到宿主机/mnt/registry目录下,当容器销毁的时候, 在/var/lib/registry目录下的数据会自动备份到宿主机指定目录
2. 重命名镜像
本地私有仓库的镜像名必须符合 “仓库IP:端口/repository”
docker tag hello-docker:latest localhost:5000/myhellodocker
这样镜像仓库中会多出一个localhost:5000/myhellodocker的镜像
3. 镜像推送
docker push localhost:5000/myhellodocker 推送成功之后,就可以打开地址查看
localhost:5000/v2/myhellodocker/tags/list 显示:
{
name: "myhellodocker",
tags: [
"latest"
]
} 同时在本地磁盘/mnt/registry/docker/registry/v2/repositories目录下查看到
至此我们本地私有仓库搭建成功,但是还是比较基础的。但是在实际的开发当中,无法保证系统的安全性和私密性,所以,我们还需要配置认证证书,登录账号等
1. 首先,需要查看需要搭建私有仓库的服务器的IP地址,通过ifconfig

2. 生成自签名证书
cd /home/ mkdir -p registry/certs && cd registry/certs/ openssl req -x509 -days 3650 -subj '/CN=172.21.0.6:5000/' -nodes -newkey rsa:2048 -keyout domain.key -out domain.crt -x509: x509是自签发证书的格式
-days 3650:表示证书的有效期
172.21.0.6:5000:表示具体搭建Docker Registry本地镜像仓库的地址和端口
rsa:2048:是证书算法长度
domain.key domain.crt 就是要生成的证书文件
3. 生成用户名和密码
在刚才的certs目录中执行
cd .. && mkdir auth
docker run --entrypoint htpasswd registry:2 -Bbn lanlang 123456 > htpasswd 自此会生成本地私服访问的用户名和密码(lanlang 123456)
4.启动Docker Registry本地惊喜那个仓库服务
将之前启动的该服务删除 docker rm -f registry
docker run -d -p 5000:5000 --restart=always --name registry
-v /mnt/registry:/var/lib/registry
-v `pwd`/auth:/auth
-e "REGISTRY_AUTH=htpasswd"
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
-v `pwd`/certs:/certs
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key
registry:2
5.配置Docker Registry 访问接口
服务启动后,需要在该主机上配置供其他Docker机器访问的接口
mkdir -p /etc/docker/certs.d/172.21.0.6:5000
cp certs/domain.crt /etc/docker/certs.d/172.21.0.6\:5000/
第一步:创建一个证书目录,目录的名称要和启动的服务地址端口要一致
第二步:将生成的domain.crt证书复制到该目录下
6. 验证测试
现在私有仓库服务已经可以提供正常服务,我们将本地的镜像推送进行测试
1)
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
],
"insecure-registries": [
"172.21.0.6:5000"
]
}
添加insecure-registries 部分
保存,重启docker systemctl restart docker
2)准备测试镜像
docker tag lanlang/hello-docker:latest 172.21.0.6:5000/myhellodocker
3)镜像推送
docker push 172.21.0.6:5000/myhellodocker 这个时候,会返回一个错误
no basic auth credentials
说明需要进行身份验证 首先,登录镜像仓库
docker login 172.21.0.6:5000
根据提示输入用户名和密码 再次推送即可
4) 可以查看是否推送成功
ls /mnt/registry/docker/registry/v2/repositories/
至此,Docker Registry 已经搭建完成,但是它却没有可视化管理工具,但是管理上感觉并不方便,其实有些社区已经开发了专门可视化管理工具。例如Portus,它集成了一些镜像管理功能,可以完全可视化的管理仓库镜像和访问用户。这个服务的搭建,我会后面专门开一篇文章介绍于搭建
docker之基本命令(2)的更多相关文章
- Docker容器基本命令注意点
Docker 容器基本命令注意点 前言: a. 本文主要为 Docker的视频教程 笔记. b. 本机环境为 Windows 10 专业版,使用的命令行为 PowerShell. 1. docker ...
- 记录以下docker的基本命令
docker search xxx(tag) 在OFFICIAL上ok的是官方镜像 这里也可以去dockerhub上面看到 搜索xxx镜像docker images查看本地所安装的 ...
- 【Docker】基本命令
1.进入容器交互状态 docker exec -ti xxxx /bin/bash 2.查询镜像 docker images 3.查询容器 docker ps
- 【Docker】- 基本命令
1.docker ps -a 显示所有容器 2.doker ps -l 显示最近一次启动的容器 3.docker ps 显示正在运行的容器 4.docker start [容器ID] 启动 ...
- 【Docker】基本命令使用介绍
# docker命令行学习 ## docker run- docker run --help:老实说这条最管用了- docker run -it:交互模式,允许控制台输出 - docker run - ...
- docker 的基本命令
查看命令 docker images 查看镜像 docker ps 查看正在运行的容器 docker ps -a 查看所有的容器 docker inspect container-name 记录着 D ...
- Docker安装基本命令操作,带你了解镜像和容器的概念!
上一章节我们了解了Docker的基本概念,以及相关原理.这一章节进行实操. <Docker这么火爆.章节一:带你详尽了解Docker容器的介绍及使用> 一.Docker安装 声明:Dock ...
- Docker 02 基本命令
参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...
- 七、docker基本命令
Docker 基本命令 docker的基本命令 docker version :查看docker的版本号,包括客户端.服务端.依赖的Go等 [root@centos7 ~]# docker versi ...
- Docker 基本命令和使用
Docker 基本命令 systemctl start docker : 启动 Docker systemctl stop docker : 停止 Docker systemctl restart d ...
随机推荐
- webpack系列-externals配置使用(CDN方式引入JS)
如果需要引用一个库,但是又不想让webpack打包(减少打包的时间),并且又不影响我们在程序中以CMD.AMD或者window/global全局等方式进行使用(一般都以import方式引用使用),那就 ...
- 微信小程序开发疑难
1.开发者工具在小程序webview中注入wx时会提示token过期,但真机正常
- Python—开发工具 PyCharm 使用
一.创建新工程: 第一个工程创建完毕!
- LinerProgression
手动实现线性回归 点击查看代码 import torch import pandas as pd import numpy as np import matplotlib.pyplot as plt ...
- 墨天轮国产数据库沙龙 | 许力:阿里云原生Lindorm TSDB数据库,驱动工业IT&OT超融合数字化系统升级
分享嘉宾:许力 阿里云Lindorm 数据库产品经理 整理:墨天轮 导读 大家好,我是阿里云Lindorm 数据库产品经理许力,今天非常有荣幸给大家介绍阿里云 Lindorm 数据库面向工业场景的最佳 ...
- 封装一个Promise.all 的函数
// 1. 准备三个异步函数 const promise1 = Promise.resolve('prom11ise1'); const promise2 = new Promise(function ...
- 前端 export default 和 export const name 的区别?
export default 是默认导出export const 是命名导出 在一个vue文件中export const可以有多个,但是export default只有且仅有一个,{}表示导入非默认变 ...
- SQL语法-列的新增、删除
MySQL的语法: 新增列 ALTER TABLE `xxdb`.`xxtable` ADD COLUMN `xx_flag` varchar(1) NULL; 删除列 ALTER TABLE `xx ...
- WPF中为Popup和ToolTip使用WindowMaterial特效 win10/win11
先看效果图: 大致思路是:通过反射获取Popup内部的原生窗口句柄,然后通过前文已经实现的WindowMaterial类来应用窗口特效:对于ToolTip,为了保持其易用性,我使用了附加属性+全局样式 ...
- 云原生周刊 | 使用 K8s 可视化工具集来调试业务 | 2023-1-30
开源项目推荐 k8z k8z 意在 K8s 业务层面,提供一个方便好用的 K8s 集群可视化工具集.目前包含以下功能: 终端:连接到集群任意 Pod 容器上,方便调试 Tcpdump:对集群内容器进行 ...