day101 docker安装和流量的转发

day101 docker安装和流量转发

docker安装部署

# 1.卸载旧版本
$ sudo yum remove docker \
           docker-common \
           docker-selinux \
           docker-engine


# 2. 使用yum安装
$ sudo yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2

# 3鉴于国内网络问题,强烈建议使用国内源执行下面的命令添加 yum 软件源
$ sudo yum-config-manager \
    --add-repo \
    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

# 4. 安装Docker CE
	sudo yum makecache fast
	sudo yum install docker-ce
	
# 5. 使用脚本自动的安装
 curl -fsSL get.docker.com -o get-docker.sh
 sudo sh get-docker.sh --mirror Aliyun


# 6. 启动 Docker CE
sudo systemctl enable docker
 sudo systemctl start docker


# 最后测试安装是否正确
$ docker run hello-world

配置docker得镜像下载的加速器

# 默认  docker pull  dockerhub 国外站点下载, 太慢 
相当于python pip源一样,换源

# 方案一,是去docker的中国的分公司daocloud.io里下载 (这个一般不用)



==============================

# 方案二 用自己的阿里云镜像的加速器
阿里云地址   https://cr.console.aliyun.com/cn-beijing/instances/mirrors

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://hub-mirror.c.163.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker


# 方案三用华为云的镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://42240640f9ff42f692a2468126dfdf90.mirror.swr.myhuaweicloud.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

启动一个容器

客户端使用Rest api和 Docker daemon 进行访问

运维牛马 用docek维护命令

# 启动一个nginx测试

# 容器,镜像的关系

# 镜像 ()

# 容器的三部曲
1, 查询官网镜像
2, 下载官方镜像
3, 运行官网镜像
4, 容器运行后,会创建一个容器id,去管理它
5, 查看运行容器的进程,

1, 搜索官方镜像

docker search 镜像名:  #语法

docker search nginx # 默认最新的版本


2. 下载官网镜像
docker pull nginx 

语法
# docker  pull 镜像名:tag  版本

docker  pull  nginx:latest 
# 下载过程,你会发现,拆开,一层一层下载的?为什么?镜像原理,分层原理


[root@docker-01 ~]#docker pull nginx 
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete 
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


# 3运行官网的镜像
   # 首先是端口的映射,你才能访问到容器内的东西
   # -p 28877:80  这里是将宿主机的28877流量转发给容器内目标端口
   # -d 后台运行docker实例进程
   
   docker run  -p 28877:80 nginx

如果不加的化就在前台运行进程,卡了不好用

docker run -d -p 28877:80 nginx

4. 运行容器后,返回一个创建的容器id,可以管理
端口的转发,容器的80端口转发到宿主机器上的288877端口

[root@docker-100 docker]# docker run -d -p 28877:80 nginx
68e2082b1f23b234d2f7cb0d2d789df260f7d84f39879df5ac31c38fdeb2f0b6


5. 查看运行的容器进程列表。

 docker ps

分析容器进程查看

容器id 来自的镜像 执行命令 执行时间 运行多久 容器端口映射关系 名字

访问试试

理解docker网络流量的走向

用户访问  宿主机的10.0.0.100:28877
↓
宿主机的网卡 10.0.0.1/24 
↓
转发到容器上的inet6这个虚拟的docker网卡

查看这个运行中的容器进程,创建了些什么。

## 检查nginx,容器进程的信息。
[root@docker-100 docker]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                     NAMES
68e2082b1f23   nginx     "/docker-entrypoint.…"   38 minutes ago   Up 38 minutes   0.0.0.0:28877->80/tcp, :::28877->80/tcp   zen_gould

容器进程说白了,宿主机上的一个进程(docker进程所管理的程序)
ps -ef | grep 14928
root      14928      1  0 01:47 ?        00:00:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 68e2082b1f23b234d2f7cb0d2d789df260f7d84f39879df5ac31c38fdeb2f0b6 -address /run/containerd/containerd.sock

这段的信息,证明容器进程, 创建容器的信息,以及名称空间,网络空间等,

# 停止容器进程(三种的方法)
docker stop 68e     # 进程id的前三位
docker stop 68e2082b1f23   # 进程id的全部
docker stop zen_gould		# docker ps 生成的 名称


[root@docker-100 docker]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
# 你看空了

面试题

容器挂掉以后数据会丢吗

知识点(这个容器记录是否还在,是否被删除)
回答,不会。主要是看 docker ps -a 是否还能查询到该容器的记录。

# 查询所有的容器记录,详细的信息

容器挂了,端口映射都被释放了,虚拟的网络接口没了

现在我们重新的启动看看

docker start 68e

[root@docker-100 docker]# docker start 68e
68e
[root@docker-100 docker]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS                                     NAMES
68e2082b1f23   nginx     "/docker-entrypoint.…"   58 minutes ago   Up 7 seconds   0.0.0.0:28877->80/tcp, :::28877->80/tcp   zen_gould

# 用户访问
⬇️
# 宿主机器的网卡
⬇️
# docker的虚拟的交换机
⬇️
# 容器的虚拟地址 (返回数据)

撒花🌸🌸🌸🌸🌸🌸🌸🌸😘

posted @ 2025-05-15 15:28  国家一级冲浪yzk  阅读(48)  评论(0)    收藏  举报