docker 容器引擎的安装和配置

1.1 Docker 基本介绍
1.1.1 Docker 是什么?
        Docker 是容器的称呼,常见的容器除了 docker 外,还有 containerd、podman、CRI-O 等,开发写好的代码或者需要部署的服务,都打包到一个镜像里,然后基于 docker 或者 containerd 或者podman 运行镜像,就可以提供相应的服务了。
1.1.2 Docker 特性
    优点:
    1、高度可移植性:Docker 可以在任何支持 Docker 的平台上运行,而且容器可以在不同的环境中快速、简单地部署和移植。
    2、轻量级和高效:Docker 容器非常轻量级,启动和停止速度快,并且对系统资源的占用非常少。
    3、隔离性好:Docker 使用 Namespace 和 cgroups 技术实现容器的隔离,每个容器都拥有自己的进程、网络、文件系统和其他资源,保证了容器之间的隔离性和安全性。
    4、易于管理和扩展:Docker 提供了一系列的命令行工具和图形化界面,可以方便地管理和监控容器。同时,Docker 还支持容器编排工具,如 Kubernetes,可以轻松地管理和扩展容器集群。
    5、生态系统丰富:Docker 拥有庞大的社区和生态系统,提供了丰富的容器镜像和插件,可以方便地构建、部署和运行应用程序。

1.2 安装 docker 容器并配置镜像加速器
1.2.1 部署环境准备
主机环境: rockylinux 8.8
主机 ip: 静态192.168.0.100(网卡nat模式)
1、配置静态 ip 和主机名
1)把 ip 配置成静态的
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens160
[root@localhost network-scripts]# cp ifcfg-ens160 ifcfg-ens160.bak
[root@localhost network-scripts]# ls
ifcfg-ens160  ifcfg-ens160.bak
[root@localhost network-scripts]# vim ifcfg-ens160

输入i键,修改如下

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static 改
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=ens160
#UUID=48708837-7dce-4fc3-b104-e9c19e01cec4 加#号
DEVICE=ens160
ONBOOT=yes 改
IPADDR=192.168.0.100 加
NETMASK=255.255.255.0 加
GATEWAY=192.168.0.2 加
DNS1=223.5.5.5 加

按esc键,输入:wq回车

网络配置文件改完生效方式:
重载网卡 ,重启网卡之前一定要重新载入一下配置文件,不然不能立即生效

[root@localhost network-scripts]# nmcli connection reload 
[root@localhost network-scripts]# nmcli connection up ens160 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/11)
[root@localhost network-scripts]# ifconfig -a
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::20c:29ff:fe03:557d  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:03:55:7d  txqueuelen 1000  (Ethernet)
        RX packets 16893  bytes 25148936 (23.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3051  bytes 204629 (199.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

测试连通性

[root@localhost network-scripts]# cd
[root@localhost ~]# ping -c4 qq.com
PING qq.com (111.33.167.71) 56(84) bytes of data.
64 bytes from 111.33.167.71 (111.33.167.71): icmp_seq=1 ttl=128 time=51.2 ms
64 bytes from 111.33.167.71 (111.33.167.71): icmp_seq=2 ttl=128 time=48.6 ms
64 bytes from 111.33.167.71 (111.33.167.71): icmp_seq=3 ttl=128 time=48.5 ms
64 bytes from 111.33.167.71 (111.33.167.71): icmp_seq=4 ttl=128 time=48.6 ms

--- qq.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 48.513/49.247/51.193/1.156 ms
[root@localhost ~]# 

2)配置主机名

[root@localhost ~]# hostnamectl set-hostname danqing
[root@localhost ~]# exit

退出当前shell,重新连接生效

2、关闭 selinux、停掉防火墙

[root@danqing ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 
[root@danqing ~]# 
[root@danqing ~]# systemctl stop firewalld && systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@danqing ~]# 

注意:修改 selinux 配置文件之后,必须重启 linux 机器,selinux 才能永久生效

3、配置时间同步,并且验证时间

[root@danqing ~]# vim /etc/chrony.conf 
..
..
#pool 2.rocky.pool.ntp.org iburst 加#号
pool ntp1.aliyun.com iburst 加
pool ntp1.tencent.com iburst 加
[root@danqing ~]# systemctl restart chronyd.service 
[root@danqing ~]# 
[root@danqing ~]# chronyc sources -v

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 120.25.115.20                 2   6    35    11   -888us[-1953us] +/- 7590us
^- 106.55.184.199                2   6    17    13  +1778us[ +714us] +/-   21ms
[root@danqing ~]# 
[root@danqing ~]# date "+%F %T"
2023-10-13 14:50:16
[root@danqing ~]# 

4、开启包转发功能和修改内核参数

[root@danqing ~]# modprobe br_netfilter
[root@danqing ~]# cat > /etc/sysctl.d/docker.conf <<EOF
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> net.ipv4.ip_forward = 1
> EOF
[root@danqing ~]# sysctl -p /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
[root@danqing ~]# 

备注,内核参数相关说明:
1)net.bridge.bridge-nf-call-ip6tables = 1:
该参数启用了桥接网络设备(bridge)在 IPv6 包进行 iptables 规则过滤时,通过 netfilter 模块将数据包传递给 iptables 处理。这个参数通常用于虚拟化环境,如 Docker 等,以支持 IPv6 流量的转发和安全过滤。如果不启用该参数,则在桥接设备上的 IPv6 流量无法进行 iptables 规则过滤。
2)net.bridge.bridge-nf-call-iptables = 1:
该参数启用了桥接网络设备(bridge)在 IPv4 包进行 iptables 规则过滤时,通过 netfilter 模块将数据包传递给 iptables 处理。这个参数通常用于虚拟化环境,如 Docker 等,以支持 IPv4 流量的转发和安全过滤。如果不启用该参数,则在桥接设备上的 IPv4 流量无法进行 iptables 规则过滤。
3)net.ipv4.ip_forward = 1:
该参数启用了 Linux 操作系统的 IP 转发功能,允许路由器将接收到的数据包转发到其他网络。这个参数通常用于构建网络拓扑,如在一个局域网内部部署多台主机并让它们可以访问外部互联网。如果不启用该参数,则 Linux 系统默认不会转发 IP 数据包。

1.2.2 开始安装docker

1、配置安装 docker-ce 需要的国内 yum 源(阿里云)

[root@danqing ~]# yum install yum-utils -y
Last metadata expiration check: 1 day, 22:49:42 ago on Wed 11 Oct 2023 04:09:12 PM CST.
...
...
Installed:
  yum-utils-4.0.21-19.el8_8.noarch                                                                                                                                                

Complete!
[root@danqing ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@danqing ~]# 

2、安装docker以及一些系统常用的基础包

[root@danqing ~]# 
[root@danqing ~]# yum install docker-ce wget net-tools nfs-utils gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo libaio-devel wget ncurses-devel autoconf automake zlib-devel epel-release openssh-server socat ipvsadm conntrack -y --allowerasing

包比较多,防止遗漏,可以运行两遍。

备注,yum install 安装软件包,加参数--allowerasing,可以替换掉冲突的软件包。

3、启动docker并且设置开机自启

[root@danqing ~]# 
[root@danqing ~]# systemctl start docker.service && systemctl enable docker.service 
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@danqing ~]# 

4、查看具体版本

[root@danqing ~]# docker version
Client: Docker Engine - Community
 Version:           24.0.6
 API version:       1.43
 Go version:        go1.20.7
 Git commit:        ed223bc
 Built:             Mon Sep  4 12:33:07 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.6
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.7
  Git commit:       1a79695
  Built:            Mon Sep  4 12:32:10 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.24
  GitCommit:        61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
 runc:
  Version:          1.1.9
  GitCommit:        v1.1.9-0-gccaecfc
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
[root@danqing ~]# 

主要看server,Server: Docker Engine - Community
Community表示咱们安装的是社区版,开源免费

1.2.3 配置docker镜像加速器

[root@danqing ~]# vim /etc/docker/daemon.json 
{
  "registry-mirrors":["https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","https://dockerhub.azk8s.cn"]
}
[root@danqing ~]# systemctl restart docker.service 
[root@danqing ~]# 


1.3 Docker 基本概念
镜像(Image):一个可运行的二进制文件,包含了运行应用程序所需的所有依赖项和配置信息。可以通过编写 Dockerfile 文件来创建镜像。
容器(Container):一个运行中的镜像实例,包含了应用程序和其依赖项。可以使用 Docker CLI 或 Docker Compose 来创建和管理容器。
仓库(Registry):一个存储和分发镜像的地方。Docker Hub 是 Docker 官方提供的仓库,可以在其中找到许多常用的镜像,也可以在其中上传和分享自己的镜像。
Docker 官方网站
Docker 官网:https://www.docker.com/
Docker 的 github 地址:https://github.com/moby/moby
Docker hub 官网:https://registry.hub.docker.com
Dockerhub 国内可能没法访问,替代网址:
https://hub-stage.docker.com/
Dockerhub:Dockerhub 是存放 docker 镜像的一个官方网站,dockerhub 上提供了很多常用的
镜像供用户下载,如 ubuntu、centos、debian 等操作系统镜像。通过 dockerhub 用户也可以存
自己的 docker 镜像,但是需要需要注册一个账号,在网站上创建一个 docker 仓库。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker容器双节点安装是指在两个节点上同时安装配置Docker容器运行环境,以实现容器的高可用和负载均衡。以下是Docker容器双节点安装的步骤: 1. 在两个节点上安装Docker:首先,在两个节点上安装Docker引擎。可以根据操作系统的不同,选择相应的安装方式,例如在Ubuntu上可以使用apt-get命令进行安装。 2. 配置Docker Swarm:Docker Swarm是Docker官方提供的容器编排和集群管理工具。在其中一个节点上初始化Swarm集群,并将另一个节点加入到集群中。可以使用以下命令初始化Swarm集群: ``` docker swarm init --advertise-addr <manager-node-ip> ``` 然后,在另一个节点上使用以下命令将其加入到Swarm集群中: ``` docker swarm join --token <token> <manager-node-ip>:<port> ``` 3. 配置Swarm服务:在Swarm集群中创建和管理服务。可以使用Docker Compose文件定义服务的配置和规模,并使用以下命令在Swarm集群中部署服务: ``` docker stack deploy -c <compose-file> <stack-name> ``` 4. 配置负载均衡:为了实现负载均衡,可以使用Docker Swarm内置的负载均衡功能或者结合其他负载均衡工具,如Nginx或HAProxy。通过配置服务的发布端口和访问策略,可以实现对容器的负载均衡。 5. 测试容器高可用:通过在Swarm集群中运行多个副本,可以测试容器的高可用性。当某个节点发生故障时,Swarm会自动将容器重新调度到其他健康的节点上,确保服务的持续可用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值