前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第二章 Docker与命令行

第二章 Docker与命令行

原创
作者头像
喵喵侠
发布2022-01-23 05:22:32
1.3K0
发布2022-01-23 05:22:32
举报
文章被收录于专栏:喵喵学前端喵喵学前端

Docker与操作系统

Linux发行版

常见的有Ubuntu、Alpine、CentOS、Debian等。用下面的命令,可以下载Linux发行版镜像:

代码语言:javascript
复制
docker pull ubuntu
docker pull alpine
docker pull centos
docker pull debian

docker images 可以查看镜像的信息,可以通过信息来对比各个不同发行版的镜像大小。

由上图可见,占用空间最大的是231MB的centos,占用空间最小的是5.59MB的alpine。

容器交互模式

Linux发行版不带GUI,一般都会提供bash和sh,bash是shell的增强版。

进入Ubuntu命令行的两种方式:

  • docker run
  • docker exec

完整的命令是:

代码语言:javascript
复制
docker run -it --rm --name tke-ubuntu ubuntu

参数说明:

  • -i是交互模式运行容器
  • -t是分配伪终端
  • -rm是容器退出自动清理容器内部文件系统
  • -name是给容器起一个名字

可以通过光标前的命令行,来判断进入的是Docker容器终端伪终端,还是本地电脑的命令行终端。

在本地电脑的命令行窗口,输入docker ps 可以查看正常运行的容器信息。

在伪终端中,输入exit 回车后,可以退出Docker伪终端,容器也会一并删除。

用docker exec的方式,也可以创建一个终端,只不过需要有个前置操作,那就是先用之前的docker run来启动容器,把镜像跑起来,然后再再本地电脑新建一个终端,输入命令:

代码语言:javascript
复制
docker exec -it tke-ubuntu /bin/bash

这样就能成功新建一个正在运行中的容器终端了。

之前我理解错了,以为是在运行容器的交互模式下输入exec命令。

Linux文件结构

代码语言:javascript
复制
ls -a # 查看当前目录下所有文件和文件夹

Linux常用命令

基础命令

代码语言:javascript
复制
ls         #显示当前目录下非隐藏的文件和文件夹   
ls -a      #显示当前目录下所有文件和文件夹(含隐藏)
ls --help  #使用heLp来了解命令的更多flag及其含义
ls /bin    #显示当前目录下的bin文件夹里的所有文件和文件夹
cd bin     #进入到bin 文件夹
pwd        #显示当前终端所在的绝对路径
cd ..      #进入到当前目录的父目录
cd ./var   #进入var目录,这里的.表示的是当前目录   

文件夹操作

代码语言:javascript
复制
mkdir tke          #创建一个名称为tke的文件夹
mkdir tke/dir1     #在tke文件夹内创建一个名称为dir1的文件夹
mkdir tke2 tke3    #创建两个文件夹,名称分别为tke2、tke3
ls                 #显示是否创建了文件夹
ls tke             #显示tke文件夹里是否创建了dir1的文件夹
rmdir tke2 tke3    #删除文件夹,因为tke2、tke3是空文件,tke文件夹就删不掉了
rm -r tke          #删除文件夹

需要注意的是,rmdir是无法删除非空文件夹的。要想删除非空文件夹,需要用rm -r命令。

命令巧记:

  • mkdir是make directory的缩写,意思是创建目录
  • rmdir是remove directory的缩写,意思是删除目录

文件操作

代码语言:javascript
复制
touch test.txt         #创建一个空白的txt文件
cat test.txt           #查看txt文件的内容,发现是空白
cat > test.txt         #进入编辑模式,输入内容后,回车,然后按Ctrl+D保存并退出
touch hello            #创建一个空白文件,名称为hello
rm hello               #删除名称为hello文件
​

需要注意的是,cat > test.txt 这个命令,输入内容后一定要先回车,再按Ctrl+D,否则Ctrl+D会失效。另外每次cat > test.txt 都会清空上一次的内容,需要重新添加内容进去。

cat除了以上的基本用法,还有更复杂的用法:

代码语言:javascript
复制
touch test2.txt             #新建test2.txt
cat test.txt > test2.txt    #将text.txt的文本内容复制到test2.txt,
cat test2.txt               #查看test2.txt文件的文本内容
cat test.txt > test3.txt    #当不存在test3.txt时会创建这个文件
cat test.txt >> test3.txt   #将test.txt的内容追加到test3.txt文件的末尾
cat test.txt >> test3.txt 
cat test3.txt               #在test3.txt就可以看到test.txt里面重复的内容

>操作符是清空并复制,>>操作符是保留内容往后追加。

Linux基础信息

可执行文件

代码语言:javascript
复制
echo $PATH                   #了解环境变量设置的目录,Linux是用冒号:隔开
which ls                     #了解ls命令所在的路径
which pwd rmdir mkdir cp cd  #了解其他命令所在的路径
which docker                 #返回为空
ls /bin                      #查看有哪些可执行文件,主要放置系统必备执行和应用程序的执行文件
ls /sbin                     #查看有哪些可执行文件,主要放置系统管理和网络管理的执行文件

Windows是用分号隔开,命令是echo %PATH%

基础信息命令

代码语言:javascript
复制
uptime   #获取主机运行时间和查询linux系统负载等信息
top      #持续查看当前系统正在运行的进程状态,有点类似于windows的任务管理器,要退出查看窗口,可以按“Ctrl+C”
ps       #查看当前系统正在运行的进程,常使用 ps -ef 的组合
free     #用于显示内存状态
uname -a #了解操作系统的版本信息
whoami   #显示当前用户名称
env      #显示系统环境变量

输入date命令,会发现Linux时间跟我们所在的UTC+8时区的时间晚了8小时。

Linux应用程序管理

修改包镜像为腾讯云

使用cp命令,先备份一下sources.list文件,重命名为sources_bak.list

然后再用cat命令,覆写sources.list里面的内容:

代码语言:javascript
复制
# cat /etc/apt/sources.list     可以获取里面的内容,将文件进行备份,这里的原始内容网上也可以找到
cat > /etc/apt/sources.list     
# cat >> /etc/apt/sources.list   也可以使用cat >> 追加镜像资源

复制内容,粘贴到shell:

代码语言:javascript
复制
deb http://mirrors.cloud.tencent.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.cloud.tencent.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.cloud.tencent.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.cloud.tencent.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.cloud.tencent.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.cloud.tencent.com/ubuntu/ focal-updates main restricted universe multiverse

警告可以无视,选择【依然粘贴】。按下回车后,Ctrl+D,保存成功。

代码语言:javascript
复制
apt update   #更新软件包列表文件,保证下载的是最新的包,也可以使用apt-get update
apt --help      #了解apt包管理器还有哪些flag
apt list        #了解apt有哪些包

apt安装软件

代码语言:javascript
复制
apt install vim        #vim是Linux非常重要而通用的编辑器
apt install wget       #安装下载文件工具wget
apt install curl       #安装文件传输工具curl
apt install -y git     #安装git工具,
apt install -y unzip      #安装解压zip包的工具unzip

tips:安装的过程中会提示Do you want to continue? [Y/n],不想每次看到的话,在命令中输入-y的参数,就可以默认选择确认,跳过这一步直接安装。安装后的软件,可以通过ls ./bin查看对应的命令。

试试刚才安装过的工具:

代码语言:javascript
复制
cd /     #切换到跟目录
mkdir temp
cd temp
wget https://hackweek-1251009918.cos.ap-shanghai.myqcloud.com/tke/d/getting-started-master.zip
unzip getting-started-master.zip

需要注意的是,unzip的解压操作,默认是解压到当前文件夹,这样通常会扰乱原有的目录结构,就像下面这样,只能通过手动一个个删除解压出来的文件,重新解压到指定文件夹了。

想要解压到指定目录,并且创建一个文件夹,可以使用下面这个命令:

代码语言:javascript
复制
unzip -d /temp getting-started-master.zip

参考:unzip:unzip解压文件到指定目录 - 夜行过客 - 博客园

curl也可以下载文件,同时还可以重命名:

curl -o tke-start.zip https://hackweek-1251009918.cos.ap-shanghai.myqcloud.com/tke/d/getting-started-master.zip

也可以用来测试网站,返回的是html页面结构:

代码语言:javascript
复制
curl -L https://baidu.com

apt还可以安装编程语言的开发环境,如python、nodejs等。

代码语言:javascript
复制
apt install python3    #安装python的编译环境python3

进入python的交互模式后,可以用python语法执行语句,做一些运算。

注意一下,有时候输入快了,python3的命令后面多了一些字符,光标前是单个>。此时只需要再回车一次,就能进入>>>的python交互模式了。

总结

今天主要学习了Linux相关知识,了解了四种常见的发行版,主要学习了Ubuntu系统的命令,包括容器交互模式、查看目录、文件夹和文件操作,后面安装了一些常用的工具软件,对Linux系统的命令行操作更加熟练了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker与操作系统
    • Linux发行版
      • 容器交互模式
        • Linux文件结构
          • Linux常用命令
            • 基础命令
            • 文件夹操作
            • 文件操作
            • Linux基础信息
            • 可执行文件
            • 基础信息命令
          • Linux应用程序管理
            • 修改包镜像为腾讯云
            • apt安装软件
          • 总结
          相关产品与服务
          容器镜像服务
          容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档