程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(3)

第139天学习打卡(Docker 发布自己的镜像 Docker网络)

发布于2021-05-29 19:57     阅读(799)     评论(0)     点赞(3)     收藏(1)


发布自己的镜像

DockerHub

1.地址[Docker Hub](https://hub.docker.com/choose-plan?ref=signup)注册自己的账号

2.确定这个账号可以登录

exit 退出
docker stop 容器id  #停止这个容器

3.在我们服务器上提交自己的镜像

[root@kuangshen home]# docker login --help

Usage:  docker login [OPTIONS] [SERVER]

Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.

Options:
  -p, --password string   Password
      --password-stdin    Take the password from stdin
  -u, --username string   Username
[root@kuangshen home]# 

4.登录完毕之后就可以提交镜像了,就是一步 docker push

[root@kuangshen home]# docker login -u doudoutj111
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
# push自己的镜像到服务器上!
[root@kuangshen home]# docker push diytomcat
Using default tag: latest
The push refers to repository [docker.io/library/diytomcat]
9de6adace58a: Preparing 
f91e9cf9384b: Preparing 
9cfae66b36ee: Preparing 
ff2c64520331: Preparing 
2653d992f4ef: Preparing 
denied: requested access to the resource is denied #拒绝

# 解决办法增加一个tag  注意使用的是自己的用户名
[root@kuangshen home]# docker tag f5ba5c225134 doudoutj111/tomcat:1.0
#docker push上去即可!自己发布的镜像尽量带上版本号
[root@kuangshen home]# docker push doudoutj111/tomcat:1.0
The push refers to repository [docker.io/doudoutj111/tomcat]
9de6adace58a: Pushed 
f91e9cf9384b: Pushed 
9cfae66b36ee: Pushing [================>                                  ]  116.7MB/359.6MB
ff2c64520331: Pushed 
2653d992f4ef: Pushing [========================>                          ]  101.4MB/209.3MB

image-20210527170930846

阿里云镜像

1.登录阿里云

2.找到容器镜像服务

image-20210527171725883

3.创建命令空间

image-20210527171957994

image-20210527172202982

image-20210527172559185

创建容器镜像:

image-20210527172655585

浏览阿里云镜像:

image-20210527173003014

image-20210527182738153

阿里云容器镜像参考官方地址:

docker tag [ImageId] registry.cn-beijing.aliyuncs.com/doudoutj/kuangshen-test:[镜像版本号]
docker push registry.cn-beijing.aliyuncs.com/doudoutj/kuangshen-test:[镜像版本号]

image-20210527174154979

成功发布:

image-20210527183016521

小结

image-20210527182818935

[root@kuangshen home]# docker save --help

Usage:  docker save [OPTIONS] IMAGE [IMAGE...]

Save one or more images to a tar archive (streamed to STDOUT by default)

Options:
  -o, --output string   Write to a file, instead of STDOUT
[root@kuangshen home]# docker load --help

Usage:  docker load [OPTIONS]

Load an image from a tar archive or STDIN

Options:
  -i, --input string   Read from tar archive file, instead of STDIN
  -q, --quiet          Suppress the load output
[root@kuangshen home]# 

Docker网络

理解Docker0网络

清空所有环境:

移除所有的容器

[root@kuangshen home]# docker rm -f $(docker ps -aq)

移除所有的镜像

[root@kuangshen home]# docker rmi -f $(docker images -aq)

image-20210527184339627

三个网络

#问题: docker是如何处理容器网络访问的?

image-20210527184519025

[root@kuangshen /]# docker run -d -P --name tomcat01 tomcat

# 查看容器的内部网络地址  ip addr
[root@kuangshen /]# docker exec -it tomcat01 ip addr,发现容器启动的时候会得到一个eth0@if111  ip地址, docker分配的。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
110: eth0@if111: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
# 思考, linux 能不能 ping 通容器内部!
[root@kuangshen /]# ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.098 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.049 ms
# linux 可以ping 通docker 容器内部

Ctrl + C退出

原理

1.我们每启动一个docker容器, docker就会给docker容器分配一个ip, 我们只要安装了docker,就会有一个网卡docker0,桥接模式,使用的技术是evth-pair技术!

再次测试ip addr

image-20210527191103206

2.再启动一个容器测试,发现又多了一对网卡!

image-20210527191503847

[root@kuangshen /]# docker exec -it tomcat02 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
112: eth0@if113: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

# 我们发现这个容器带来网卡,都是一对一对的
# evth-pair 就是一对虚拟设备接口,他们都是成对出现的,一端连着协议,一端彼此相连
# 正因为这个特性, evth-pair充当一个桥梁,连接各种虚拟网络设备的
# OpenStac ,Docker容器之间的连接,OVS的连接,都是使用evth-pair技术

3.我们来测试一下tomcat01和tomcat02是否可以ping通

[root@kuangshen /]# docker exec -it tomcat02 ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.085 ms
# 结论:容器和容器之间是可以互相ping通的!

image-20210527193021867

结论:tomcat01 和tomcat02是公用的一个路由器, docker0.

所有的容器不指定网络的情况下,都是docker0路由器,docker会给我们的容器分配一个默认的可用IP

小结

Docker使用的是Linux的桥接,宿主机中是一个Docker 容器的网桥 docker0。

image-20210527193605076

Docker中的所有的网络接口都是虚拟的。虚拟的转发效率高。

只要容器删除,对应的网桥一对就没了!
image-20210527194131096

B站学习地址:【狂神说Java】Docker最新超详细版教程通俗易懂_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili



所属网站分类: 技术文章 > 博客

作者:快起来搬砖啦

链接:http://www.javaheidong.com/blog/article/207089/baa63149d9b4804df860/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)