Docker遇到的问题汇总(M1 Mac)

进行大数据开发,需要虚拟一个Hadoop集群,原来都是在Win下开发的,前段时间刚换成M1 pro的02021款的mbp,遇到很多很多问题,到最后也根本没有办法使用号称支持M1 Mac的Paralles以及VMWare Fusion,ARM架构的Linux也没有办法使用,最终无奈转投Docker。但Docker原来从来都没有用过,遇到很多问题,记录在下。

开发环境介绍:M1 Macbookpro(2021)+Docker+CentOS8

无法找到命令,安装的时候提示无法找到镜像(Cannot prepare internal mirrorlist: No URLs in mirrorlist)

问题:
在CentOS 8中,使用yum时出现错误,镜像列表中没有url,类似如下:
Error: Failed to download metadata for repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist

原因
在2022年1月31日,CentOS团队终于从官方镜像中移除CentOS 8的所有包。
CentOS 8已于2021年12月31日寿终正非,但软件包仍在官方镜像上保留了一段时间。现在他们被转移到https://vault.centos.org

解决方法

更换Centos7或者9

如果你仍然需要运行CentOS 8,你可以在/etc/yum.repos.d中更新一下源,可以使用阿里云的源来代替原本无法使用的源

#下载阿里源文件
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
#更新源里面的地址
sed -i -e "s|mirrors.cloud.aliyuncs.com|mirrors.aliyun.com|g " /etc/yum.repos.d/CentOS-*
sed -i -e "s|releasever|releasever-stream|g" /etc/yum.repos.d/CentOS-*
#清除、生成缓存
yum clean all
yum makecache

注意:这里如果使用wget可能提示找不到wget,Docker中自带的镜像没有此命令,请务必使用curl!

在执行完上述操作之后,就可以正常使用yum啦,这时候可以先更新一下yum,执行如下指令

#只升级所有包,不升级软件和系统内核, 建议使用这个指令
yum -y upgrade
#升级所有包同时也升级软件和系统内核,可能导致一些包失效
yum -y update

#然后就可以先安装一些常用的包
yum install wget
yum install vim
yum install net-tools#使用ifconfig指令

修改Docker虚拟机的hostname

只有在启动的时候才可以修改,使用如下命令指定

docker run --hostname {hostname} ...

Docker中container的启动与关闭

在Docker中,我们首先要pull一个相关镜像,例如Ubuntu等,作为imagine,随后我们就可以针对这个静态的imagine启动无数个container,这里的每一个container相当于是一个基于imagine操作系统的虚拟机。

#启动名为UbuntuTest的Container,并进入bash(即以管理员身份进入用户目录)
docker run -i -t --name ubuntuTest ubuntu bash
#暂时退出Container
exit
#再次进入Container(有两步,第一步是启动这个Container,第二步是进入命令行中)
docker start ubuntuTest
docker attach ubuntuTest
#另一种进入的方式
docker start -i ubuntuTest
#删除Container
docker container rm  -f 4cb #-f的含义是,删除正在运行中的container

从零开始到完全搭建好一个可用的Docker环境

docker --version #娱乐
docker pull ubuntu  # 获取 ubuntu 镜像
docker image ls  # 查看当前安装的Docker镜像
 
docker run -i -t --name ubuntuTest ubuntu bash  # 创建并运行一个ubuntu 容器,名字为ubuntuTest,并且在命令行运行
exit # 退出容器
 
docker ps  # 查看当前运行的容器
docker ps -a  # 列出所有容器信息,包括已经关闭的。
docker start -i ubuntuTest  # -i启动容器,可以进入终端交互。
 
apt-get update  # 更新软件源信息
apt-get install vim  # 安装 vim
apt-get install git python3  # 安装 git 和 python3
apt-get install -y openjdk-8-jdk #安装JDK
#修改环境变量
vim /.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 
export PATH=$JAVA_HOME/bin:$PATH

apt-get install openssh-server  # 安装 openssh-server,用于开启 ssh 服务供外部连接。
# 安装中途选择的 6-Asia   70-shanghai
 
vim /etc/ssh/sshd_config  # 更改 sshd 的默认配置 去掉下面3处的注释符#
34行,PermitRootLogin prohibit-password
39行,PubkeyAuthentication yes
42行,AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2
 
/etc/init.d/ssh restart  # 重启sshd
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
# 在本机mac终端,cat ~/.ssh/id_rsa.pub  如果没有该文件,终端输入ssh-keygen,连续回车enter,即生成该文件;
# 将本机id_rsa.pub的一行内容,vim复制到docker容器的 ~/.ssh/authorized_keys中
exit
 
# 以上完成了ubuntu的基本配置+ssh支持;  以下生成新的镜像版本
docker commit -m 'ssh&python&java' -a 'ppw' aa55b64d3e29 ubuntu-pjs
# -m,指定提交信息; -a,指定提交者; aa55b64d3e29是CONTAINER ID; ubuntu-pjs 是新镜像的名称
docker rm ubuntuTest #可以搞一波卸磨杀驴,但个人感觉没必要
 
docker run -d -p 22222:22 --name ubuntupro ubuntu-pjs /usr/sbin/sshd -D
# -d 后台运行; -p 绑定宿主机的22222端口到ubuntu容器的22端口; --name 给容器取名为ubuntuTest; 
# ubuntu-pjs 使用镜像ubuntu-pjs创建容器; /usr/sbin/sshd -D 指定容器启动使用的应用及参数;
ssh -p 22222 root@localhost  # 不输密码,直接进入容器ubuntuTest;
 
# 在本机 macOS,vim ~/.ssh/config,添加如下内容:
Host ubuntuTest
    HostName localhost
    User     root
    Port     22222
# 然后可以 ssh ubuntuTest 连接容器。

一些报错们以及解决方案

#时间不正确
benull@37c7dedb7a13:~# tzselect
/usr/bin/tzselect: line 180: /usr/share/zoneinfo/iso3166.tab: No such file or directory
/usr/bin/tzselect: time zone files are not set up correctly
#解决方案
apt-get install tzdata

#无法远程连接(使用Termius)
#首先,Docker的操作系统之中本来就没有密码,为了方便我们远程登录的需求,我们首先要给root账户设置一个密码,但是默认也是没有密码的,于是我们需要先下载一个passwd,下载安装完了之后,我们就可以使用passwd命令来设置一个当前账户的密码(Docker默认是root用户)
vi /etc/ssh/sshd_config

经过一番检查,发现/etc/ssh/sshd_config配置选项中”PremitRootLogin"中禁止了Root的登录权限
在这里插入图片描述
更改如下:PremitRootLogin yes
在这里插入图片描述
重启ssh服务,即可正常完成远程连接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值