学习笔记(2025寒假)
学习笔记(2025寒假)
前言:本笔记记录了我2025寒假所学的知识,包括 Linux,Git,Django 等内容。 ——2025.7.27
在 Windows 上安装 Linux(2025.1.28)
确认电脑是否开启cpu虚拟化(在任务管理器中查看)
打开两个功能:
- 适用于Windows的Linux子系统
- 虚拟机平台
cmd管理员模式运行命令:
wsl --install运行后效果如下:
以下是可安装的有效分发的列表。 请使用“wsl --install -d <分发>”安装。 NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS Ubuntu-22.04 Ubuntu 22.04 LTS Ubuntu-24.04 Ubuntu 24.04 LTS OracleLinux_7_9 Oracle Linux 7.9 OracleLinux_8_7 Oracle Linux 8.7 OracleLinux_9_1 Oracle Linux 9.1 openSUSE-Leap-15.6 openSUSE Leap 15.6 SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5 SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6 openSUSE-Tumbleweed openSUSE Tumbleweed查看已经安装的子系统:
wsl --list -v删除已经安装的子系统:
wsl --unregister [子系统名称]备份系统以及还原备份示例:
wsl --export Ubuntu ubuntu.tar wsl --import [还原备份的名字] [还原备份的路径] [.tar文件路径]
学习Linux之旅(2025.1.29)
一、常见文件命令
终止当前命令或程序
ctrl + c删除当前行
ctrl + u查看目录文件
朴素做法(默认查看当前文件夹) ls 更详细展示 ls -l "人性化"展示 ls -lh 查看某个文件或文件夹信息 ls [文件名或文件夹路径] -lh 显示隐藏文件 ls -a 补充说明 ll <==> ls -la显示当前目录
pwd切换当前路径
cd [路径] 注:如果不填路径的话,默认转到家目录 返回上一个待过的目录 cd -复制命令
将文件夹a中的temp.txt文件复制到b文件夹中: cp a/temp.txt b 将文件夹a中的temp.txt文件复制到b文件夹中并且重命名: cp a/temp.txt b/temp2.txt 将整个目录a(包括a本身)复制到b中 cp a b -r创建文件夹
朴素 mkdir [文件夹] 一次创建多个 mkdir [一个路径] -p删除文件
朴素 rm [文件1] [文件2] ... 支持正则表达式 rm *.txt rm a/* 删除文件夹 rm [文件夹] -r 删除被保护的文件 rm [文件] -f其他命令
显示曾经使用的命令 history 清空屏幕 clear "任务管理器" top 给文件添加可执行权限 chmod +x [文件]创建文件
touch [文件名]移动文件
mv [要移动的文件] [目标位置,可重命名]查看文件内容
cat [文件名]
tmux和vim(2025.1.29)
tmux笔记:
分级:session > window > pane
分屏
竖直平均分开 按 ctrl + b , 然后松开, 然后按 % 键 上下平均分开 按 ctrl + b , 然后松开, 然后按 " 键选择分屏
按 ctrl + b , 然后松开, 然后按方向键全屏以及取消某个分屏的全屏
按 ctrl + b , 然后松开, 然后按 z 键挂起当前session
按 ctrl + b , 然后松开, 然后按 d 键进入曾经挂起的session
在session外 tmux a -t [session编号] 在session内 按 ctrl + b , 然后松开, 然后按 s 键 然后 按左键或右键也有效果 自己尝试懒得写了在session中创建和选择window
创建 按 ctrl + b , 然后松开, 然后按 c 键 选择 按 ctrl + b , 然后松开, 然后按 w 键 然后 按左键或右键也有效果 自己尝试懒得写了进入翻页模式和退出
进入 按 ctrl + b , 然后松开, 然后按 PageUp 键 退出 按 q 键关闭分屏(pane)
ctrl + d设置配置文件
文件名: .tmux.conf 文件内容: set-option -g mouse onvim笔记:
模式:一般命令模式、插入模式、命令行模式(按:键进入)(字母区分大小写)
启动
vim [文件名]进入和退出插入模式
进入:按 i 键 退出:按esc键命令行模式的相关命令
取消行号: set nonu 显示行号: set nu 保存并退出 wq相关操作
光标的移动: 1. 光标左下上右: hjkl (需要在一般命令模式下, 一般下同) 2. 光标向右移动n个距离: n<Space> 3. 光标向下移动n个距离: n<Enter> 4. 将光标移动到行开头: 0 或者 home 键 5. 将光标移动至最后一行: G 6. 将光标移动到最前一行: gg 7. 光标移动到第n行: :n<Enter> 查找: 寻找光标之下第一个出现的单词: /[word]<Enter> 寻找光标之上第一个出现的单词: ?[word]<Enter> 重复前一个查找操作: n 反向重复前一个查找操作: N 替换: :开始行,结束行s/要替换的原字符串/替换成的字符串/g 示例: 将第一行到第6行之间的所有int替换为double :1,6s/int/double/g 特殊的,将全文替换只需要令开始行为 1 ,结束行为 $ 即可 将 /g 改为 /gc 可以添加每次替换的询问 插入: :起始行号,结束行号s/^/行首要插入的内容/g 如果是添加//注释(命令中的“/”符号用"#"替换即可),如下: :起始行号,结束行号s#^#//#g 选中文本: v 删除选中文本: d 删除(剪切)当前行: dd 复制选中文本: y 复制当前行: yy 将复制的数据在光标的下一个位置粘贴: p 撤销: u 取消撤销: ctrl + r 将选中文本整体左右移动: shift + < shift + > 保存: :w 强制保存: :w! 退出: :q 强制退出: :q! 保存并退出: :wq 设置粘贴模式,取消代码自动缩进: :set paste 与上相反: :set nopaste 将全文代码格式化: gg=G 当vim卡死时,取消当前正在执行的命令: ctrl + q 在光标所在行下方新插入一行: ovim的配置文件设置
配置文件路径: /etc/vim/vimrc 也可在 ~ 目录下创建 .vimrc 文件 可添加下面几个常用配置 set nu set autoindent set cindent set shiftwidth=4 set mouse=a set tabstop=4 设置括号引号自动补全 (这段配置中,inoremap 是插入模式下的映射命令,它将一个键映射到另一个键上。例如,当你在插入模式下输入 { 时,Vim 会自动插入 {} 并且通过 <CR>(回车)和 <ESC>O 将光标移动到花括号内部的新行上) inoremap ' ''<ESC>i inoremap " ""<ESC>i inoremap ( ()<ESC>i inoremap [ []<ESC>i inoremap { {<CR>}<ESC>O
Shell语法(2025.1.30)
语言类的东西自己多练就好了。
Shell 教程 | 菜鸟教程
SSH与SCP的学习(2025.2.1)
一、ssh
远程登录服务器:
ssh user_name@hostname 默认使用端口 22 自己指定端口: ssh user_name@hostname -p 端口号免密登录:
没记,到时候再查把哈哈哈由于暂时用不到,毕竟我没有租服务器,所以基本没记课上内容。课上还讲了scp,config文件配置(配置服务器别名)等,要用时候搜索引擎一搜就好了哈哈哈哈。
现在用得上了!(2025.2.9)
配置密钥免密登录:
生成密钥:
ssh-keygen 生成的密钥会在 ~/.ssh 下将公钥复制到远程服务器
ssh-copy-id user@remote_hostuser:远程服务器上的用户名。
remote_host:远程服务器的IP地址或域名。
此命令会提示您输入远程服务器用户的密码,并将公钥自动复制到远程服务器的~/.ssh/authorized_keys文件中。
配置别名:
在本地计算机上打开 SSH 客户端配置文件。对于大多数 Linux 系统,该文件通常位于 ~/.ssh/config。
在打开的配置文件中,按以下格式添加要设置的别名和相关信息:
Host alias_name Hostname target_host User username Port port_number IdentityFile path_to_private_key例子:
Host myserver Hostname 192.168.1.100 User root Port 22 IdentityFile ~/.ssh/id_rsa现在,可以通过使用 SSH 别名来连接目标主机了。只需在终端中输入以下命令:
ssh myserver
二、scp(2025.2.9)
scp [选项] [源文件] [目标路径]
[选项]:用于指定 scp 命令的行为,例如递归复制、保留文件属性等。
[源文件]:要复制的文件或目录的路径。
[目标路径]:文件或目录要复制到的目标路径。
常用的 scp 命令选项:
-r:递归复制整个目录。
-P:指定远程主机的 SSH 端口号(默认是 22)。
例子:
从本地复制文件到远程主机
scp example.txt user@remote_host:/home/user/
从远程主机复制文件到本地
scp user@remote_host:/home/user/example.txt .有关git的笔记(2025.2.2)
记录下今天发生了什么吧。看y总的git课,y总说学git就不能像学shell或者vim等那样了,需要系统学习,要像学kmp一样。然后我就想到自己kmp学了都忘光了,所以打开代码复习一下,结果上瘾了,又去刷了几道算法题。后来终于打开git的课,但是家里来客人了,所以得下去招呼一下,于是又没学。下午准备来学,然后去看唐人街探案了。晚上,算了,明天吧。
今天过去了,就再也不会回来了。虽然是平凡的一天,过去了也没什么怀念的,以后的日子也很快就会忘记这样平凡的一天,但是它确实发生过,是真实存在的。这个世界很奇妙,它为什么是这样的呢?千百年后它会变成什么样子呢?生而为人,明知道必有一死,但每天都在忙着,每天都过着相似的生活,每天都在追求自己想得到的东西。千万年后,或者更久,人类将不复存在,这一切存在的意义只不过是人赋予的。但我们之所以存在,不就是因为我们有思想吗。我能思考,所以我存在过。 ——2025.2.2 22:22(太巧了吧,我很2?)
y总讲的我听得有点糊涂,改听黑马程序员了(2025.2.3)
一、Git 配置
Git 提供了一个叫做 git config 的命令,用来配置或读取相应的工作环境变量。
这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。
这些变量可以存放在以下三个不同的地方:
/etc/gitconfig文件:系统中对所有用户都普遍适用的配置。若使用git config时用--system选项,读写的就是这个文件。~/.gitconfig文件:用户目录下的配置文件只适用于该用户。若使用git config时用--global选项,读写的就是这个文件。- 当前项目的 Git 目录中的配置文件(也就是工作目录中的
.git/config文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以.git/config里的配置会覆盖/etc/gitconfig中的同名变量。
二、用户信息
配置个人的用户名称和电子邮件地址,这是为了在每次提交代码时记录提交者的信息:
git config --global user.name "姓名"
git config --global user.email test@qq.com如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。
三、查看配置信息
要检查已有的配置信息,可以使用 git config --list 命令:
$ git config --list有时候会看到重复的变量名,那就说明它们来自不同的配置文件(比如 /etc/gitconfig 和 ~/.gitconfig),不过最终 Git 实际采用的是最后一个。
四、验证安装
在终端或命令行中运行以下命令,确保 Git 已正确安装并配置:
git --version
git config --list五、Git 创建仓库
git init
Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。
在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。
使用方法
进入你想要创建仓库的目录,或者先创建一个新的目录:
mkdir my-project
cd my-project使用当前目录作为 Git 仓库,我们只需使它初始化。
git init初始化后,会在 my-project 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:
$ git add *.c
$ git add README
$ git commit -m '初始化项目版本(注释内容)'
// git add . 表示将所有文件放入暂存区以上命令将目录下以 .c 结尾及 README 文件提交到仓库中。
注: 在 Linux 系统中,commit 信息使用单引号 ',Windows 系统,commit 信息使用双引号 "。
所以在 git bash 中 git commit -m '提交说明' 这样是可以的,在 Windows 命令行中就要使用双引号 git commit -m "提交说明"。
六、几个 Git 常用命令
git status
git status 是一个用于查看 Git 仓库当前状态的命令。
git status 命令可以查看在你上次提交之后是否有对文件进行再次修改。
通常我们使用 -s 参数来获得简短的输出结果
git log
在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看。
git log 命令用于查看 Git 仓库中提交历史记录。
git log 显示了从最新提交到最早提交的所有提交信息,包括提交的哈希值、作者、提交日期和提交消息等。
git log 命令的基本语法:
git log [选项] [分支名/提交哈希] // 加强 git reflog:查看历史操作记录,找回丢失的提交。常用的选项包括:
-p:显示提交的补丁(具体更改内容)。--oneline:以简洁的一行格式显示提交信息。--graph:以图形化方式显示分支和合并历史。--decorate:显示分支和标签指向的提交。--author=<作者>:只显示特定作者的提交。--since=<时间>:只显示指定时间之后的提交。--until=<时间>:只显示指定时间之前的提交。--grep=<模式>:只显示包含指定模式的提交消息。--no-merges:不显示合并提交。--stat:显示简略统计信息,包括修改的文件和行数。--abbrev-commit:使用短提交哈希值。--pretty=<格式>:使用自定义的提交信息显示格式。
git reset
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
git reset 命令语法格式如下:
git reset [--soft | --mixed | --hard] [HEAD]--mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
git reset [HEAD]实例:
$ git reset HEAD^ # 回退所有内容到上一个版本 $ git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一个版本 $ git reset 052e # 回退到指定版本--soft 参数用于回退到某个版本:
git reset --soft HEAD实例:
$ git reset --soft HEAD~3 # 回退上上上一个版本--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:
git reset --hard HEAD实例:
$ git reset --hard HEAD~3 # 回退上上上一个版本 $ git reset –hard bae128 # 回退到某个版本回退点之前的所有信息。 $ git reset --hard origin/master # 将本地的状态回退到和远程的一样**注意:**谨慎使用 –-hard 参数,它会删除回退点之前的所有信息。
HEAD 说明:
- HEAD 表示当前版本
- HEAD^ 上一个版本
- HEAD^^ 上上一个版本
- 以此类推...
可以使用 ~数字表示
- HEAD~0 表示当前版本
- HEAD~1 上一个版本
- HEAD^2 上上一个版本
- HEAD^3 上上上一个版本
- 以此类推...
git diff
git diff 命令比较文件的不同,即比较文件在暂存区和工作区的差异。
git diff 命令显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别。
git diff 有两个主要的应用场景。
- 尚未缓存的改动:git diff
- 查看已缓存的改动: git diff --cached
- 查看已缓存的与未缓存的所有改动:git diff HEAD
- 显示摘要而非整个 diff:git diff --stat
显示暂存区和工作区的差异:
$ git diff [file]显示暂存区和上一次提交(commit)的差异:
$ git diff --cached [file] 或 $ git diff --staged [file]显示两次提交之间的差异:
$ git diff [first-branch]...[second-branch]git blame
git blame 命令用于逐行显示指定文件的每一行代码是由谁在什么时候引入或修改的。
git blame 可以追踪文件中每一行的变更历史,包括作者、提交哈希、提交日期和提交消息等信息。
如果要查看指定文件的修改记录可以使用 git blame 命令,格式如下:
git blame <文件路径>添加文件至忽略列表
在工作区中创建 .gitignore 文件,让git忽略某些文件,文件里就写需要忽略得文件名,可使用正则表达式。有关分支
7.1、查看分支
git branch7.2、创建分支
git branch [branch name]7.3、切换分支
git checkout [branch name]7.4、创建(如果没有)并切换分支
git checkout -b [branch name]7.5、合并分支
git merge [分支名]7.6、删除分支
git branch -d [分支名] 会做检查 git branch -D [分支名] 强制删除Git 远程仓库
8.1、配置公私钥对
8.1.1、生成SSH公钥
ssh-keygen -t rsa,然后不断回车,如果公钥已经存在,则会覆盖。 8.1.2、查看公钥
cat ~/.ssh/id_rsa.pub 8.1.3、在代码托管平台配置
8.1.4、验证是否配置成功
ssh -T git@gitee.com(以码云为例)8.2、本地仓库push到远程仓库
git remote add origin git@gitee.com:yang-bisheng-wins/git_test.git 说明: origin:给远程仓库取的名字,一般叫origin origin后面的:远程仓库地址,在代码托管平台中复制 查看远程仓库: git remote8.3、本地代码同步到远程仓库
简单示例: git push origin master 详细命令: git push [-f] [--set-upstream] [远端名称[本地分支名][:远端分支名]] 不想写解释了,到时候忘了直接AI吧哈哈哈8.4、查看本地分支与远端分支的关联关系
git branch -vv8.5、clone仓库
git clone <仓库地址> [本地目录]8.6、抓取和拉取
抓取命令: git fetch [remote name] [branch name] 抓取指令就是将仓库里的更新都抓取到本地,但不会进行合并 如果不指定远端名称和分支名,则抓取所有分支 拉取命令: git pull [remote name] [branch name] 拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge 如果不指定远端名称和分支名,则抓取所有并更新当前分支补充
将暂存区中的文件恢复到工作区,实际上是将文件从暂存区移除(不提交):
git restore --staged file.txt恢复工作区中的文件到最近的提交状态(即丢弃对文件的所有未提交更改):
git restore file.txt
七、想说的:
内容太多,不用的话很快就会忘光,但是我记录了笔记,到时候复习肯定比从零学更快,所以还是有用的。学过总比从来没学好,坚信自己的努力都是有用的,而不是徒劳的。学了有两天,苦心人,天不负,一分耕耘一分收获。 ——2025.2.4
thrift学习笔记 RPC(Remote Procedure Call Protocol)(2025.2.4)
直接上官方文档吧哈哈哈哈:Apache Thrift - Index of tutorial/
听了一下,有点复杂,先遛为妙!待我实力大增,再来横扫千军!!! ——2025.2.4
Linux进阶——管道、环境变量与常用命令(2025.2.6)
不好做笔记,直接写吧,可能有些乱,重要的是自己理解,这样的话忘了再看也看得懂自己写的什么
// 查找当前目录所有py文件
find . -name '*.py'
// 查看当前目录所有py文件的内容
find . -name '*.py' | xargs cat
// 输出当前目录所有py文件的内容的行数和
find . -name '*.py' | xargs cat | wc -l
// 查看是否有叫 xxx 的进程
ps aux | grep xxx
// 查看cpu信息
cat /proc/cpuinfo
// 列出当前环境下的所有环境变量
env #显示当前的用户变量
set #显示当前shell的变量,包括当前用户的变量
export #显示当前导出成用户变量的shell变量
// 常用环境变量
LD_LIBRARY_PATH #用于指定动态链接库(.so文件)的路经
C_INCLUDE_PATH #C语言头文件路径
CPLUS_INCLUDE_PATH #C++头文件路径
PYTHONPATH #python导入包路径
JAVA_HOME #jdk安装目录
CLASSPATH #存放java导入类的路径常用命令
系统状况
1.top #Linux任务管理器
打开后输入M:按使用内存排序
打开后输入P:按使用cpu排序
2.df -h #查看硬盘使用情况
3.free -h #查看内存使用情况
4.du -sh #查看当前目录占用的硬盘空间
5.ps aux #查看所有进程
6.kill -9 pid
7.netstat -nt #查看所有网络连接
8.w #列出当前登录的用户
文件权限相关
chmod +x file
chmod -x file
文件检索
1.find [dir] -name
2.grep xxx #从stdin读入数据,若其中包含"xxx",则输出,并将xxx标红
3.wc
wc -l 统计行数
wc -w 统计单词数
wc -c 统计字节数
4.tree [dir] [-a 显示隐藏文件]
5.ag xxx 搜索当前目录下的所有文件,检索xxx
用户相关
1.history 展示调用命令的历史纪录,内容存放在 ~/.bash_history
2.adduser name #创建新用户
3.usermod -aG sudo 用户名 #用于在 Linux 系统中将用户添加到 sudo 组,从而授予该用户执行超级用户(root)权限命令的能力。
-aG的解释:
-a 表示“追加”,确保用户被添加到指定组的同时,不会从其他组中移除。
-G 指定要将用户添加到的组。
工具
1.md5sum 计算md5哈希值,从stdin读入
2.time command 计算某个命令执行时间
3.watch -n 0.1 command 每0.1秒执行一次command命令
4.tar 压缩文件
将 tmp 文件夹压缩: tar -zcvf tmp.tar.gz tmp/*
解压: tar -zxvf tmp.tar.gz
5.diff xxx yyy 查找文件xxx和yyy文件的不同
安装软件
1.sudo command
2.apt-get install xxx
3.pip install xxx --user --upgradeLinux基础课里还有一个docker和租服务器的教程,但是白嫖的资源里面没有,很可惜,这个得自己去其他地方学了。
Docker学习(2025.2.10)
一、Ubuntu安装docker
在安装 Docker Engine 之前,您需要卸载任何冲突的软件包。您的 Linux 发行版可能提供非官方的 Docker 软件包,这可能与 Docker 提供的官方软件包冲突。在安装 Docker Engine 正式版之前,您必须先卸载这些软件包。
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done使用
apt存储库安装(方案一)在新主机上首次安装 Docker Engine 之前,您需要设置 Docker apt 存储库。之后,您可以从存储库安装和更新 Docker。
设置 Docker 的
apt存储库# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update安装 Docker 软件包。
要安装最新版本,请运行:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin通过运行
hello-world映像来验证安装是否成功:sudo docker version sudo docker run hello-world此命令将下载测试映像并在容器中运行它。当容器运行时,它会打印确认消息并退出。
现在,您已成功安装并启动 Docker Engine。
其他方案
Install using the convenience script 使用便捷脚本安装
其他方案就直接放官方文档了,不展开说明。
二、Docker的使用
常用命令
注:后面加上--help查看帮助 # 启动docker sudo systemctl start docker # 查看当前正在运行的实例 sudo docker ps #设置开机自启动 systemctl enable docker # --------------------有关镜像-------------------- # 检索 docker search # 下载 docker pull # 列表 docker images # 删除 docker rmi <img_name> [-f] # 镜像的保存 # 提交 docker commit [-m 注释信息] <容器名字> [镜像名字[:TAG]] # 保存 docker save [-o file_name.tar(写成文件)] <镜像名字> # 加载 docker load -i file.tar # --------------------有关容器-------------------- # 运行(镜像创建容器) docker run [-d] [--name nickname] [-p 88:80] [-v dir1:dir2] <img_name> -d # 设置为后台启动 --name <给容器取的名字> # 设置容器名字 -p 88:80 # 端口映射,格式为 外部端口:容器端口 -v dir1:dir2 # 目录挂载,格式为 外部路径:容器路径 以外部路径为准创建 -v ngconf:/etc/nginx # 卷映射,ngconf统一目录为/var/lib/docker/volumes/<volumes-name> 创建卷: docker volume create <volume-name> 查看卷: docker volume ls 查看卷详情: docker volume inspect <volume-name> -e xxx # 环境变量,暂时不记那么多,用不上 # 查看 docker ps [-a] # 停止 docker stop # 启动(启动已有的容器) docker start # 重启 docker restart # 状态 docker stats # 日志 docker logs # 进入 docker exec [-it (以交互模式进入)] <容器名字> /bin/bash # 进入且直接交互 docker attach <容器名> # 挂起容器 先按 ctrl + p 再按 ctrl + q # 删除 docker rm #-------------------------------------------------- # 有关分享镜像(暂时没用,所以不记了) # 自定义网络(暂时没用,所以不记了) #docker compose(暂时没用,所以不记了)Dockerfile(感觉有用) —— 官方教程
一个Dockerfile文件例子(运行一个jar包):
# 指定镜像基础环境 FROM openjdk:17 # 自定义标签 LABEL author=name # 复制文件到镜像 COPY app.jar /app.jar # 指定暴露端口 EXPOSE 8080 # 容器固定启动命令 ENTRYPOINT ["java", "-jar", "/app.jar"]构建:
docker build -f Dockerfile -t <img_name> .
Dockerfile实例:创建一个用于开发django的镜像(我制作的第一个镜像)
2025.2.12更新:镜像变为中文,名字改为ubuntu-dev(原来是django-ssh-tmux-vim)
Dockerfile
# 使用 Ubuntu 的最新镜像作为基础镜像 FROM ubuntu:22.04 # 设置环境变量,避免交互提示 ENV DEBIAN_FRONTEND=noninteractive # 更新包列表并安装必要的软件包 RUN apt-get update && apt-get install -y \ openssh-server \ vim \ locales \ language-pack-zh-hans \ tmux \ python3 \ python3-pip \ python3-venv \ libpq-dev \ git \ curl \ --no-install-recommends && \ # 清理 apt 缓存以减小镜像大小 rm -rf /var/lib/apt/lists/* # 使用 pip3 安装 Django 框架 RUN pip3 install django # 生成中文区域设置 RUN locale-gen zh_CN.UTF-8 && update-locale LANG=zh_CN.UTF-8 # 设置环境变量以使用中文区域设置 ENV LANG=zh_CN.UTF-8 ENV LANGUAGE=zh_CN.UTF-8 ENV LC_ALL=zh_CN.UTF-8 # 配置 SSH 服务 # 创建 SSHD 需要的目录结构 RUN mkdir /var/run/sshd # 修改 SSH 配置文件以允许 root 用户登录 RUN echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config # 修改 SSH 配置文件以启用密码认证 RUN echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config # 配置 tmux 支持鼠标 RUN echo "set -g mouse on" >> /root/.tmux.conf # 配置 vim RUN echo "set nu" >> /etc/vim/vimrc RUN echo "set autoindent" >> /etc/vim/vimrc RUN echo "set cindent" >> /etc/vim/vimrc RUN echo "set shiftwidth=4" >> /etc/vim/vimrc RUN echo "set mouse=a" >> /etc/vim/vimrc RUN echo "set tabstop=4" >> /etc/vim/vimrc RUN echo "inoremap ' ''<ESC>i" >> /etc/vim/vimrc RUN echo "inoremap \" \"\"<ESC>i" >> /etc/vim/vimrc RUN echo "inoremap ( ()<ESC>i" >> /etc/vim/vimrc RUN echo "inoremap [ []<ESC>i" >> /etc/vim/vimrc RUN echo "inoremap { {}<ESC>i" >> /etc/vim/vimrc # 设置容器启动时执行的命令为启动 SSH 服务,并以守护进程模式运行 CMD ["/usr/sbin/sshd", "-D"]构建命令:
sudo docker build -t ubuntu-dev .创建容器
sudo docker run -d -p 20000:22 -p 8000:8000 --name django_env ubuntu-dev进入容器并设置密码:
# 进入 sudo docker exec -it django_env bash # 设置密码(便于ssh远程连接) passwd root
Django常见命令(2025.2.11)
创建项目
django-admin startproject <webapp_name>启动项目
python3 manage.py runserver 0.0.0.0:8000创建app
python3 manage.py startapp <app_name>同步数据库
python3 manage.py migrate登入管理员
http://47.83.199.143:8000/admin创建管理员账号
python3 manage.py createsuperuser将自己创建的数据表应用到数据库里
python3 manage.py makemigrations python3 manage.py migrate
django课需要有前端知识(不然听了一头雾水),计划先学习学习前端再继续学习。(2025.2.14)