我的云主机折腾笔记

经过一个星期的折腾,总算搞定了服务端的环境搭建。趁着记忆犹新,这里做一些朴实无华并且枯燥的记录。

本文阅读对象:不了解Linux操作系统的小白

在这篇文章中,你可以了解到:linux操作系统入门,通过SSH密钥远程登陆,Docker环境搭建。

开启从零开始的运维之路~

Linux简介

Linux是啥?

一种计算机操作系统。

唔,简单来说就是这样。但它是一个CLI(command-line interface,命令行界面)组成的操作系统,在图形化的操作界面如windows得到普及之前,最广泛使用的用户界面就是这样的。

Linux的作者叫 Linus,瞧,优秀的连名字都是类似的:p

这个操作系统基于GPL 2.0开源协议,简单来说你可以自由使用它的源码和发行版,也可以修改它的源代码,但是不能闭源——是的,作者坚持开源的理念。

Linux目前有很多发行版,有Dibian,Redhat,CentOS,Ubuntu…等等,其社区非常繁荣。如果Linus申请专利保护,一定能收获难以想象的财富…事实上,他的开源价值观传播到了全世界,越来越多的人们开始为开源做出贡献,才有了今天这样繁荣的开源生态。

Linus大神还有另一个开源作品git,它是一种分布式版本控制系统…扯远了,咱还是说Linux吧…

其实,无论图形界面发展到什么水平,命令行方式的操作永远是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作都离不开命令行。虽然linux也有桌面系统,但是X-window也只是运行在命令行模式下的一个应用程序。

Linux初体验

我的云主机是阿里云的,操作系统是Ubuntu 18.04.2 LTS 64位的。本文写的不是很好但依然是用心的,接下来的演示也是经过本人深入实践的~

linux的指令大致可以分为三类:

  • 文档型(文档和目录的增删改查)

  • 硬件型(磁盘/进程/服务/网络)

  • 功能型(压缩/解压/下载/远程)

我们先从远程登陆开始,然后边走边看尝试熟悉linux环境,最后集中总结一下这三种常用指令

在本地使用ssh建立和远端主机的会话

1
ssh root@[ipAddress] -p 22

ipAddress是服务器的公网ip,-p参数是为ssh远程连接开放的端口,默认为22,可以不用加。

接下来你需要输入密码,这里的密码是隐文,输入时不会从终端中得到任何反馈,输入完成敲击回车你就可以登陆远端。

此时如果一切顺利的话你应该已经成功登陆了,我们可以先查看一下操作系统和内核信息

1
2
lsb_release -a   #查看操作系统
uname -a #查看内核信息

查看磁盘信息

1
2
df          #显示磁盘的区块信息和使用情况(kB)
df -TH #显示磁盘的情况(GB)

查看根目录的内容
将当前路径切换到根目录下,查看文件列表

1
2
cd /        #切换目录
ls -la #以列表的方式显示当前目录结构,包含隐藏文件

接下来你会看到这样的列表:

最前面的drwxr-xr-xr表示了用户目录的操作权,依次是root用户权限,组权限,其他用户权限。
d表示这是一个目录(directory)而不是文件
r表示具有读权限(read)
w表示具有写权限(write)
x表示具有执行权限(execute)

目录的简单说明
home:个人目录,可以放一些软件或存放download文件
etc:一般是一些软件的配置文件
sys:系统文件
usr:系统可执行文件
var:日志文件,因不断变化命名,包含经常存放的www目录

查看CPU/内存/进程

1
top

这里的表会动态刷新,Tasks是当前运行的进程数量,Mem表示内存占用量,可以按“m”键切换百分比显示

接下来我们可以修改一下主机的用户名

1
vi /etc/hostname       #使用vi命令编辑这个文件

这样会进入查看模式,此时按下a或者i进入编辑模式,修改里面的内容即修改你的用户名。完成编辑后按下esc,输入:wq保存并退出编辑。
重启服务器,就可以看到主机名更新啦

1
reboot      #这样做会断开ssh连接

修改ssh端口

ssh端口默认为22,修改常用端口后可以提高服务器的安全性,降低遭受攻击的风险;按照下面的步骤操作

  1. 编辑SSH配置文件
    SSH配置文件路径为:/etc/ssh/sshd_config

    1
    vi /etc/ssh/sshd_config
  2. 修改端口号
    找到port: 22,取消#注释,修改为ssh连接想用的端口号,如

    1
    port 10022

然后esc,输入 :wq保存,退出编辑

  1. 放行ssh端口
    1
    ufw allow 10022

某些云服务商需要在云端手动放行端口,在云服务控制台可以找到,手动添加规则即可。

  1. 重启远端SSH服务

    1
    service ssh restart
  2. 尝试重连

    1
    ssh root@[ipAddress] -p 10022

使用密钥登陆

配置密钥后,就可以免密码建立ssh连接了,而且更加安全

  1. 生成SSHkey(本地)
    1
    cd ~/.ssh && ls -la   #检查用户目录是否存在公钥对;

若没有id_rsa.pub,使用下面的命令生成公钥对

1
ssh keygen

接下来的会话会询问要将密钥保存在哪里、想要设置的口令等,可以连续敲击回车使用默认设置。

如果设置了私钥口令,则每次建立ssh连接都需要输入口令,然后才会去验证私钥

这个命令会在本地生成两个密钥文件,其中id_rsa.pub是公钥文件,id_rsa是私钥文件。私钥万万不可泄漏给他人

  1. 在远端修改SSH配置
    1
    cd ~/.ssh && ls -al     #查看是否存在authorized_keys

如果home下没有.ssh目录,使用下面的命令来创建.ssh目录

1
mkdir -p ~/.ssh

~/home目录的一个alias,即别名;类似于/指代根目录

将在本地生成的公钥文件id_rsa.pub所有内容复制到该文件中保存:

1
vi authorized_keys
  1. 在本地添加SSH配置
    1
    cd ~/.ssh && touch config       #进入该目录,新建config文件

使用命令创建文件的目的主要是不希望其带有任何文件扩展名,接下来你可以使用你喜欢的编辑器打开这个文件进行下面的编辑。

1
2
3
4
5
6
Host cocoonut
Port 10022
HostName 192.**.**.1
user root
IdentityFile ~/.ssh/id_rsa
Identitiesonly yes

字段说明:

1
2
3
4
5
6
Host:远端主机用户名
Port SSH端口号
HostName 远端ip地址
User 用户类型
IdentityFile 本地私钥路径
IdentitiesOnly 私钥是否唯一

多个ssh信息都可以写在这个文件中。

接下来,使用ssh [远端主机用户名]就可以直接建立SSH会话啦!

Docker入门

容器化应用Docker

时下最火的虚拟化技术就是Docker了。在容器技术之前,业界的网红是虚拟机。而虚拟机技术的代表,是VMWareOpenStack。之所以容器技术会火,是因为它小,轻,快。

Docker的主要特性

特性 说明
文件系统隔离 每个进程容器运行在完全独立的根文件系统里。
资源隔离 可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。
网络隔离 每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。
写时复制 采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。
日志记录 Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理 容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
交互式Shell Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。
资源划分 Docker采用的是资源共享型的管理方案,所有的Docker使用的硬件资源由docker daemon进行管理与分配。

Docker技术的三大核心概念

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

Docker环境搭建

安装

Ubuntu 18.04 LTS为例,最省心的安装方式是使用存储库安装。

其他操作系统请移步这里。

  1. 更新apt软件包索引并安装软件包,以允许apt通过HTTPS使用存储库:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 更新
    $ sudo apt-get update

    # 安装
    $ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  2. 添加Docker的官方GPG密钥:

    1
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

通过搜索指纹的后8个字符,验证现在是否拥有带有指纹的密钥:

1
2
3
4
5
6
7
$ sudo apt-key fingerprint 0EBFCD88

# 示例
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
  1. 设置稳定的存储库。

    1
    2
    3
    4
    5
    # 以amd64处理器架构为例,其他类型的架构需要修改`arch=`后的参数
    $ sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
  2. 安装Docker引擎

    1
    2
    3
    4
    5
    # 更新apt程序包索引
    $ sudo apt-get update

    # 安装最新版本的Docker Engine和容器(也可以安装指定版本)
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io
  3. 尝试运行Hello world镜像,验证是否已经正确安装

    1
    2
    # 首次执行时,这个命令会自动拉取hello-world镜像,然后运行
    $ sudo docker run hello-world

Docker Compose

参考资料

分享到:

评论完整模式加载中...如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理