【Docker】3.Docker Registry

news2024/11/26 23:30:37

文章目录

    • Docker Registry
      • Docker Registry Command
      • Image Command
    • Nginx
      • Nginx System install
      • Nginx Config
    • Container Command
    • Create My Degistry
    • BusyBox
    • 腾讯云镜像仓库搭建

Docker Registry

镜像仓库负责存储、管理、分发镜像,并且提供了登录认证的能力,建立仓库索引

镜像仓库管理多个Repository(存储库),Repository通过命名来区分。每个Repository包含一个或者多个镜像,镜像通过镜像名称和标签(Tag)来区分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ENTFEgvG-1686149122537)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230526215159914.png)]

镜像仓库分类和工作机制

分类:按照是否对外开放划分,共有仓库(放在共有网络上,不用登录就可以下载镜像),私有仓库(不对外开放,往往位于私有网络,只有公司内部人员可以使用)

工作机制:通过docker login登录仓库, docker pull拉去镜像, 通过dockerfile或者commit方式制作完镜像通过docker push上传到仓库


常用镜像仓库

Docker Hub: https://hub.docker.com/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ju7azmK2-1686149122538)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230526220951161.png)]

Docker Registry Command

命令别名功能备注
docker login登录仓库重要
docker pulldocker image pull拉取镜像重要
docker pushdocker image push推送镜像重要
docker search查找镜像
docker logout登出仓库重要

拉取镜像

下载方式1: Tag 标签下载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d8N3zab3-1686149122540)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230527094714597.png)]

下载方式2: 名字+编号下载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sz5nVEhd-1686149122541)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230527094835510.png)]

docker pull nginx@sha256:a97a153152fcd6410bdf4fb64f5622ecf97a753f07dcc89dab14509d059736cf

创建仓库推送镜像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mEXQcBq5-1686149122542)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230527095919007.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IKGDIWC8-1686149122543)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230527100000594.png)]

仓库创建成功后,会告诉我们Push的格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bUJxNo64-1686149122545)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230527100028498.png)]

docker push chinamaxxin/mynginx:tagname
# 原来的tag为   nginx:1.23.4
# 需要改成      chinamaxxin/mynginx:v1.23.4

# 使用docker tag 更改标签
[root@VM-20-6-centos ~]# docker tag nginx:1.23.4 chinamaxxin/mynginx:v1.23.4
[root@VM-20-6-centos ~]# docker push chinamaxxin/mynginx:v1.23.4 # 将其推送到仓库
The push refers to repository [docker.io/chinamaxxin/mynginx]
4d33db9fdf22: Mounted from library/nginx 
6791458b3942: Mounted from library/nginx 
2731b5cfb616: Mounted from library/nginx 
043198f57be0: Mounted from library/nginx 
5dd6bfd241b4: Mounted from library/nginx 
8cbe4b54fa88: Mounted from library/nginx 
v1.23.4: digest: sha256:a97a153152fcd6410bdf4fb64f5622ecf97a753f07dcc89dab14509d059736cf size: 1570
# 之后在网站上就可以看到我们上传的镜像了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ci82KkXp-1686149122546)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230527100619129.png)]

我们还可以使用 docker push 其它选项,如docker push chinamaxxin/mynginx -a 就会将所有前缀为chinamaxxin/mynginx的镜像推送到对应仓库


查找镜像

[root@VM-20-6-centos ~]# docker search -f stars=10 nginx
# -f starts=10 选项设置条件,收藏量大于10

Docker Server上的镜像信息比较少,查看不方便,推荐官网搜索,所以docker search指令并不常用

Image Command

docker images

docker images [options][repository[:tag]] # 列出本地镜像
docker image list # 别名
-a 				 # 列出本地所有镜像(含中间映像层,默认过滤)
--digests 		  # 显示镜像摘要信息
-f 				 # 显示满足条件的镜像
--format           # 指定返回值的模板文件
--no-trunc   	  # 显示完整的镜像信息
-q 				  # 只显示镜像ID

docker image inspect

docker image inspect  [option] # 查看镜像详细信息
@example
[root@VM-20-6-centos ~]# docker image inspect nginx:1.23.4
[root@VM-20-6-centos ~]# docker image inspect a7be6198544f

docker tag

# 使用docker tag 更改标签
[root@VM-20-6-centos ~]# docker tag nginx:1.23.4 chinamaxxin/mynginx:v1.23.4

Nginx

Nginx时一款自由开源高性能的HTTP反向代理服务器,Nginx可以作为一个HTTP服务器进行网站发布处理,还可以作为反向代理进行负载均衡实现。Nginx是web服务器的一种实现

前置概念

正向代理

由于防火墙原因,我们不能直接访问外网,但是我们可以使用VPN来进行实现。VPN就是一个简单正向代理的例子。正向代理的是"客户端",VPN帮助客户端将流量送出去。

客户端知道目标IP,而目标并不知道客户IP,保护客户信息

反向代理

当我们访问百度时,实际上我们的请求会被转发,被百度的反向代理服务器代理到百度的内网去。我们并不知道我们实际访问的信息是来自百度哪一台存储服务器。这一过程对于用户来说是透明的。同时我们通过反向代理服务器实现流量分配,构建基于负载均衡的服务器集群

客户端知道反向代理服务器IP,并不知道服务器IP,保护了服务器

Nginx System install

卸载

# 卸载Nginx
[root@VM-20-6-centos ~]# ps -ef | grep nginx | grep -v grep
# 因为目前没有安装所以没有输出,若存在nginx服务需要对其master进程关闭
[root@VM-20-6-centos ~]# kill [nginx_master_process pid]

[root@VM-20-6-centos ~]# rpm -qa | grep nginx        # 查看通过yum源安装的nginx信息
[root@VM-20-6-centos ~]# yum remove nginx  			# 使用yum卸载nginx

安装

# 配置yum源
[root@VM-20-6-centos ~]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 

# 新配置yum源会被放到/etc/yum.repos.d/目录下
[root@VM-20-6-centos ~]# ls /etc/yum.repos.d/
CentOS7-Base-163.repo  Centos-7.repo  CentOS-SCLo-scl.repo  CentOS-SCLo-scl-rh.repo  docker-ce.repo  epel-7.repo  epel.repo  epel-testing.repo  nginx.repo  repo_bak

# 构建缓存加速下载,配置文件有点多就不复制了
[root@VM-20-6-centos ~]# yum makecache 

[root@VM-20-6-centos ~]# yum install nginx -y

启动

# 检查是否启动,没有输出说明没有启动
[root@VM-20-6-centos ~]# ps -ef | grep nginx | grep -v grep

# 方法1: 使用systemctl start 指令
[root@VM-20-6-centos ~]# systemctl start nginx 
[root@VM-20-6-centos ~]# ps -ef | grep nginx | grep -v grep
root     21319     1  0 13:27 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx    21320 21319  0 13:27 ?        00:00:00 nginx: worker process
nginx    21321 21319  0 13:27 ?        00:00:00 nginx: worker process
 
# 方法2:输入nginx
# 杀死master进程,关闭nginx服务
[root@VM-20-6-centos ~]# kill 21319
[root@VM-20-6-centos ~]# ps -ef | grep nginx | grep -v grep
# 直接输入nginx即可启动
[root@VM-20-6-centos ~]# nginx
[root@VM-20-6-centos ~]# ps -ef | grep nginx | grep -v grep
root     21935     1  0 13:29 ?        00:00:00 nginx: master process nginx
nginx    21936 21935  0 13:29 ?        00:00:00 nginx: worker process
nginx    21937 21935  0 13:29 ?        00:00:00 nginx: worker process

输入IP地址即可访问服务器上的Nginx了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RFo98tkL-1686149122547)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230527133137585.png)]

Nginx Config

Nginx配置信息放在/etc/nginx/nginx.conf文件中

# 此处删除部分内容
[root@VM-20-6-centos nginx]# cat nginx.conf 
user  nginx;
worker_processes  auto;
error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include /etc/nginx/conf.d/*.conf; # 仅需要关注这个就好了
}
# include 就像C++中包的头文件一样,会将该路径下文件内容进行展开
# 进入上述文件夹,可以查看到更多http服务相关文件
[root@VM-20-6-centos nginx]# cd conf.d/
[root@VM-20-6-centos conf.d]# ll
total 4
-rw-r--r-- 1 root root 1072 Apr 12 01:21 default.conf
[root@VM-20-6-centos conf.d]# ll
total 4
-rw-r--r-- 1 root root 1072 Apr 12 01:21 default.conf

# 查看默认配置文件
[root@VM-20-6-centos conf.d]# cat default.conf 
server {                                             # 类型: HTTP服务器
    listen       80;         					   # 监听HOST_IP:80端口
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;
	
    location / {  								# 访问根目录时
        root   /usr/share/nginx/html;              # 首页
        index  index.html index.htm; 				
    }
    
    # 访问首页
    #[root@VM-20-6-centos html]# cat /usr/share/nginx/html/index.html

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

Container Command

docker run

docker run [options] image [command][arg...] # 创建一个新的容器并运行一个命令
-d # 后台运行容器,并返回容器ID
-i # 以交互模式运行容器,通常与 -t同时使用
-t # 为容器分配一个伪终端
-P # 随机端口映射,容器内部端口随机映射到主机端口
-p # 指定端口映射, 格式: 宿主端口:容器端口
--name="nginx-clx"  # 指定容器名称
-h # 指定主机名称
-e # 指定环境变量
--cpuset-cpu="0-1" # 指定程序在哪个cpu上跑
-m # 指定该容器执行可以使用最大内存量
--link=[] # 添加连接到另外一个容器
--rm # shell退出时自动删除容器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fNzz8KeM-1686149122549)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230527163216519.png)]

docker run 无参运行

# 拉取一个CentOS7镜像
[root@VM-20-6-centos ~]# docker pull centos:7

# 查看存在镜像
[root@VM-20-6-centos ~]# docker images
REPOSITORY            TAG             IMAGE ID       CREATED         SIZE
chinamaxxin/mynginx   v1.23.4         a7be6198544f   4 days ago      142MB
nginx                 1.23.4          a7be6198544f   4 days ago      142MB
centos                7               eeb6ee3f44bd   20 months ago   204MB
nginx                 1.18.0-alpine   684dbf9f01f3   2 years ago     21.9MB

# 无参运行docker run 
[root@VM-20-6-centos ~]# docker run centos:7

# docker ps 不带参看运行的容器
[root@VM-20-6-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
# docker ps -a 将创建所有容器打出
[root@VM-20-6-centos ~]# docker ps -a 
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS                     PORTS     NAMES
96de16216bf2   centos:7   "/bin/bash"   8 seconds ago   Exited (0) 7 seconds ago             ecstatic_jang

# 直接运行nginx镜像
[root@VM-20-6-centos ~]# docker run nginx:1.23.4
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
## 可以发现nginx将日志打印到终端上,并且占用终端(前台运行)

### 新建终端,可以看到nginx容器正在运行
[root@VM-20-6-centos ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS     NAMES
cf9a946259a1   nginx:1.23.4   "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp    zealous_tharp

#### 向前台发送2号(SIGINT)信号,nginx退出,说明前台程序会接收到我们给终端的信号
[root@VM-20-6-centos ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                      PORTS     NAMES
cf9a946259a1   nginx:1.23.4   "/docker-entrypoint.…"   2 minutes ago   Exited (0) 13 seconds ago             zealous_tharp
96de16216bf2   centos:7       "/bin/bash"              7 minutes ago   Exited (0) 7 minutes ago              ecstatic_jang

-d 后台运行选项

# 让nginx容器后台运行,会返回容器ID
[root@VM-20-6-centos ~]# docker run -d nginx:1.23.4 
3614902a95965c4b7566d6677c867254d46821777f0c5c999f2de54f60e68221
[root@VM-20-6-centos ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
3614902a9596   nginx:1.23.4   "/docker-entrypoint.…"   50 seconds ago   Up 49 seconds   80/tcp    distracted_wing

-P, -p 绑定端口选项

# 绑定容器80端口绑定宿主机80端口
[root@VM-20-6-centos ~]# docker run -d -p 80:80 nginx:1.23.4
ff7e117ad9b0e462d8f95107ffa693344dba469107d374502413a789f23f48f5

## 出现报错,宿主机80端口被绑定
docker: Error response from daemon: driver failed programming external connectivity on endpoint kind_mclaren (0764542d7b2bd643405d9b16e7e95a881ff751764dc853a9aaa192e681f3b22b): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.

### 查看宿主机80端口绑定信息,发现80端口已经被nginx进程占用
[root@VM-20-6-centos ~]# netstat -nltp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      21935/nginx: master 

#### 修改绑定端口为8888 ,绑定成功
[root@VM-20-6-centos ~]# docker run -d -p 8888:80 nginx:1.23.4
940f69ec97d027766857e2b1bc234ea4affd797b46978ec47daedbc4a18f44a8

##### 打印容器信息,POSTS字段标记端口绑定信息
[root@VM-20-6-centos ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS                                   NAMES
940f69ec97d0   nginx:1.23.4   "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:8888->80/tcp, :::8888->80/tcp   adoring_goldwasser
3614902a9596   nginx:1.23.4   "/docker-entrypoint.…"   9 minutes ago        Up 9 minutes        80/tcp                                  distracted_wing



[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dyxjFo9l-1686149122550)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230527170018187.png)]

通过访问宿主机的8888端口发现可以访问到容器的80端口以及服务

注意:使用端口时需要设置防火墙,若宿主机绑定端口被防火墙屏蔽,则任然无法访问

# 尝试-P选项
[root@VM-20-6-centos ~]# docker run -d -P nginx:1.23.4
1a7d988d88ba581a99267d760bd0323690a45eeaa958df1ea065a8162c8a3c2

# 随机绑定到32768端口,此端口我们云服务器并未设置安全组进行开放,防火墙会对流量进行阻拦,所以浏览器无法访问
[root@VM-20-6-centos ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                     NAMES
1a7d988d88ba   nginx:1.23.4   "/docker-entrypoint.…"   9 seconds ago    Up 8 seconds    0.0.0.0:32768->80/tcp, :::32768->80/tcp   wonderful_zhukovsky
940f69ec97d0   nginx:1.23.4   "/docker-entrypoint.…"   5 minutes ago    Up 5 minutes    0.0.0.0:8888->80/tcp, :::8888->80/tcp     adoring_goldwasser
3614902a9596   nginx:1.23.4   "/docker-entrypoint.…"   13 minutes ago   Up 13 minutes   80/tcp                                    distracted_wing

## 使用curl命令访问本机(本机访问本机无需经过防火墙), 可以观察到nginx首页面信息被获取成功
[root@VM-20-6-centos ~]# curl 127.0.0.1:32768
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

–name=“nginx-lb” 指定名容器名称

[root@VM-20-6-centos ~]# docker run -d --name="mynginx1" nginx:1.23.4 
5ec5228ee71cbd1d45d425f8adbb2476d55ee00f46c9385f635621d104f0a84c
[root@VM-20-6-centos ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                     NAMES
5ec5228ee71c   nginx:1.23.4   "/docker-entrypoint.…"   6 seconds ago    Up 4 seconds    80/tcp                                    mynginx1 ## 可以看到名称被设置
1a7d988d88ba   nginx:1.23.4   "/docker-entrypoint.…"   8 minutes ago    Up 8 minutes    0.0.0.0:32768->80/tcp, :::32768->80/tcp   wonderful_zhukovsky
940f69ec97d0   nginx:1.23.4   "/docker-entrypoint.…"   13 minutes ago   Up 13 minutes   0.0.0.0:8888->80/tcp, :::8888->80/tcp     adoring_goldwasser
3614902a9596   nginx:1.23.4   "/docker-entrypoint.…"   22 minutes ago   Up 22 minutes   80/tcp                                    distracted_wing

# 可以根据名字来停止容器,进行交互等
[root@VM-20-6-centos ~]# docker stop mynginx1 
mynginx1

-h 参数指定hostname

# 不指定hostname可以看到,随机生成的主机名很纯
[root@VM-20-6-centos ~]# docker run -it centos:7 bash
[root@7a0f83cf2aae /]# hostname
7a0f83cf2aae

# 使用-h 指定hostname执行bash
[root@VM-20-6-centos ~]# docker run -it -h mycentos7 centos:7 bash
[root@mycentos7 /]# hostname
mycentos7

-e 参数指定环境变量

[root@VM-20-6-centos ~]# docker run -it -h mycentos7 -e myenv=test centos:7 bash
[root@mycentos7 /]# env | grep myenv
myenv=test

–cpuset-cpus=“0-1” 指定程序使用CPU权限

## 查看机器CPU信息
[root@VM-20-6-centos /]# cat /proc/cpuinfo

[root@VM-20-6-centos ~]# docker run -d --name mynginx1 --cpuset-cpus="0-1" nginx:1.24.0  # 设置该容器只能在CPU 0 和 1上跑

## mynginx1容器名已经存在
docker: Error response from daemon: Conflict. The container name "/mynginx1" is already in use by container "5ec5228ee71cbd1d45d425f8adbb2476d55ee00f46c9385f635621d104f0a84c". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
## 注意:在docker中已经停止的容器名也会被占用

[root@VM-20-6-centos /]# docker run -d --name mynginx2 --cpuset-cpus="0-1" nginx:1.24.0
585684512bae49591b1762acee8d60809efe77a319eadeb4bccac48e1c3fdfe6

-m 指定程序使用内存最大量

# 新建两个容器,一个不设置内存上限,另一个设置为500m
[root@VM-20-6-centos /]# docker run -d --name="mynginx3" nginx:1.24.0
5127e5c566d19e0e3a1300c0354c8edeb4430f85b21991c6b7223b2bb968ff3d
[root@VM-20-6-centos /]# docker run -d --name="mynginx4" -m 500m  nginx:1.24.0
d97cc43588f9baeeea6fd0c334a42c842702f9fe1e672a96fcaa03dad6f01db9

# docker stats 监视docker容器使用情况
[root@VM-20-6-centos ~]# docker stats
CONTAINER ID   NAME                  CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O        PIDS
d97cc43588f9   mynginx4              0.00%     2.008MiB / 500MiB     0.40%     586B / 0B         0B / 4.1kB       3
5127e5c566d1   mynginx3              0.00%     2.012MiB / 3.608GiB   0.05%     656B / 0B         0B / 4.1kB       3
585684512bae   mynginx2              0.00%     2.477MiB / 3.608GiB   0.07%     656B / 0B         0B / 8.19kB      3
2dff8650b925   cranky_pascal         0.00%     412KiB / 3.608GiB     0.01%     710B / 0B         0B / 0B          1
1a7d988d88ba   wonderful_zhukovsky   0.00%     2.035MiB / 3.608GiB   0.06%     1.3kB / 1.23kB    0B / 4.1kB       3
940f69ec97d0   adoring_goldwasser    0.00%     2.043MiB / 3.608GiB   0.06%     3.07kB / 2.86kB   4.1kB / 4.1kB    3
3614902a9596   distracted_wing       0.00%     2.391MiB / 3.608GiB   0.06%     794B / 0B         393kB / 8.19kB   3

# 查看服务器内存资源,内存上限为 3694 / 1024 = 3.6074GB,证明docker容器的内存上限即为宿主机的内存上限
[root@VM-20-6-centos ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3694        1480         182          15        2030        1920
Swap:             0           0           0

–link container_name : alias 指定链接容器

# 新建一个容器
[root@VM-20-6-centos ~]# docker run -it --name mycentos1 centos:7 bash

# 新建一个终端,再次新建一个容器,链接 mycentos1
[root@VM-20-6-centos ~]# docker run -it --name mycentos2 --link mycentos1:mywebsite1 centos:7 bash

# 我们可以链接到mycentos1
[root@f4e2ec33ab52 /]# ping mycentos1
PING mywebsite1 (172.17.0.9) 56(84) bytes of data.
64 bytes from mywebsite1 (172.17.0.9): icmp_seq=1 ttl=64 time=0.144 ms

[root@f4e2ec33ab52 /]# ping mywebsite1
PING mywebsite1 (172.17.0.9) 56(84) bytes of data.
64 bytes from mywebsite1 (172.17.0.9): icmp_seq=1 ttl=64 time=0.077 ms

# 链接的本质, 对IP地址进行了DNS解析
[root@f4e2ec33ab52 /]# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.9	mywebsite1 7da26a3a8ec3 mycentos1       # 重点在这
172.17.0.10	f4e2ec33ab52

Create My Degistry

目标:在Docker Hub上创建自己的私有仓库,因为仓库在海外,Nginx服务器占用空间较大,不便于传输这里使用较小镜像Busybox进行演示

BusyBox

BusyBox是一个集成了三百多个最常用的Linux命令和工具的软件,他集成压缩了Linux很多工具和命令,也包含了Linux系统自带的shell,http服务器和一个telnet服务器。实现这些所有功能仅占用1M左右的空间

CentOS原生安装busybox

# 使用wget安装busybox 
[root@VM-20-6-centos ~]# wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 --no-check-certificate

[root@VM-20-6-centos ~]# mv busybox-x86_64 busybox
# 赋予busybox可执行权限
[root@VM-20-6-centos ~]# chmod +x busybox
# 使用busybox
[root@VM-20-6-centos ~]# ./busybox ls /

Docker 镜像拉取busybox,并存储置Docker hub仓库中

1、 通过官网,选取适合的busybox版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CFtK7Yk3-1686149122552)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230528152216596.png)]

## 拉取镜像
[root@VM-20-6-centos ~]# docker pull busybox:1.36
1.36: Pulling from library/busybox
325d69979d33: Pull complete 
Digest: sha256:560af6915bfc8d7630e50e212e08242d37b63bd5c1ccf9bd4acccf116e262d5b
Status: Downloaded newer image for busybox:1.36
docker.io/library/busybox:1.36

2、创建仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S36GCiQy-1686149122554)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230528152531787.png)]

3、根据帮助命令修改镜像名称,推送置仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d2AQkG0g-1686149122555)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230528152938196.png)]

# 登录
[root@VM-20-6-centos ~]# docker login
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

# 按照帮助命令修改镜像名称
[root@VM-20-6-centos ~]# docker tag busybox:1.36 chinamaxxin/mybusybox:v1.36
# 查看镜像
[root@VM-20-6-centos ~]# docker images
REPOSITORY              TAG             IMAGE ID       CREATED         SIZE
nginx                   1.24.0          1e96add5ea29   4 days ago      142MB
chinamaxxin/mynginx     v1.23.4         a7be6198544f   4 days ago      142MB
nginx                   1.23.4          a7be6198544f   4 days ago      142MB
chinamaxxin/mybusybox   v1.36           8135583d97fe   8 days ago      4.86MB  # 这两个
busybox                 1.36            8135583d97fe   8 days ago      4.86MB
centos                  7               eeb6ee3f44bd   20 months ago   204MB
nginx                   1.18.0-alpine   684dbf9f01f3   2 years ago     21.9MB

# 推送镜像到仓库
[root@VM-20-6-centos ~]# docker push chinamaxxin/mybusybox:v1.36
The push refers to repository [docker.io/chinamaxxin/mybusybox]
9547b4c33213: Mounted from library/busybox 
v1.36: digest: sha256:5cd3db04b8be5773388576a83177aff4f40a03457a63855f4b9cbe30542b9a43 size: 528

# 我们还可以不加版本号 docker push chinamaxxin/mybusybox -a 就将所有chinamaxxin/mybusybox 所有版本的镜像都push上去了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QZZbPRcy-1686149122557)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230528153310162.png)]

腾讯云镜像仓库搭建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ipk7wWeW-1686149122557)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230528154000259.png)]

先创建命名空间,再创建镜像仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IMLYbC2l-1686149122558)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230528154520695.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PeN7DTcB-1686149122559)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230528154649454.png)]

# 快捷指令
# 登录腾讯云容器镜像服务 Docker Registry
docker login ccr.ccs.tencentyun.com --username=100025947277
# 从 Registry 拉取镜像
docker pull ccr.ccs.tencentyun.com/maxxin1/busyboxbymaxxin1:[tag]
# 向 Registry 中推送镜像
docker tag [imageId] ccr.ccs.tencentyun.com/maxxin1/busyboxbymaxxin1:[tag]
docker push ccr.ccs.tencentyun.com/maxxin1/busyboxbymaxxin1:[tag]
# 使用快捷指令登录
[root@VM-20-6-centos ~]# docker login ccr.ccs.tencentyun.com --username=100025947277
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
# 使用repository:tag 更改镜像名称
[root@VM-20-6-centos ~]# docker tag busybox:1.36 ccr.ccs.tencentyun.com/maxxin1/busyboxbymaxxin1:v1.36
# 使用 Image ID 更改镜像名称
[root@VM-20-6-centos ~]# docker tag 8135583d97fe ccr.ccs.tencentyun.com/maxxin1/busyboxbymaxxin1:vv1.36

[root@VM-20-6-centos ~]# docker images;
REPOSITORY                                        TAG             IMAGE ID       CREATED         SIZE
ccr.ccs.tencentyun.com/maxxin1/busyboxbymaxxin1   v1.36           8135583d97fe   8 days ago      4.86MB
ccr.ccs.tencentyun.com/maxxin1/busyboxbymaxxin1   vv1.36          8135583d97fe   8 days ago      4.86MB

# 将两个版本使用docker push -a全部推上去
[root@VM-20-6-centos ~]# docker push ccr.ccs.tencentyun.com/maxxin1/busyboxbymaxxin1 -a
The push refers to repository [ccr.ccs.tencentyun.com/maxxin1/busyboxbymaxxin1]
9547b4c33213: Pushed 
v1.36: digest: sha256:5cd3db04b8be5773388576a83177aff4f40a03457a63855f4b9cbe30542b9a43 size: 528
9547b4c33213: Layer already exists 
vv1.36: digest: sha256:5cd3db04b8be5773388576a83177aff4f40a03457a63855f4b9cbe30542b9a43 size: 528

# 可以看到镜像已经推送成功啦

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CSOq6LB1-1686149122560)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230528155915454.png)]

# 从私有仓库中拉去镜像
[root@VM-20-6-centos ~]# docker pull ccr.ccs.tencentyun.com/maxxin1/busyboxbymaxxin1:v1.36
v1.36: Pulling from maxxin1/busyboxbymaxxin1
Digest: sha256:5cd3db04b8be5773388576a83177aff4f40a03457a63855f4b9cbe30542b9a43
Status: Image is up to date for ccr.ccs.tencentyun.com/maxxin1/busyboxbymaxxin1:v1.36
ccr.ccs.tencentyun.com/maxxin1/busyboxbymaxxin1:v1.36

# 退出仓库
[root@VM-20-6-centos ~]# docker logout ccr.ccs.tencentyun.com
Removing login credentials for ccr.ccs.tencentyun.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/621071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode_二叉树_DFS_中等_129.求根节点到叶节点数字之和

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给你一个二叉树的根节点 root &#xff0c;树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字&#xff1a;例如&#xff0c;从根节点到叶节点的路径 1 -> 2 -> …

【计算机网络】IP 地址处理函数

目录 1.struct sockaddr_in的结构 2.一般我们写的结构 3.常见的“点分十进制” 到 ” uint32_t 的转化接口 3.1. inet_aton 和 inet_ntoa &#xff08;ipv4&#xff09; 3.2. inet_pton 和 inet_ntop (ipv4 和 ipv6&#xff09; 3.3. inet_addr 和 inet_network 3…

人工智能-深度学习-科研神器推荐

根据知乎问题 有没有什么可以节省大量时间的 Deep Learning 效率神器&#xff1f; 的回答&#xff0c;筛选整理出一些深度学习科研神器。包括参数优化、数据可视化、模型部署蒸馏剪枝等。收录到 人工智能-深度学习-科研神器推荐https://​www.webhub123.com/#/home/detail?p4O…

vue监听缓存数据(localStorage)

方法&#xff1a;可以重写localStorage的setItem方法&#xff0c;当调用setItem方法设置新值的时候&#xff0c;会new Event(‘setItemEvent’) 用window.dispatchEvent()这个方法来派发一个事件&#xff0c;让window去监听 以下demo实现的是 一个页面获取诗句 然后将获取的数据…

【P51 】JMeter 聚合报告(Aggregate Report)

文章目录 一、聚合报告&#xff08;Aggregate Report&#xff09;参数说明二、准备工作三、测试计划设计 一、聚合报告&#xff08;Aggregate Report&#xff09;参数说明 可以查看事务或者取样器在某个时间范围内执行的汇总结果 使用场景&#xff1a;用于评估测试结果 使用…

2023-06-07 stonedb-包含内连接外连接派生表in子查询和聚合-查询结果错误-分析问题的思路

摘要: 最近在处理stonedb的一个包含内连接包含内连接外连接派生表in子查询和聚合的查询出错的问题, 逻辑非常复杂, 包含的操作符非常多. 本文首先从顶层设计出发, 指出如何分析如此复杂的问题。 查询SQL: SELECTB.company_id,上划日 ud_type,2 sort_no,合计 fiscal_date,DAT…

输入java -version 命令行没反应的简单解决办法【亲测有效】

&#x1f4a7; 记录一下今天遇到的 b u g \color{#FF1493}{记录一下今天遇到的bug} 记录一下今天遇到的bug&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 数据结构与算法…

qemu+buildroot+linux arm64操作系统虚拟化-宿主系统wsl2

文章目录 1.qemu2.buildroot配置编译 3.linux kernel下载交叉编译工具链 linux kernel 5.16配置内核config_kernel.shbuild_kernel.sh 4.启动虚拟机start_qemu.sh参数解释运行 环境&#xff1a; wls2、qemu8.2、buildroot、linuxkernel 1.qemu https://buildroot.org/download…

Python知识点:lambda 表达式

大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; Python 是一门简洁的语言&#xff0c;lambda 表达式则充分体现了 Python 这一特点。 lambda 表达可以被看做是一种匿名函数。它可以让你快速定义一个极度简单的单行函数。譬如这样一个实现三个数相加的函数&#xf…

学会使用perf性能分析工具(含移植到开发板)

文章目录 一、在ubuntu中使用apt包下载Perf二、使用源码安装Perf&#xff0c;并移植到arm-linux环境下三、使用perf四、Perf的功能介绍 系统&#xff1a;Ubuntu18.04系统 内核版本&#xff1a;5.4.0-150-generic&#xff08;通过uname -r查看&#xff09; 一、在ubuntu中使用ap…

Linux驱动系列-PWM驱动

转自&#xff1a;嵌入式系统研发 1.概述 本文主要讲述了Linux的PWM驱动框架、实现方法、驱动添加方法和调试方法。 示例Linux内核版本&#xff1a;6.2.8。 2.原理 PWM是Pulse-Width Modulation的简称&#xff0c;中文译作脉冲宽度调制。作为一种调制技术&#xff0c;PWM的…

SpringBoot实现异步调用的几种方式

一、使用 CompletableFuture 实现异步任务 CompletableFuture 是 Java 8 新增的一个异步编程工具&#xff0c;它可以方便地实现异步任务。使用 CompletableFuture 需要满足以下条件&#xff1a; 异步任务的返回值类型必须是 CompletableFuture 类型&#xff1b; 在异步任务中…

基于vasp计算材料红外与Raman光谱信息

使用方法一&#xff1a;获取材料raman活性信息 代码链接&#xff1a;VASP/Sibulk-VASP at master raman-sc/VASP GitHub 前置计算材料的振动频率和介电常数等&#xff0c;参考INCAR如下&#xff1a; SYSTEM Si_bulk ISTART 0 # From-scratch; job : 0-new 1-cont 2-same…

4-2 贪心算法的基本要素

博主简介&#xff1a;一个爱打游戏的计算机专业学生博主主页&#xff1a; 夏驰和徐策所属专栏&#xff1a;算法设计与分析 1.什么是贪心选择性质 贪心选择性质是一种在算法设计中经常使用的策略。它基于这样的思想&#xff1a;在每一步选择中&#xff0c;都选择当前看起来最优…

多篇论文入选ICASSP 2023,火山语音有效解决多类实践问题

近日由IEEE主办、被誉为世界范围内最大规模、也是最全面的信号处理及其应用方面的顶级学术会议ICASSP2023于希腊召开&#xff0c;该会议具有权威、广泛的学界以及工业界影响力&#xff0c;备受AI领域多方关注。会上火山语音多篇论文被接收并发表&#xff0c;内容涵盖众多前沿领…

superset db upgrade报错记录

superset db upgrade报错记录 报错1报错2报错3报错4报错5报错6成功了 报错1 (superset) [hyjhadoop102 ~]$ superset db upgradefrom markupsafe import soft_unicode ImportError: cannot import name soft_unicode from markupsafe (/opt/module/miniconda3/envs/superset/l…

git基本操作(笔记)

安装 查看是否安装成功 git --version配置用户名和邮箱 参数global表示全局配置&#xff0c;对所有仓库生效&#xff0c;system表示系统配置&#xff0c;对所有用户生效&#xff0c;省略是&#xff08;local&#xff09;表示本地配置&#xff0c;只对本地仓库有效。 git config…

奇安信 渗透测试(攻防类)一面复盘

奇安信 渗透测试&#xff08;攻防类&#xff09;一面复盘 1.你是哪里人2.你是做安全研发的&#xff0c;在qax这边除了这个红队的岗位还投递其他了吗3.看你研发做的比较多&#xff0c;为什么投递这个岗位4.给了一个具体的场景&#xff0c;问你做渗透测试的思路5.后渗透有了解吗&…

form-inserter 让你的表单插入更轻松

挖SRC的时候经常需要向 input 框或者textarea 框中插入一些payload&#xff0c;但是遇到某个网页需要插入的输入框很多或者payload 很复杂的时候&#xff0c;就需要多次复制粘贴&#xff0c;过程比较繁琐。 例如如下两种情况: 情况1&#xff1a;输入框很多 情况2&#xff1a;…

C语言趣味小游戏---利用二维数组实现三子棋游戏

学习了C语言中的二维数组&#xff0c;本照着学以致用的原则&#xff0c;现在利用对二维数组的操作来实现一个简单版的三子棋游戏。 三子棋其实我们都玩过&#xff0c;在我们这边又叫"一条龙"。就是一个九空格&#xff0c;下棋的双方依次在九个空格里面下棋&#xff0…