当前位置: 首页>数据库>正文

阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的

当公司有新同事入职时,我们常常会让其从git或svn上拉代码下来,并在本地跑通。若公司开发阶段没有公共的服务器,那么还需要在自己电脑上装各种环境,例如mysql、redis、nginx等。如果环境的配置很复杂,或者对环境的各个版本要求很严格,那每个人都需要花大量的时间去配置,整体效率低下,耽误下班把妹时间。

docker镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。

所以我们完全可以把所需要用到的环境,打成一个个的镜像文件,放到服务器上。等有新同事入职,直接让他拉取这个镜像文件并运行即可,省去了繁琐的配置过程。且如果后期做服务器文件迁移,也不用再挨个去安装配置环境了,所谓一人得道全家升天,岂不美哉。

1. 镜像准备

上面罗里吧嗦了那么多,现在就以实际案例来演示此过程。首先我们需要准备一个镜像,本文就以 nginx 为例。需求是我们把 nginx 的欢迎页改为 Hello Docker ,并且打包为新的镜像。这样公司每个同事拉取镜像运行后,访问的欢迎页都是 Hello Docker,就无需再去手动更改了。

1.1 拉取镜像

[root@localhost /]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Already exists 
a9edb18cadd1: Pull complete 
589b7251471a: Pull complete 
186b1aaa4aa6: Pull complete 
b4df32aa5a72: Pull complete 
a0bcbecc962e: Pull complete 
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

1.2 启动nginx容器

[root@localhost /]# docker run -p 80:80 -d nginx
f02448ffdda35c01c618f81e8ac3d8647c24aa49c68004dcbae70ff99570b3b3

1.3 查看实例

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
f02448ffdda3   nginx       "/docker-entrypoint.…"   2 seconds ago   Up 1 second    0.0.0.0:80->80/tcp, :::80->80/tcp                      musing_lovelace

1.4 访问主页

以上步骤完成之后,访问服务器地址,发现来到了nginx 的欢迎页。

阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的,阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的_docker,第1张

1.5 更改nginx欢迎页

# 根据容器id进入容器
[root@localhost ~]# docker exec -it f024 /bin/bash

# 进入nginx的index.html 目录
root@f02448ffdda3:/# cd /usr/share/nginx/html/

# 更改文件内容
root@f02448ffdda3:/usr/share/nginx/html# echo "Hello Docker" > index.html

1.6 更改后的效果

此时再访问服务器地址,发现nginx欢迎页已经变更为了 Hello Docker

阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的,阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的_阿里云_02,第2张

1.7 将容器打包为新的镜像

ctrl + p + q 退出容器,然后进行打包:

[root@localhost ~]# docker commit -a="linzichen" -m="修改nginx欢迎页" f024 mynginx
sha256:c58dc897ed2999a1a189ef1451714d8505df750c7382e85692a4d58cd12060bb

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
mynginx      latest    c58dc897ed29   20 seconds ago   141MB
nginx        latest    605c77e624dd   10 months ago    141MB

至此,我们打包好的镜像 mynginx 就已经ok了。

2. 镜像推送到阿里云

镜像打包完成后,需要推送到远程仓库,这样别人才可以拉取到。这里选择阿里云的仓库。

2.1 容器镜像服务

在阿里云官网,找到【产品】里的【容器镜像服务】,进入控制台后,创个【个人实例】(因为在本地测试,所以选择个人,公司的话需要花money购买企业版的)。

阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的,阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的_阿里镜像仓库怎么搜索镜像_03,第3张

2.2 创建命名空间

阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的,阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的_运维_04,第4张

2.3 创建镜像仓库

阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的,阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的_运维_05,第5张

阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的,阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的_docker_06,第6张

2.4 相关指令

以上步骤完成后,我们可以根据操作指南里的描述,将mynginx镜像推送到阿里云仓库。

阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的,阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的_nginx_07,第7张

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
mynginx      latest    c58dc897ed29   20 seconds ago   141MB
nginx        latest    605c77e624dd   10 months ago    141MB

[root@localhost ~]#  docker login --username=linzichen registry.cn-hangzhou.aliyuncs.com
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

# tag 后面需要跟镜像的IMAGE ID
[root@localhost ~]# docker tag c58dc897ed29 registry.cn-hangzhou.aliyuncs.com/linzichen/leolinzc-rep:1.1

[root@localhost ~]# docker push registry.cn-hangzhou.aliyuncs.com/linzichen/leolinzc-rep:1.1
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/linzichen/leolinzc-rep]
0e6258cdeb54: Pushed 
d874fd2bc83b: Pushed 
32ce5f6a5106: Pushed 
f1db227348d0: Pushed 
b8d6e692a25e: Pushed 
e379e8aedd4d: Pushed 
2edcec3590a4: Pushed 
1.1: digest: sha256:4511d49773f3b1cc8ac350befebbf00178af7f353393f0a073497bafbaf5453d size: 1778

2.5 验证

上述操作完成之后,去阿里云镜像仓库,发现我们刚刚推送的已经成功了。

阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的,阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的_nginx_08,第8张

2.6 拉取

如果要拉取仓库中的镜像,只需要根据基本信息里的【操作指南】拉取即可。

[root@localhost ~]# docker pull registry.cn-hangzhou.aliyuncs.com/linzichen/leolinzc-rep:1.1
1.1: Pulling from linzichen/leolinzc-rep

[root@localhost ~]# docker images
REPOSITORY                                                 TAG       IMAGE ID       CREATED          SIZE
registry.cn-hangzhou.aliyuncs.com/linzichen/leolinzc-rep   1.1       c58dc897ed29   58 minutes ago   141MB

2.7 验证新拉取的镜像

[root@localhost ~]# docker run -p 80:80 -d c58dc897ed29
67463bd36895d7b54d31517799c5a2073cc08c93845d927b8c26967326de9903

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS             PORTS                                                  NAMES
67463bd36895   c58dc897ed29   "/docker-entrypoint.…"   4 seconds ago   Up 2 seconds       0.0.0.0:80->80/tcp, :::80->80/tcp                      elastic_curran

阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的,阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的_运维_09,第9张

3. 镜像推送到私有库

有些时候我们不希望代码放到外网,想类似于 git lab似的在本地服务器创建私有仓库。所以此时我们需要在自己服务器搭建一个私有仓库。

##3.1 下载镜像仓库

[root@localhost ~]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
79e9f2f55bf5: Pull complete 
0d96da54f60b: Pull complete 
5b27040df4a2: Pull complete 
e2ead8259a04: Pull complete 
3790aef225b9: Pull complete 
Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest

3.2 运行私有库Registry

就是相当于在本地服务器上搭建了个 docker hub。

[root@localhost ~]# docker run -d -p 5000:5000 -v /usr/local/registry/:/tmp/registry --privileged=true registry
59e4ba84a1bd4102ff4c359d6833a9706f173016facbb89af3805d2be96a983a

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS                                                  NAMES
59e4ba84a1bd   registry       "/entrypoint.sh /etc…"   About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp              happy_bardeen

3.3 验证本地私服仓库

[root@localhost ~]# curl -XGET http://192.168.2.123:5000/v2/_catalog
{"repositories":[]}

192.168.2.123 是自己服务器的地址,repositories是空的,说明还未向仓库中添加任何镜像。

3.4 修改镜像命名

我们需要把要推送的镜像,重命名为符合私服规范的。

docker tag 镜像:Tag Host:Port/Repository:Tag

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mynginx      latest    5db4431fb683   6 seconds ago   141MB

[root@localhost ~]# docker tag mynginx:latest 192.168.2.123:5000/mynginx:latest

[root@localhost ~]# docker images
REPOSITORY                   TAG       IMAGE ID       CREATED         SIZE
mynginx                      latest    5db4431fb683   6 minutes ago   141MB
192.168.2.123:5000/mynginx   latest    5db4431fb683   6 minutes ago   141MB

3.5 修改配置文件支持http

刚学docker时,我们都会把docker的镜像仓库地址改为阿里云的,目的是为了加快镜像的拉取速度。所在在 /etc/docker 中会存在 daemon.json 文件:

[root@localhost /]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://lbws5pbg.mirror.aliyuncs.com"]
}

vim 编辑文件,配置docker允许支持以http方式推送镜像。添加"insecure-registries": ["192.168.2.123:5000"],ip为自己docker 服务器的ip。

[root@localhost /]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://lbws5pbg.mirror.aliyuncs.com"],
  "insecure-registries": ["192.168.2.123:5000"]
}

3.6 推送镜像到私服

[root@localhost /]# docker images
REPOSITORY                   TAG       IMAGE ID       CREATED          SIZE
192.168.2.123:5000/mynginx   latest    5db4431fb683   18 minutes ago   141MB

[root@localhost /]# docker push 192.168.2.123:5000/mynginx:latest
The push refers to repository [192.168.2.123:5000/mynginx]
3cbd1830e9c0: Pushed 
d874fd2bc83b: Pushed 
32ce5f6a5106: Pushed 
f1db227348d0: Pushed 
b8d6e692a25e: Pushed 
e379e8aedd4d: Pushed 
2edcec3590a4: Pushed 
latest: digest: sha256:ff4733639d1731096c730b222d9dc471f06e83efa3fb6167a6a2c2eb2e5ec718 size: 1778

如果推送时报错,例如:

[root@localhost /]# docker push 192.168.2.123:5000/mynginx:latest
The push refers to repository [192.168.2.123:5000/mynginx]
Get "https://192.168.2.123:5000/v2/": http: server gave HTTP response to HTTPS client

则需要重启下 docker,并且重新运行 registory 的镜像:

# 重启docker
[root@localhost /]# systemctl daemon-reload
[root@localhost /]# systemctl restart docker

# 运行registory镜像
[root@localhost /]# docker run -d -p 5000:5000 -v /usr/local/registry/:/tmp/registry --privileged=true registry
87c6adc3360f8498ae0483f739636cdf6329ad712e58550f2af59516316af624

3.7 验证推送是否成功

# 已经存在 mynginx,说明推送成功
[root@localhost /]# curl -XGET http://192.168.2.123:5000/v2/_catalog
{"repositories":["mynginx"]}

3.8 拉取私服镜像

# 拉取之前
[root@localhost /]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
mynginx      latest    5db4431fb683   28 minutes ago   141MB
nginx        latest    605c77e624dd   10 months ago    141MB
registry     latest    b8604a3fe854   12 months ago    26.2MB

[root@localhost /]# docker pull 192.168.2.123:5000/mynginx:latest
latest: Pulling from mynginx
Digest: sha256:ff4733639d1731096c730b222d9dc471f06e83efa3fb6167a6a2c2eb2e5ec718
Status: Downloaded newer image for 192.168.2.123:5000/mynginx:latest
192.168.2.123:5000/mynginx:latest

# 拉取之后
[root@localhost /]# docker images
REPOSITORY                   TAG       IMAGE ID       CREATED          SIZE
192.168.2.123:5000/mynginx   latest    5db4431fb683   29 minutes ago   141MB
mynginx                      latest    5db4431fb683   29 minutes ago   141MB
nginx                        latest    605c77e624dd   10 months ago    141MB
registry     latest    b8604a3fe854   12 months ago    26.2MB

3.9 访问私服的nginx

[root@localhost /]# docker run -p 80:80 -d 192.168.2.123:5000/mynginx
9bef626b40946e8369b3f4af7052b4e19896cff184a0292029e6410027089526

[root@localhost /]# docker ps
CONTAINER ID   IMAGE                        COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
9bef626b4094   192.168.2.123:5000/mynginx   "/docker-entrypoint.…"   4 seconds ago    Up 1 second     0.0.0.0:80->80/tcp, :::80->80/tcp                      goofy_babbage
87c6adc3360f   registry                     "/entrypoint.sh /etc…"   10 minutes ago   Up 10 minutes   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp              quizzical_lumiere

阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的,阿里镜像仓库怎么搜索镜像 阿里云镜像是干嘛的_运维_09,第9张

··



https://www.xamrdz.com/database/6d91937377.html

相关文章: