赞
踩
云计算、虚拟化及大数据的学习过程中要部署环境,但是部署的方法很多都是面向生产实践的,但是我们作为学生,其实就是练练手,并不需要在平台上跑各种繁重的应用系统,如果我们都在老破小的4核笔记本上去跑Hadoop,去跑各种网络服务和云计算的平台,一定是不靠谱的。但是,我们只是搭个框架,只是模拟分配各种技术资源、网络资源和存储资源,并不是真实分配各种资源,总不至于跑去买HPE服务器吧?那老破小的笔记本可不可以搭建这些时髦的平台,以供我们学习用呢?
为此,我两年前买了台Xeon处理器的台式机,64G内存,但是还是不尽人意。最近我想采用docker的虚拟化技术来部署hadoop、zabbix、SDN等平台,居然非常有用,可以帮助我们搭建本科阶段的学习平台。可恶的dell把内存焊死在主板上,只有8G内存,我不敢把它拆了,只好用docker的方式搭建平台。你相信下面是我运行了20台centos容器的状况吗?
好下面我们就开始吧。首先我们安装docker及配套工具。
我的虚拟机采用的是CentOSstream9最小化安装。
[root@localhost ~]# cat /etc/centos-release CentOS Stream release 9 |
网络名称 | ip | 用途 |
vmnet8 | 192.168.137.0/24DHCP | 上外网 |
vmnet0 | 192.168.0.0/24桥接到物理NIC | 和局域网其他主机相连 |
vmnet1 | 100.100.100.0/24和虚拟卡KM-TEST桥接 | 用于宿主机各种内部网络 |
[root@localhost ~]# ip a 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 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:e2:c9:c5 brd ff:ff:ff:ff:ff:ff altname enp2s1 inet 192.168.137.129/24 brd 192.168.137.255 scope global noprefixroute ens33 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fee2:c9c5/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:e2:c9:cf brd ff:ff:ff:ff:ff:ff altname enp2s4 inet 192.168.0.120/24 brd 192.168.0.255 scope global dynamic noprefixroute ens36 valid_lft 2950sec preferred_lft 2950sec inet6 fe80::a58:b444:bc3a:7eda/64 scope link noprefixroute valid_lft forever preferred_lft forever 4: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:e2:c9:d9 brd ff:ff:ff:ff:ff:ff altname enp2s5 inet 100.100.100.223/24 brd 100.100.100.255 scope global noprefixroute ens37 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fee2:c9d9/64 scope link noprefixroute valid_lft forever preferred_lft forever …… |
更换镜像源为aliyun,然后执行yum update和upgrade
0.1 安装docker
yum install curl -y curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun |
安装必要的系统工具
[root@wuzbx wutool]# yum install -y yum-utils device-mapper-persistent-data lvm2 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.bfsu.edu.cn * extras: mirrors.bfsu.edu.cn * updates: mirrors.bfsu.edu.cn 软件包 yum-utils-1.1.31-54.el7_8.noarch 已安装并且是最新版本 软件包 device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64 已安装并且是最新版本 软件包 7:lvm2-2.02.187-6.el7_9.5.x86_64 已安装并且是最新版本 无须任何处理 |
添加 yum 源
[root@wuzbx wutool]# yum makecache 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.bfsu.edu.cn * extras: mirrors.bfsu.edu.cn * updates: mirrors.bfsu.edu.cn base | 3.6 kB 00:00:00 docker-ce-stable | 3.5 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 元数据缓存已建立 |
查找 Docker-CE 的版本
[root@wuzbx wutool]# yum list docker-ce.x86_64 --showduplicates | sort -r 已加载插件:fastestmirror 已安装的软件包 可安装的软件包 * updates: mirrors.bfsu.edu.cn Loading mirror speeds from cached hostfile * extras: mirrors.bfsu.edu.cn …… docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable * base: mirrors.bfsu.edu.cn(北京第一外国语) |
[root@localhost docker]# yum -y install docker-ce-26.1.3-1.el9 docker-ce-cli-26.1.3-1.el9 Last metadata expiration check: 0:06:23 ago on Sat 25 May 2024 08:22:56 PM CST. Package docker-ce-3:26.1.3-1.el9.x86_64 is already installed. Package docker-ce-cli-1:26.1.3-1.el9.x86_64 is already installed. Dependencies resolved. Nothing to do. Complete! |
0.2启动
[root@docker ~]# systemctl start docker [root@docker ~]# systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. |
0.3查看docker0
[root@wuzbx wutool]# docker version Client: Docker Engine - Community Version: 26.1.3 API version: 1.45 Go version: go1.21.10 Git commit: b72abbb Built: Thu May 16 08:36:24 2024 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 26.1.3 API version: 1.45 (minimum version 1.24) Go version: go1.21.10 Git commit: 8e96db1 Built: Thu May 16 08:35:20 2024 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.32 GitCommit: 8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89 runc: Version: 1.1.12 GitCommit: v1.1.12-0-g51d5e94 docker-init: Version: 0.19.0 GitCommit: de40ad0 |
查看 Docker 信息
[root@wuzbx wutool]# docker version Client: Docker Engine - Community Version: 26.1.3 API version: 1.45 Go version: go1.21.10 Git commit: b72abbb Built: Thu May 16 08:36:24 2024 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 26.1.3 API version: 1.45 (minimum version 1.24) Go version: go1.21.10 Git commit: 8e96db1 Built: Thu May 16 08:35:20 2024 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.32 GitCommit: 8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89 runc: Version: 1.1.12 GitCommit: v1.1.12-0-g51d5e94 docker-init: Version: 0.19.0 GitCommit: de40ad0 [root@wuzbx wutool]# clear [root@wuzbx wutool]# docker info Client: Docker Engine - Community Version: 26.1.3 Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.14.0 Path: /usr/libexec/docker/cli-plugins/docker-buildx compose: Docker Compose (Docker Inc.) Version: v2.27.0 Path: /usr/libexec/docker/cli-plugins/docker-compose Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 26.1.3 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Using metacopy: false Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog Swarm: inactive Runtimes: runc io.containerd.runc.v2 Default Runtime: runc Init Binary: docker-init containerd version: 8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89 runc version: v1.1.12-0-g51d5e94 init version: de40ad0 Security Options: seccomp Profile: builtin Kernel Version: 3.10.0-1160.118.1.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 3.682GiB Name: wuzbx ID: b366bde2-b41d-4466-839f-144ce6e1ef8f Docker Root Dir: /var/lib/docker Debug Mode: false Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false |
Docker 镜像加速器配置
重启
sudo systemctl daemon-reload sudo systemctl restart docker |
3.1拉取最新centos镜像
docker pull centos REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc9764 2 years ago 231MB |
3.2创建和虚拟机桥接的两个网络:10.0.128.0/24和10.0.129.0/24
然后用上一步拉取的镜像创建个容器myCts01和myCts02
docker network create --driver bridge --subnet 10.0.128.0/24 --gateway=10.0.128.1 mynetwork01 docker network create --driver bridge --subnet 10.0.129.0/24 --gateway=10.0.129.1 mynetwork02 |
查看:
[root@localhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE fe579aaf6ba4 bridge bridge local b5f4ea8a8727 host host local f8c2ffafb13d mynetwork01 bridge local eb22c4a2f236 mynetwork02 bridge local 0fd16dd03f1b none null local |
网络创建成功了。
3.3创建容器并测试外网连通性
docker run -it --name=myCts01 --network=mynetwork01 centos /bin/bash docker run -it --name=myCts02 --network=mynetwork02 centos /bin/bash |
进入退出容器有两种方式:1.exit退出并关闭;2.ctrl+p+q退出容器,但容器仍然运行。
3.4连接两台容器和网络并测试
docker network connect mynetwork01 myCts02 docker network connect mynetwork02 myCts01 |
[root@localhost ~]# docker exec -it myCts01 ping myCts02 -c 2 PING myCts02 (10.0.128.3) 56(84) bytes of data. 64 bytes from myCts02.mynetwork01 (10.0.128.3): icmp_seq=1 ttl=64 time=0.140 ms 64 bytes from myCts02.mynetwork01 (10.0.128.3): icmp_seq=2 ttl=64 time=0.097 ms |
我整理出来,虽然看起来很简单,但是中间有很多坑,也有很多技巧。后面我们将讨论容器里的一些基本操作,和多次掉坑里后的一些经验和技巧。讨论完容器和网络的基本操作后,后续内容大的板块会包括:MySQL、完全分布式Hadoop、Zabbix以及SNMP及RMON的虚拟化容器部署。敬请期待!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。