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 ...
随机推荐
- RabbitMQ脑裂处理
脑裂现象: Network partition detectedMnesia reports that this RabbitMQ cluster has experienced a network ...
- ansible rpm包下载
Ansible2.9.18版本下载链接:https://pan.baidu.com/s/1dKlwtLWSOKoMkanW900n9Q 提取码:ansi 将软件上传至系统并解压安装: # tar -z ...
- sicp每日一题[2.3]
Exercise 2.3 Implement a representation for rectangles in a plane. (Hint: You may want to make use o ...
- 击败全球上千参赛队伍,合合信息获ICDAR“文本篡改检测”赛道冠军
AI技术的快速发展激发了人们对于美好未来的畅享,也带来了潜在的危机,数据泄露.电信诈骗等系列风险与隐患开始浮出水面.利用科技手段构建可信的技术发展环境,保护使用者的信息及财产安全,正在成为行业共识. ...
- CSS – Variables
参考: Youtube – CSS Variables - CSS vs Sass - variables inside media queries Why we prefer CSS Custom ...
- .NET 7+Angular 4 轻量级新零售进销存系统
前言 给大家推荐一个专为新零售快消行业打造了一套高效的进销存管理系统. 系统不仅具备强大的库存管理功能,还集成了高性能的轻量级 POS 解决方案,确保页面加载速度极快,提供良好的用户体验. 项目介绍 ...
- VMware Vsphere 8.0 ESXI 主机部署
一. VMware vSphere 8.0新特性 VMware vSphere 8.0是一个全新的版本,引入了许多新功能,其中最主要的新功能包括 1.集中式云控制台 使 IT 管理员能够借助 vSph ...
- CSP 联训 3
好吧,又倒数了,就签了个 T2,100 pts. T1 我把相同颜色的存起来,每种颜色找出枚举选哪两个座位不合法的矩阵的左上和右下,如果找到的矩阵左下和右上也相同,则这个矩阵确实不合法,减去,但判断左 ...
- 2022年最新数据库调查报告:超八成DBA月薪过万,你拖后腿了吗?
数据库管理员属于IT行业高薪职业的一种,近几年关于数据库管理员的薪资统计文章也层出不穷,那么当前,DBA们的薪资究竟到达了怎样的水平呢? 墨天轮数据社区发布最新<2022年墨天轮数据库大调查报告 ...
- webgl和canvas的区别
webgl和canvas的区别 WebGL和Canvas的主要区别在于它们的渲染方式.功能复杂性.以及编程难度.12 渲染方式:Canvas使用2D渲染上下文来绘制图形和图像,基于像素的绘图系统, ...