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 ...
随机推荐
- CSS & JS Effect – Image Overlay
介绍 一张背景图, 一行写字, 一层黑影 (Image Overlay), 如果没有做黑影, 字的颜色容易和图片撞, contrast 就会很烂. HTML 结构 <div class=&quo ...
- Session——基本使用
Session Session 原理 Session 使用细节
- 实用技巧:根据menuconfig定位一个驱动涉及到的源文件
根据menuconfig定位一个驱动涉及到的源文件,这个是很常用的,因为有时候你需要参考别人的驱动代码.新手不知道如何定位驱动相关源码,这篇文章将告之. 假设我手头有一块开发板,现在我想要获取板载ov ...
- AD域下,环境下办公机系统时间不准确
事件起因: 某部门一同事电脑时间和AD域控时间相差3分钟,虽然说时间相差5分钟内问题不大,但是本着有问题就解决的原则,还是花了点时间去查资料解决. (小小吐槽一下,在我看来域控机是掌管下面所有的办公机 ...
- python——celery异常consumer: Cannot connect to redis://127.0.0.1:6379/1: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.
1.检查 Redis 日志: 查看 Redis 的日志文件(通常位于 /var/log/redis/redis-server.log 或者根据你的配置文件中指定的位置),以获取有关错误原因的详细信息. ...
- Vue 的最大优势是???
Vue 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合.另一方面,当与现代 ...
- C#查漏补缺----对象内存结构与布局
环境变量 .Net Core 8.0 Windows 11 64位 内存布局 引用类型 在.NET中,数据会按照类型分为不同的对象,对于引用类型的实例,由一个对象标头(Object Header)和方 ...
- 云原生周刊:Artifact Hub 成为 CNCF 孵化项目|2024.9.23
开源项目推荐 Coroot Coroot 是一个开源监控工具,旨在为云原生应用提供可观察性.它通过整合指标.日志和追踪信息,专注于提供应用性能的洞察. DirectPV DirectPV 是一个开源项 ...
- 云原生爱好者周刊:揪出 Prometheus 中时间戳抖动
开源项目推荐 O11y toolkit O11y toolkit 是一个工具集,用来维护.调试和增强你的可观测性系统,改善我们日常对指标.日志和链路追踪的使用体验.例如 oy-scrape-jitte ...
- Machine Learning Week_1 Introduction 9-11
目录 1.9 Who are Mentors? unfamiliar words 1.10 Get to Know Your Classmates unfamiliar words 1.11 Freq ...