在docker中安装ubuntu系统

在docker中安装ubuntu系统

今天在用服务器搭建Vue项目时,由于Node.js版本的问题,一直没有办法运行成功,最后不小心更新到了node的最新版本,然后就出大问题了……

最新的node.js与我的系统不兼容!我的centos 7.6显然有点老旧…后来尝试了很多方法,比如用二进制文件来安装、用包管理器安装等,结果统统失败了(大哭),最后导致一个严重的后果,那就是每次ssh连接上主机之后,都会报一连串的错…头疼啊!
后来把所有的含有node以及npm的文件全删了,还是不顶用。不得已只能进控制台重装系统了。
这次装的是乌班图的22.04.2,很新的一个系统了:如图所示
2024-03-30T15:08:20.png
安装完所有系统并恢复网站的数据库之后,就开始着手Vue的部署工作了。
可是还是担心这样折腾把原来的主机给搞崩掉,就想着能不能在Ubuntu里面再套一层系统(俄罗斯套娃了属于是),然后在那里面折腾呢?
很显然!Docker,很适合这样的工作。
二话不说,赶紧安装起Docker。
1、首先更新一下系统:

 $ sudo apt update
 $ sudo apt upgrade
 $ sudo apt full-upgrade

2、添加 Docker 库
首先,安装必要的证书并允许 apt 包管理器使用以下命令通过 HTTPS 使用存储库:

$ sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

然后,运行下列命令添加 Docker 的官方 GPG 密钥:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

添加 Docker 官方库:

$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

使用命令更新 Ubuntu 源列表:

$ sudo apt update

3、安装 Docker
最后,运行下列命令在 Ubuntu 22.04 LTS 服务器中安装最新 Docker CE:

$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

当然你也可以安装其他版本 Docker 。运行下列命令检查可以安装的 Docker 版本:

$ apt-cache madison docker-ce

输出样例:

docker-ce | 5:20.10.17~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.16~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.15~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.14~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.13~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages

你可以挑选上面列表中的任何版本进行安装。例如,安装 5:20.10.16~ 3-0 ~ubuntu-jammy 这个版本,运行:

$ sudo apt install docker-ce=5:20.10.16~3-0~ubuntu-jammy docker-ce-cli=5:20.10.16~3-0~ubuntu-jammy containerd.io

安装完成后,运行如下命令验证 Docker 服务是否在运行:

$ systemctl status docker

当然,你也可以完全利用第三方工具来安装Docker,目前国内很多站长都是用宝塔面板来安装的,整体来说傻瓜式操作,真的挺方便的,可能只需要点击一下按钮就行了:
2024-03-30T16:31:22.png
好了,安装完Docker之后,就需要用Docker来安装一个镜像了,我这里安装的也还是Ubuntu系统,直接用命令行安装就行了。

1、拉取Ubuntu镜像并启动
我们的主要目的是创建一个Ubuntu系统,然后可以在任何地方远程ssh登陆它,这样就可以把docker出的这台Ubuntu当做服务器使用了。

# 查看Ubuntu有哪些镜像
docker search ubuntu

# 拉取Ubuntu镜像
docker pull ubuntu

# 查看拉取到的镜像
docker images

#查看更详细的Ubuntu信息
docker inspect ubuntu

#创建并启动Ubuntu容器
docker run --name ubuntu22.04 -it -p 2060:22 -v /home/jason:/home/jing ubuntu bash 

参数–name设置container容器的名称,我们设置成Ubuntu22.04,如果为空则随机生成。
参数-p指定端口号,2060是宿主机的端口号,22是container的端口号,相当于把容器的22端口号映射到宿主机的2060。
参数-v设置主机与container的共享目录: 主机绝对路径:container绝对路径,我们这里把宿主机的/home/jason目录,映射到container的/home/jing,你在容器里是可以查到这个目录的。
参数ubuntu对应的是镜像的名称。

2、给ubuntu22.04安装ssh
这里是容器里的操作,容器里开放22端口:

#升级安装包
apt update

#进行安装包的更新
apt upgrade

#安装ssh
apt install openssh-server

#可选项,为了连接别的ssh-server
apt install openssh-client

#安装vim
apt install vim

#将PermitRootLogin的值改为yes,/搜索即可,超级简单
vim /etc/ssh/sshd_config

#启动ssh服务
service ssh start

#修改root密码,输入passwd,然后输入修改的密码即可
passwd

#安装ufw开放22端口
apt install ufw

#开放22端口
ufw allow 22 

3、开放宿主机2060端口
这里是宿主机里操作,也就是安装docker的那台机器,宿主机开放520端口。
一般有宝塔面板的在宝塔面板里面可以直接操作:
2024-03-30T16:36:30.png
或者去你的服务商的安全组策略里面修改一下就行了,很简答的。
4、设置对应的端口
2024-03-30T16:38:11.png
我这里直接利用宝塔面板里面自带的进行设置,把宿主机的端口2060对应到Docker上的22端口,以后直接使用宿主机IP+开放端口2260就可以进行SSH连接了。
5、Docker里面的其他命令
很多时候SSH进入宿主机之后想再进去Docker的Ubuntu的话,直接在命令行里面输入”docker attch 你的容器名字”就行了,一般先用ps看看有没有在运行,比如我的Docker就运行一个Ubuntu,那我的结果如下:
2024-03-30T16:42:33.png
然后使用Docker+容器名进入容器里面的Ubuntu,结果如下:
2024-03-30T16:44:40.png
分享一下其他的命令:

#退出容器,在命令行输入exit
exit

#关闭容器, docker stop + 容器ID
docker stop ubuntu22.04

# 查询所有的容器,包括没有运行的
docker ps -a

#查看所有运行中的容器
docker ps

#开启容器docker start + 容器ID或者容器名
docker start ubuntu22.04

#进入容器 docker attach + 容器的ID或者容器的名称
docker attach ubuntu22.04

#删除容器docker rm -f + 容器名
docker rm -f ubuntu22.04 

好了,至此,以及完成了Docker里面的Ubuntu的所有设置了!可以愉快的玩耍了(bushi)。
最后,展示一下宿主机SSH连接结果以及docker里面的系统的SSH连接结果:
这是宿主机的:
2024-03-30T16:48:54.png
这是docker安装的Ubuntu的:
2024-03-30T16:50:11.png

2 Comments

  1. 特姆坡

    确实有用,但是现在docker已经被禁了,都是因为某个大聪明传了不该传的东西

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注