唐僧喜欢小龙女

导航

docker 容器管理

1、安装docker

    1、关闭防火墙和selinux
       https://www.cnblogs.com/gaohq/p/15582966.html

    2、yum update
       yum update 命令 然后重启下服务

    3、配置yum的仓库
    yum install -y yum-utils device-mapper-persistent-data lvm2

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum install docker-ce docker-ce-cli containerd.io
  4、安装docker 

       yum install docker-ce 默认装的是最新的

       systemctl start docker

       systemctl enable docker  设置成开机启动

       docker info  看docker 的信息

 

2、创建容器常用的命令

一个镜像run起来后是宿主机上的一个进程,如下图是创建nginx容器后的进程信息

 -it 的作用:1、给正在创建的容器分配一个伪终端的进程在容器里面,让容器一直运行者,避免容器起来了立马终止掉 2、进入容器时需要

-d 是后台运行的意思

-name 给容器设置名称,默认是随机生成的

-e 给容器设置环境变量

-restart 重启的策略 always 当容器挂掉后容器会重启的,当重启docker 服务后 容器也会自动的启动

 

-m 当前容器可以使用宿主机最大的内存
--cpus 当前容器可以使用宿主机最大的cpu

docker run -m="500m" --cpus= "1" -d -e env = prod -p 80:80 --name mynginx  --restart=always nginx 

3、管理容器常见的命令

docker top 容器

看容器负载情况
docker top 容器名称

4、docker 数据持久化

docker run -m="500m" --cpus= "1" -d -e env = prod -p 80:80 -v /opt/wwwroot:/usr/share/nginx/html --name mynginx  --restart=always nginx

5、docker 容器网络

5.1 网络设备

veth pair 我们访问宿主机上的网络都需要 经过宿主机,宿主机上的网络命名空间和容器的网络命名空间是隔离的,默认是不能相互访问的
那就需要一个虚拟的网络设备把两个命名空间连接起来,这个网络设备就是veth,每次创建一个容器就会有一个veth与之一一对应
就相当于是挖路的

docker0:网桥也是一个虚拟设备相当于交换机,用于和容器内的网卡建立连接。
这样宿主机的网络命名空间就能在veth 挖好的路上通过docker0和容器的网卡建立了通信,相当于是路上的一个收费站来接受请求的

以上是容器的网络通信的涉及到的两个虚拟网络设备的作用

5.2 浏览器到容器内部的网络请求过程

那么宿主机怎么访问到容器内呢,以及容器内怎么访问外部信息呢

Docker 使用iptables 实现网络通信。

我们浏览器上访问 192.168.1.10:88 时 怎么会转发到我们刚创建的nginx 容器里面呢

 

先找到宿主机的网卡,然后可以看下 88 这个端口被谁监听的(ss -antp|grep 88)发现是docker (docker0)来监听的
为什么会监听呢是因为 我们设置了-p 做了一个端口映射,实际上是通过iptables实现了一个DNAT(目标网络地址转换)的机制

这个转换的地址也可以通过命令来看转换规则

iptables -t nat -vnL DOCKER

 

192.168.1.10 是宿主机的地址,docker 监听 88 端口,根据iptables 创建的DNAT 机制把这个请求 转换到容器内部的网卡(172.17.0.2)上.
宿主机会维护一个ip route 路由规则 (ip route)

 

会发现会路由到docker0 这个网络设备上,docker0 进行网络广播寻址,寻找到 具体的某个容器。这样实现了从浏览器到宿主机容器内的网络通信

关键的是 DNAT和路由表比较关键

 

6、harbor 安装

6.1 docker-compose 安装

    1、mv /usr/local/src/dockercompose/docker-compose-Linux-x86_64 /usr/bin/docker-compose
    2、chmod +x /usr/bin/docker-compose
    3、docker-compose 可以看到命令的帮助就可以了

6.2 harbor 安装

    1、tar zxvf harbor-offline-installer-v2.0.0.tgz
    2、cd harbor
    3、cp harbor.yml.tmpl harbor.yml
    4、vi harbor.yml
        hostname: reg.ctnrs.com 改成当前宿主机的ip
        https: # 先注释https相关配置 
        harbor_admin_password: Harbor12345

    5、./prepare
    6、./install.sh  5和6都是在harbor目录中 可能要花 2分钟

    7、访问harbor
        http://192.168.1.11:80 admin / Harbor12345



    8、推送仓库
        vi /etc/docker/daemon.json
        {"insecure-registries":["reg.ctnrs.com"]} 仅用于http的请求,如果是https就不用了
        systemctl restart docker

        docker-compose up -d harbor目录下

        docker tag nginx:latest 192.168.1.11/library/nginx:v1

        docker login 192.168.1.11 

 

7、容器里面安装常见的Linux命令 

更新包管理
    apt-get update
安装 vim命令
    apt-get install vim -y
安装netstat 命令
    apt-get install net-tools
容器内安装ps命令    
    apt-get install procps

 

posted on 2022-04-17 18:08  与时具进&不忘初心  阅读(84)  评论(0编辑  收藏  举报