Docker虚拟化踩坑录01:docker安装

0.前言

云计算、虚拟化及大数据的学习过程中要部署环境,但是部署的方法很多都是面向生产实践的,但是我们作为学生,其实就是练练手,并不需要在平台上跑各种繁重的应用系统,如果我们都在老破小的4核笔记本上去跑Hadoop,去跑各种网络服务和云计算的平台,一定是不靠谱的。但是,我们只是搭个框架,只是模拟分配各种技术资源、网络资源和存储资源,并不是真实分配各种资源,总不至于跑去买HPE服务器吧?那老破小的笔记本可不可以搭建这些时髦的平台,以供我们学习用呢?

为此,我两年前买了台Xeon处理器的台式机,64G内存,但是还是不尽人意。最近我想采用docker的虚拟化技术来部署hadoop、zabbix、SDN等平台,居然非常有用,可以帮助我们搭建本科阶段的学习平台。可恶的dell把内存焊死在主板上,只有8G内存,我不敢把它拆了,只好用docker的方式搭建平台。你相信下面是我运行了20台centos容器的状况吗?

    好下面我们就开始吧。首先我们安装docker及配套工具。

1.安装Centos stream9系统及网络配置

我的虚拟机采用的是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 updateupgrade

2.安装docker及其附加

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.小试牛刀:创建两个不同网段的centos容器,并让它们相互ping通

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/2410.0.129.0/24

然后用上一步拉取的镜像创建个容器myCts01myCts02

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的虚拟化容器部署。敬请期待!

  • 27
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值