装完系统之后我通常会做什么之Linux

Tips: 本篇文章会根据自身使用习惯或系统更新不定时更新!!!

Linux 的发行版本有很多,有些发行版还分服务器版和带 GUI 的桌面版,如果你想在你的电脑上装一个 Linux,推荐你装带 GUI 的桌面版,比如:DeepinUbuntu Desktop 等。

当然,虚拟机也可以,大部分人第一次接触 Linux 也几乎是在虚拟机当中,现如今微软已经把 Linux 嵌入到自己的 Windows 当中,当作为子系统,一些 Linux 发行版也在 Windows 商店上架供大家下载。

总之,Linux 有很多版本供我们选择,如在云服务器上使用,个人比较喜欢用 Debian

Debian

安装完系统之后接下来做一些修改

1
2
3
4
5
6
7
8
9
10
11
12
# 修改密码
passwd

# 检查更新软件
apt update
apt-get update

# 安装 vim 编辑器(个人习惯)
apt-get install vim

# 编辑 SSH 配置文件,修改 SSH 端口:Port [port]
vim /etc/ssh/sshd_config

ufw

ufw(Uncomplicated FireWall) 一款防火墙软件,简化操作 iptables

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装
apt-get install ufw

# 开启
ufw enable

# 查看状态
ufw status

# 新增一条规则
ufw allow 80/tcp

# 删除一条规则
ufw delete allow 80/tcp
1
2
3
4
5
6
7
# 修改默认配置文件,默认不允许同时允许 IPV6,默认拒绝外部访问,默认允许内部转发
vim /etc/default/ufw

IPV6=no
DEFAULT_INPUT_POLICY="DROP"
DEFAULT_OUTPUT_POLICY="ACCEPT"
DEFAULT_FORWARD_POLICY="ACCEPT"

ufw&docker

这里有个安全问题,docker 默认是跳过防火墙暴露端口的

因此我们要修改 docker 的配置文件,让其不绕过防火墙

这里有个坑:现在 debian 和 Ubuntu 不能使用去修改 /etc/default/docker 配置文件来让其生效,原因 systemd 来启动 docker 时并不会读取 /etc/default/docker 文件。

正确解决方案:修改 /etc/docker/daemon.json 文件

1
2
3
{
"iptables": false
}

附上链接:https://github.com/moby/moby/issues/9889#issuecomment-270485482

Dockr

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

使用 docker 来部署,可以很好的保持本地和服务器环境一致,并且多版本部署,搭建集群等功能。

容器

下面是一张 Docker 容器的关系图,服务器上面跑的服务几乎全是运行在容器当中,这样有利于我很好的去管理应用程序以及管理基础架构,部署服务更加方便。

flowchart TB
    subgraph docker[Docker]
        subgraph network[Network]
            subgraph bridge[Network Bridge]
                net_nginx((nginx))
                net_other((other))
            end
        end
        subgraph container[Container]
            subgraph web[WebServer Container]
                subgraph nginx[Nginx]
                    service((service))
                    website((website))
                end
            end
            subgraph app[Application Container]
                app1(app1)
                app2(app2)
                app3(app3)
                app4(app4)
                app5(app5)
            end
            subgraph database[Database Container]
                mysql5.7[(MySQL5.7)]
                mysql8.0[(MySQL8.0)]
                redis[(Redis)]
                mongodb[(MongoDB)]
            end
        end
        nginx-- 反向代理 -->app
        app<-- bridge -->database
    end

Bridge Network

因为我只用 bridge network,所以只说一下这一种类型及简单操作。

网络模式

  • bridge:桥接 docker(默认,最常用)
  • none:不配置网络
  • host:和宿主机共享网络
  • container:容器网络连通(用的少,局限很大)

常用命令

1
2
3
4
5
6
7
8
# 查看网络信息
docker network ls

# 创建
docker network create

# 查看指定网络信息,你可以看到哪些容器是运行在这个网络上的
docker network inspect [network_name]

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!