最新安装银河麒麟V10服务器版在线安装最新版 Docker,麒麟V10(arm64/aarch64)离线安装docker,解决docker容器无法访问宿主机网络的问题.
环境
服务器版本:Kylin-Server-V10-SP3-General-Release-2212-X86_64
安装
# 配置阿里云 Centos8 镜像源,需要额外的一些依赖,而这些依赖在麒麟官方的源里面是没有的
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
sed -i 's/mirrors.cloud.aliyuncs.com/url_tmp/g' /etc/yum.repos.d/CentOS-Base.repo && sed -i 's/mirrors.aliyun.com/mirrors.cloud.aliyuncs.com/g' /etc/yum.repos.d/CentOS-Base.repo && sed -i 's/url_tmp/mirrors.aliyun.com/g' /etc/yum.repos.d/CentOS-Base.repo
yum clean all && yum makecache
# 配置阿里云 docker 镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# 修改 repo ,需要使用 centos 8的镜像源,若不修改无法使用。
echo "8" > /etc/yum/vars/centos_version
sed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/docker-ce.repo
sed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/CentOS-Base.repo
# 建立缓存
yum makecache
# 查看 Docker 版本
yum list docker-ce --showduplicates | sort -r
# 安装最新版
yum install docker-ce -y
# 注意,因为 centos8 的源维护不及时可能有些安装包没有及时更新,所以根据实际情况安装指定的版本
eg:
yum install docker-ce-cli-1:20.10.9-3.el8 -y
yum install docker-ce-20.10.9-3.el8
# 启动和设置开机启动
systemctl start docker
systemctl enable docker
修改 Docker 存储路径
# 创建保存 Docker 存储的路径
mkdir -p /data/docker
systemctl stop docker
cat >> /etc/docker/daemon.json << EOF
{
"data-root": "/data/docker"
}
EOF
cp -rf /var/lib/docker/* /data/docker/
systemctl start docker
docker info
麒麟V10(arm64/aarch64)离线安装docker
下载docker离线包
下载地址:https://download.docker.com/linux/static/stable/
选择系统架构对应的文件目录:aarch64
我目前使用的docker版本是:docker-24.0.7.tgz
安装docker
# 解压 docker 到当前目录
tar -xvf docker-24.0.7.tgz
# 将 docker 文件移动到 /usr/bin 目录下
cp -p docker/* /usr/bin
准备 docker.service系统配置文件
vi docker.service
docker.service文件内容:
docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
将 docker.service 移到 /etc/systemd/system/ 目录
cp docker.service /etc/systemd/system/
# 设置 docker.service 文件权限
chmod +x /etc/systemd/system/docker.service
启动docker
# 重新加载配置文件
systemctl daemon-reload
# 启动docker
systemctl start docker
# 设置 docker 开机自启
systemctl enable docker.service
验证安装是否成功
docker -v
国内加速
参考http://www.884358.com/docker-cmds/#guo_nei_jia_su
安装docker-compose
下载
下载地址:
https://github.com/docker/compose/releases
选择对应系统架构的离线安装包
安装
# 将 docker-compose 文件复制到 /usr/local/bin/ 目录下,并重命名为 docker-compose
cp docker-compose-linux-aarch64 /usr/local/bin/docker-compose
# 设置 docker-compose 文件权限
chmod +x /usr/local/bin/docker-compose
验证
docker-compose -v
解决docker容器无法访问宿主机网络的问题
无论重启多少次,都是不能通外网。用docker inspect来对比其他通的docker也看不出有什么不同。
后来就新建网桥,就可以了。不过奇怪的是,后来我班网桥改回原来的地址,也是可以的。
先关闭docker引擎
service docker stop
关闭docker0的网卡
ip link set dev docker0 down
删除docker0网桥
brctl delbr docker0
重建docker0网桥
brctl addbr docker0
设置IP段
ip addr add 172.17.42.2/24 dev docker0
启动docker0网桥
ip link set dev docker0 up
重启docker引擎
service docker start
这样就可以了!
或者参考官方的实现方式,host 映射:
https://docs.docker.com/desktop/features/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host