在开始学习之前,默认你已经拥有了一个 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
  1. docker run命令详解

    • docker run:从仓库下载镜像并运行容器,可理解为从智能化养殖工厂 “购买宠物”(下载镜像)。在工作中,我们还会构建自己的私有化仓库,就像给宠物在家里盖房子。

    • -itd

      • -i:以交互模式运行,让容器可以和用户交流。

      • -t:虚拟出类似 Windows 中cmd的黑色窗口端口,用于交流。

      • -d:让容器在后台运行,像保姆一样,即便看不到它也会工作。

    • --name:给运行的系统取名字,运行后系统会生成一个标识符,类似身份证用于身份识别。

    • -p:端口映射,格式为宿主机端口:容器端口,如22:22。在生产环境中,宿主机端口通常需要改变。如果要安装数据库、nginx 等映射多个端口,可增加-p参数和对应的端口映射。

    • ubuntu:latestubuntu是镜像名称,latest是版本号,不指定版本号则默认下载最新版本。

2. docker exec命令详解:用于打开一个正在运行的容器,后面跟着的命令与前面介绍的类似,打开终端进行操作。可以跟容器名称(自己命名或系统给出的),也可以跟运行完第一个命令后系统自动生成的 ID 号(使用前面几个字符即可进入容器),/bin/bash是在容器里面运行的命令和路径,在 Linux、Unix 各种发行版本中有很多种bash,掌握了bash,其他的也大致相同

容器内操作

  1. 更新系统

收起

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 配置与用户管理

  1. 修改 SSH 配置允许密码登录

收起

bash

sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

  1. 设置 root 密码

收起

bash

passwd

按提示输入密码即可。
3. 启动 SSH 服务

收起

bash

service ssh start

  1. 设置开机启动 SSH(需要 systemd)

收起

bash

systemctl enable ssh

  1. 创建普通用户并加入 sudo 组

收起

bash

useradd -m -s /bin/bash shitou
usermod -aG sudo shitou

  • useradd:用于创建新用户。

  • -m:创建用户时,创建主目录,主目录通常位于/home目录下,名称与用户名相同。

  • -s /bin/bash:指定该用户的默认 shell 为/bin/bash

  • usermod -aG sudo shitouusermod用于修改用户属性,-aG-a表示追加,-G指定用户要加入的附加组,这里将用户shitou添加到sudo组,加入sudo组的用户可以使用sudo命令以超级用户权限执行命令。

  1. 设置用户密码

收起

bash

passwd shitou

运行此命令后,按提示输入新密码并确认,输入的密码不会显示在屏幕上以保证安全性。

其他命令与知识

  1. 后台运行与退出:在交互模式下,使用exit退出后,由于之前使用-d让容器在后台运行,所以容器进程仍在运行,不过是否停掉与 Docker 主程序有关。

  2. 数据卷映射

收起

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.

  1. 完整使用示例

收起

bash

# 启动容器
docker run -d --name ubuntu_server -p 2222:22 my_custom_ubuntu

# 从外部连接
ssh -p 2222 root@your_docker_host

这样就可以从其他地方连接到你创建的远程 Linux 系统了。