nohup、screen、docker、kubernetes,应该就这些了吧

直接运行💖

  • nohup:在与终端断开连接时系统会发出 hangup 信号,让终端内程序停止运行,而nohup(no-hangup)能让提交的命令忽略 hangup 信号
nohup app > app.log 2>&1 &
# 2>&1的作用是将标准错误2重定向到标准输出&1
# 可以用tail -f app.log 实时查看日志
  • screen:创建一个父进程不是 sshd、能持续存在的终端环境,避免连接断开进程就退出,还可以随时返回接管继续操作
screen -S <name> # 创建一个名称为<name>的会话
screen -ls # 查看正在运行的会话
screen -r <name> # 附加到正在运行的会话
Ctrl+A D # 分离当前会话

Docker🐋

  1. 安装
curl -fsSL https://get.docker.com -o install-docker.sh
sudo sh install-docker.sh
  1. 使用

这里以 PostgreSQL 为例简单介绍

#拉取Postgres镜像
docker pull postgres
#启动Postgres
docker run --name mypostgres \
        -e POSTGRES_PASSWORD='password' \
        -e ALLOW_IP_RANGE=0.0.0.0/0 \
        -v /home/postgres/data:/var/lib/postgresql \
        -p 5432:5432 -d  \
        postgres
#--name设置名称 -e设置环境变量 -v映射文件 -p设置开放的端口 -d后台运行

#下面是其他常用命令
#启动一个容器
docker start mypostgres
#停止一个容器
docker stop mypostgres
#删除一个容器
docker rm mypostgres
#从容器中复制一个文件
#docker cp 容器名:容器中的文件 宿主机目录
docker cp nginx:/etc/nginx/nginx.conf /usr/local/docker/nginx/conf
#查看正在运行的容器
docker ps
  1. 构建自己的镜像

这里以运行一个 Golang 后端为例简单介绍:

  • 添加Dockerfile文件
FROM golang:1.17.2-alpine AS build
COPY ./src /src
WORKDIR /src
ENV "GOPROXY" "https://goproxy.io,direct"
RUN go build -o /build/app

FROM alpine:latest
COPY --from=build /build/app /bin/app
RUN mkdir /env
WORKDIR /env
ENTRYPOINT [ "/bin/app" ]
  • 开始构建
docker build -t="myimage" .

Docker Compose💧

Docker Compose 可以用来定义和运行复杂的容器,管理多个容器和程序的配置

下面是一个简单的docker-compose.yml配置文件的例子:

version: '3'
services:
    app:
        container_name: mygoweb
        image: goweb
        environment:
        - ProjectPath=/app/project
        - GO111MODULE=on
        - GOPROXY=https://goproxy.cn
        volumes:
          - ./src:/app/project
          - ./pkg:/app/pkg
          - ./log:/app/log
        ports:
          - "1234:1234"
        depends_on:
          - redis
    redis:
            container_name: goweb_redis
        image: "redis:alpine"
        expose:
          - "6379"
        ports:
          - "6379:6379"

启动!

docker-compose up -d
# 查看正在运行的项目
docker-compose ps

Kubernetes

未完待续…