Docker从认识到实践再到底层原理(四-2)|Docker镜像仓库实战案例

前言
那么这里博主先安利一些干货满满的专栏了!
首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。
然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关注!
镜像仓库实战练习
实战一:搭建一个Nginx服务
基础知识
有关于Nginx的相关基础知识,可见博客。
找一个合适的Nginx镜像然后拉取下来
直接上dockerhub找,要找一些认证过的,安全漏洞少的。
docker pull nginx:1.24.0

查看这个镜像的信息
[
{
"Id": "sha256:bf09be6b0005cc81d4cc3c3cf836c84450e92a7c4dcb2e2e31d84843ff3d6c62",
"RepoTags": [
"nginx:1.24.0"
],
"RepoDigests": [
"nginx@sha256:a195f9fb6503531660b25f9aeefef1f48bbaf56f46da04bffe1568abb3d3aff6"
],
"Parent": "",
"Comment": "",
"Created": "2023-08-16T09:51:35.963457884Z",
"Container": "21c5e07cc340501c06b6c9c9ddecb109f73df89abb5a9e5b5d0446a93bce5787",
"ContainerConfig": {
"Hostname": "21c5e07cc340",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.24.0",
"NJS_VERSION=0.7.12",
"PKG_RELEASE=1~bullseye"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"nginx\" \"-g\" \"daemon off;\"]"
],
"Image": "sha256:7dcbca41c4e2332943388468e49bb0dfb817a7968701009888e6de8bfc507448",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": [
"/docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
},
"StopSignal": "SIGQUIT"
},
"DockerVersion": "20.10.23",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.24.0",
"NJS_VERSION=0.7.12",
"PKG_RELEASE=1~bullseye"
],
"Cmd": [
"nginx",
"-g",
"daemon off;"
],
"Image": "sha256:7dcbca41c4e2332943388468e49bb0dfb817a7968701009888e6de8bfc507448",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": [
"/docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
},
"StopSignal": "SIGQUIT"
},
"Architecture": "amd64",
"Os": "linux",
"Size": 142203809,
"VirtualSize": 142203809,
"GraphDriver": {
"Data": {
"LowerDir": "/data/var/lib/docker/overlay2/802175726a26b553dd520ef1f37e8ef3119a87313ef7225f5e99ffb536b8734c/diff:/data/var/lib/docker/overlay2/18c96ba08189c46e2ec2d72be86e567ecd1aa6e6015676f99a6b34f8dd987414/diff:/data/var/lib/docker/overlay2/e0f5488f47fe33bc1635d81a05d7e270254f514c5f23bf53a9e4c816465e3655/diff:/data/var/lib/docker/overlay2/fba5c6dd16cfa7554b01cae639acb517f5a2d8150a3ee9fbea84ef542b8276b1/diff:/data/var/lib/docker/overlay2/09ed26d778b566d2df261bfd2e0b2a7e1db9ed9fb1cec5b37a6615842a141464/diff",
"MergedDir": "/data/var/lib/docker/overlay2/8bddb1b07abd085e515d66c03a4ac356e5e79377eadcccf4aac49efddd7a39ae/merged",
"UpperDir": "/data/var/lib/docker/overlay2/8bddb1b07abd085e515d66c03a4ac356e5e79377eadcccf4aac49efddd7a39ae/diff",
"WorkDir": "/data/var/lib/docker/overlay2/8bddb1b07abd085e515d66c03a4ac356e5e79377eadcccf4aac49efddd7a39ae/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:63290f9c9e5201f0507ee1b5701aa06c7f48bef7cce287fc77db92bec634d737",
"sha256:4c3723958fdba7a3be12c56c73d6f35c5da6ff9f6feecddc0bb6b128900f3dc9",
"sha256:25f78b8b81b403911798779f4197d78cf49e3064fa093ae6519f1bc2349d3d22",
"sha256:9cf681134567fd7bf900d01121e321fa9be8e53744fd127e2cea827e49d4888b",
"sha256:d635f1cc38f9a833d96e67b6044bb054bf1585404bba1022db4bc3e38e7f2922",
"sha256:451dfbce0e08ae65bc6421917afa07e5c85633ffb278ce66620311739ea415d6"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
通过这些详细信息,我们可以知道启动命令,端口号等信息。
启动这个镜像并修改首页
docker run -p 8080:80 --name myweb1 -h myweb1.com -e myenv=test nginx:1.24.0
对外暴露8080这个端口。

外面通过8080端口已经可以访问了。
注意:如果使用的是云服务器,要注意开放云服务器的防火墙。
在这里服务端也可以看到访问的日志打印。

当然,这里是前台运行,如果我们终端终止了,服务就停了。
所以我们要放到后台运行。
带上-d选项后台运行。
docker run -p 8080:80 --name myweb1 -h myweb1.com -e myenv=test -d nginx:1.24.0

但是这样没有交互,我们改不了首页。所以我们要用交互的方式重新打开。


实战二:Docker hub上创建自己私有仓库
基础知识
BusyBox
BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件。BusyBox 包含了一 些简单的工具,例如 ls、cat 和 echo 等等,还包含了一些更大、更复杂的工具,例 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。 简单的说 BusyBox 就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也 包含了 Linux 系统的自带的 shell。busybox 是一个集成了一百多个最常用 linux 命令和 工具的软件,他甚至还集成了一个 http 服务器和一个 telnet 服务器,而所有这一切功能却 只有区区 1M 左右的大小.因海外带宽较小,我们拉取该镜像推送到自己的仓库。
下载busybox
wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 --no-check-certificate

如图所示,busybox支持非常多的命令。


docker hub上创建自己的私有仓库


拉取busybox镜像并推送到自己的仓库中
现在其实我们的仓库里面是没有镜像的,所以我们先拉一个busybox镜像到本地先。
docker pull busybox:1.36.0
然后登录。
docker login
打标签。
docker tag busybox:1.36.0 yufcbagpack/busybox-by-yufc:v1.0
push上去。
docker push yufcbagpack/busybox-by-yufc:v1.0

此时已经上去了。
实战三:腾讯云创建自己的私有仓库
网址:
如何在工作中选取我们需要的基础镜像
我入职了一个公司,开发一个镜像,我怎么选择用哪个作为基础镜像啊?
一般大型公司有自己专门的镜像制作组织,他们会选取对应的系统版本作为基础镜 像,例如华为某部门选取欧拉来制作基础镜像,腾讯选择自己的 TLinux 制作基础镜像, 不会因为出现 CentOS 不维护了无法使用的情况,而且这些镜像一般都会经过严格的 安全扫描,然后作为基础组件提供给各个部门。一般的公司往往也会同意镜像的基础 版本,所以这个选择个人一般不用太多纠结。
Docker从认识到实践再到底层原理(四-2)|Docker镜像仓库实战案例的更多相关文章
- Docker 介绍以及其相关术语、底层原理和技术
https://ruby-china.org/topics/22004 Docker是啥 Docker是一个程序运行.测试.交付的开放平台,Docker被设计为能够使你快速地交付应用.在Docker中 ...
- 【docker 一】入门实践、环境部署、基本操作指令、镜像库、数据卷
简述 `docker是如火如荼的容器技术,今后会陆续上传关于微服务技术的学习笔记,希望能和大家一起学习一起分享!` docker环境搭建 1.获取最新版的Docker安装包 $ wget -qO- h ...
- Docker集群实验环境布署--swarm【2 搭建本地镜像仓库】
在10.40.100.148上 # docker run -d -p 5000:5000 --restart=always --name docker-registry.venic.com - ...
- 2、docker安装:内核要求、docker三要素、安装、helloworld、底层原理
1.前提说明 1.CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 2.前提条件:内 ...
- 『现学现忘』Docker基础 — 16、Docker中的基本概念和底层原理
目录 1.Docker的底层原理 2.Docker中常用的基本概念 3.run命令的运行流程 4.为什么Docker比VM快 Docker架构图: 我们依照Docker架构图进行Docker基础概念的 ...
- 你必须知道的Docker镜像仓库的搭建
近期工作中发现用到的容器镜像越来越多(不多的时候没考虑过镜像仓库的问题),同一个容器镜像也存在多个版本,那么镜像仓库的搭建需求就涌现出来,本文就目前的几个常用镜像仓库的搭建进行介绍,我们可以根据需要选 ...
- 手动搭建Docker本地私有镜像仓库
实验环境:两个Centos7虚拟机,一个是Server,用作客户端,另一个是Registry,用作Docker私有镜像仓库. 基础配置 查看一下两台虚拟机的IP地址 Server的IP地址是192.1 ...
- Docker学习笔记 - 创建私有的镜像仓库
一.查找镜像仓库 https://hub.docker.com/ 二.下载镜像仓库 docker pull registry:2.6.2 三.安装镜像仓库 docker run -d -p 6000: ...
- Docker Daemon 参数最佳实践
1. Docker Daemon 配置参数 限制容器之间网络通信 在同一台主机上若不限制容器之间通信,容器之间就会暴露些隐私的信息,所以推荐关闭 docker daemon –icc=false 使用 ...
- Docker 从入门到实践(一)Docker 简介
读前须知:本教程大部分都是[Docker 从入门到实践 ]一书的知识,有兴趣可以直接观看书籍.同时,借鉴书籍的知识,如有侵权,请告知我,我会删除处理.谢谢. 一.什么是 Docker? Docker ...
随机推荐
- 2016年第七届 蓝桥杯B组C/C++ 决赛题解
1.一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里. 矿车停在平直的废弃的轨道上. 他的面前是两个按钮,分别写着"F"和"B". 小明突然记起来,这 ...
- HHKB 键盘布局记录以及一些闲言碎语
HHKB (happy hacking keyboard) 是世界顶级键盘品牌,自 1996 年推出以来畅销至今.与其他键盘不同,HHKB 机身小巧,省略了 F1 - F12 功能键.光标键和 Pag ...
- Java 子父类型集合之间的转换
假设现在有这样一个方法,入参是父类型的集合参数,这是个通用方法,你需要共用它,你现在要传子类型集合进去,怎么办? class Animal { } class Dog extends Animal { ...
- (已解决)pulse secure 连接功能变灰禁用 连接面板找不到
今天打开 pulse secure 时,发现窗口变成了这样: 连接功能是灰色的,被禁用了: 解决方案: 运行 PulseSecureService 服务. 然后就正常了!
- Elasticsearch 索引与文档的常用操作总结一
本文为博主原创,未经允许不得转载: ES 的 Restful风格: Restful是一种面向资源的架构风格,可以简单理解为:使用URL定位资源,用HTTP动词(GET,POST,DELETE,PUT) ...
- kafka 的基本概念及使用场景
本文为博主原创,未经允许不得转载: 1. Kafka 的使用场景: 1.日志收集:一个公司可以用Kafka收集各种服务的log,通过kafka以统一接口服务的方式开放给各种 consumer,例如ha ...
- P5728 【深基5.例5】旗鼓相当的对手
1.题目介绍 2.题解 2.1 二维数组 思路 主要熟悉vector创建二维数组的方法 vector<vector> ans(N,vector(3)); 这里第一个元素表明数组大小,第二个 ...
- phpcms : 解决phpcms后台验证码不显示的问题
- 一种基于Unix Domain和TCP连接的跨设备多进程间通信的方法
前言: 在linux系统进程间通信的方式有消息,消息队列,管道,内存映射,套接字等多种方式. 在Android系统上进行进程间通信主要是使用Binder,其它的还有共享内存,管道,RPC和Unix ...
- [转帖]如何使用coredump
一.coredump 当用户态进程出现异常后,在该进程的执行目录下生成对应的coredump文件,如果我们想将coredump生成的位置做改变,就需要如下设置. echo "/home/co ...