在开始学习之前,默认你已经拥有了一个 Docker 环境,无论是软路由、服务器还是 Windows 环境,你都可以自行安装。安装步骤可以参考网上丰富的教程,毕竟具备一定的自学能力和自控力是开启学习之旅的基础。
Linux 系统简介
Linux 系统自上个世纪七八十年代随着计算机网络发展而来,它离我们的生活很近,手机、电脑都离不开它。其核心概念是 “一切皆文件”,整个系统构成,无论是输入输出系统还是其他部分,均由文件组成,文件就如同生物中的细胞,可以类比初中生物课程中学习的细胞核、细胞壁等知识,便于理解和记忆。
Docker 环境准备
Docker 近期爆火,为教学、备课以及各行各业都带来了极大便利。我们可以利用 Docker 来学习 Linux。首先,我们需要从仓库下载镜像,在有 Docker 环境的基础上,执行以下命令:
docker run -itd --name my_ubuntu -p 22:22 ubuntu:latest
docker exec -it my_ubuntu /bin/bash
docker run
命令详解:docker run
:从仓库下载镜像并运行容器,可理解为从智能化养殖工厂 “购买宠物”(下载镜像)。在工作中,我们还会构建自己的私有化仓库,就像给宠物在家里盖房子。-itd
:-i
:以交互模式运行,让容器可以和用户交流。-t
:虚拟出类似 Windows 中cmd
的黑色窗口端口,用于交流。-d
:让容器在后台运行,像保姆一样,即便看不到它也会工作。
--name
:给运行的系统取名字,运行后系统会生成一个标识符,类似身份证用于身份识别。-p
:端口映射,格式为宿主机端口:容器端口
,如22:22
。在生产环境中,宿主机端口通常需要改变。如果要安装数据库、nginx 等映射多个端口,可增加-p
参数和对应的端口映射。ubuntu:latest
:ubuntu
是镜像名称,latest
是版本号,不指定版本号则默认下载最新版本。
2. docker exec
命令详解:用于打开一个正在运行的容器,后面跟着的命令与前面介绍的类似,打开终端进行操作。可以跟容器名称(自己命名或系统给出的),也可以跟运行完第一个命令后系统自动生成的 ID 号(使用前面几个字符即可进入容器),/bin/bash
是在容器里面运行的命令和路径,在 Linux、Unix 各种发行版本中有很多种bash
,掌握了bash
,其他的也大致相同
容器内操作
更新系统:
收起
bash
apt update && apt upgrade -y
这就像是长时间未与外界接触后了解当下时间和发生的事情一样,更新系统软件包信息并进行升级。
2. 安装软件包:
收起
bash
apt install -y \
sudo \
systemd \
openssh-server \
net-tools \
iproute2 \
vim \
curl \
wget \
gnupg2 \
software-properties-common
这些软件包的具体含义可以询问 AI 助手。
SSH 配置与用户管理
修改 SSH 配置允许密码登录:
收起
bash
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
设置 root 密码:
收起
bash
passwd
按提示输入密码即可。
3. 启动 SSH 服务:
收起
bash
service ssh start
设置开机启动 SSH(需要 systemd):
收起
bash
systemctl enable ssh
创建普通用户并加入 sudo 组:
收起
bash
useradd -m -s /bin/bash shitou
usermod -aG sudo shitou
useradd
:用于创建新用户。-m
:创建用户时,创建主目录,主目录通常位于/home
目录下,名称与用户名相同。-s /bin/bash
:指定该用户的默认 shell 为/bin/bash
。usermod -aG sudo shitou
:usermod
用于修改用户属性,-aG
中-a
表示追加,-G
指定用户要加入的附加组,这里将用户shitou
添加到sudo
组,加入sudo
组的用户可以使用sudo
命令以超级用户权限执行命令。
设置用户密码:
收起
bash
passwd shitou
运行此命令后,按提示输入新密码并确认,输入的密码不会显示在屏幕上以保证安全性。
其他命令与知识
后台运行与退出:在交互模式下,使用
exit
退出后,由于之前使用-d
让容器在后台运行,所以容器进程仍在运行,不过是否停掉与 Docker 主程序有关。数据卷映射:
收起
bash
docker run -itd -v /my/data:/data -p 22:22 ubuntu:latest
-v
是数据卷映射,就像照镜子一样,在宿主机/my/data
路径下的操作,会同步到容器内的/data
路径,两边的数据会相互保存。
3. 构建自定义镜像:
收起
Dockerfile
FROM ubuntu:latest
RUN apt update && apt install -y \
openssh-server \
sudo \
systemd \
net-tools
RUN echo 'root:your_password' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"] # 保持SSH前台运行
构建镜像命令:
收起
bash
docker build -t my_custom_ubuntu.
完整使用示例:
收起
bash
# 启动容器
docker run -d --name ubuntu_server -p 2222:22 my_custom_ubuntu
# 从外部连接
ssh -p 2222 root@your_docker_host
这样就可以从其他地方连接到你创建的远程 Linux 系统了。