docker安装centos8.4最新系统
https://www.bilibili.com/read/cv16484446
1、拉取centos镜像并启动
我们的主要目的是创建一个centos系统,然后可以在任何地方远程ssh登陆它,这样就可以把docker出的这台centos当做服务器使用了。
# 查看centos有哪些镜像
docker search centos
# 拉取centos镜像
docker pull centos
# 查看拉取到的镜像
docker images
#查看更详细的centos信息
docker inspect centos
#创建并启动centos容器
docker run -itd -p 2060:22 -v /home/jason:/home/centos --name centos8 --privileged centos /usr/sbin/init
#进入到docker容器控制台
docker exec -it centos8 /bin/bash
参数--name设置container容器的名称,我们设置成centos8,如果为空则随机生成。
参数-p指定端口号,2060是宿主机的端口号,22是container的端口号,相当于把容器的22端口号映射到宿主机的2060。
参数-v设置主机与container的共享目录: 主机绝对路径:container绝对路径,我们这里把宿主机的/home/jason目录,映射到container的/home/centos,你在容器里是可以查到这个目录的。
参数centos对应的是镜像的名称。
2、给centos安装ssh
这里是容器里的操作,容器里开放22端口:
#更新centos源
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
#生成缓存更新
yum makecache
#升级安装包
yum update -y
#进行安装包的更新
yum upgrade -y
#安装ssh
yum -y install openssh-server
#启动ssh服务
systemctl start sshd
#安装passwd
yum install passwd -y
#修改root密码,输入passwd,然后输入修改的密码即可
passwd
#安装firewalld
yum install firewalld -y
#启动firewalld
systemctl start firewalld
#firewalld开放22端口
firewall-cmd --permanent --add-port=22/tcp
#安装net-tools,可以查看端口状态
yum install net-tools
#查看端口状态
netstat -ntlp
3、开放宿主机2060端口
这里是宿主机里操作,也就是安装docker的那台机器,宿主机开放2060端口。
#安装ufw开放2060端口
apt install ufw
#开放2060端口
ufw allow 2060
#安装net-tools
apt install net-tools
#查看ip地址
ifconfig
4、局域网登陆centos8
容器的22端口映射到宿主机的2060端口,然后就可以根据宿主机的ip来进行登陆到容器里了。有人说为啥不用容器里的IP,这里说明一下,我们物理机器上只有一根网线,一根网线就只有一个IP。容器里的IP是VIP,也就是虚拟IP,它不能在局域网里进行访问。当然你可以在宿主机进行访问这个VIP。
在windows PowerShell或者类似的远程连接工具里,输入ssh命令进行访问。
ssh -p 2060 root@192.168.31.226
参数-p指定端口号为2060。
参数root指定使用root用户登录。
参数192.168.31.226这里是宿主机的IP,注意不是容器的。因为我们只有一根网线,一根网线只有一个IP地址,所以容器和宿主机公用同一个IP地址。
5、远程ssh登陆容器
想要远程登陆到容器,必须把家里的这台机器暴露到互联网中。访问路径是:互联网任何地方的网络→家庭宽带光猫→家庭路由器→家庭交换机(如果有的话)→局域网宿主机→容器。
首先家里的宽带必须桥接,必须申请公网IP,光猫的管理权交给路由器,路由器开放特定机器的特定端口号。通过小米路由器设置,把家里的docker宿主机的2060端口号暴露到互联网,暴露的端口号为2022。
我家的公网IP现在是58.246.143.76,可以通过百度IP进行查看,现在就可以通过这个IP进行登录到docker容器了。网络的流程为:公网IP58.246.143.76:2022→宿主机192.168.31.226→容器:22。现在就可以通过公网IP加端口号登陆到ubuntu容器了。
ssh -p 2022 root@58.246.143.76
当然这个运营商分配的公网IP是经常变化的,所以我进行了DDNS解析,也就不怕公网IP随时变化了,公共域名同样可以登录。
ssh -p 2022 root@nas.hepcloud.top
这个时候,我们是不是可以在家里虚拟出N多机器,供外面的人使用了?不要太开心的!
大功告成,enjoy it。
6、退出关闭容器
centos8是我们给运行中的这个容器起的名儿,所以都可以根据这个名称进行操作,当然也可以使用容器ID进行操作。
#退出容器,在命令行输入exit
exit
#关闭容器, docker stop + 容器ID
docker stop centos8
# 查询所有的容器,包括没有运行的
docker ps -a
#查看所有运行中的容器
docker ps
#开启容器docker start + 容器ID或者容器名
docker start centos8
#进入容器 docker attach + 容器的ID或者容器的名称
docker attach centos8
#删除容器docker rm -f + 容器名
docker rm -f centos8
说明
我们这里就相当于实现了ubuntu中套centos8,docker虚拟出的centos8可以当做一台机器使用,当然只要你的硬件资源够用,可以虚拟出无数多个centos8进行使用。而且可以通过公网IP或者域名进行访问,超级方便。
作者:勤奋的凯尔森同学 https://www.bilibili.com/read/cv16484446 出处:bilibili