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🐋
- 安装
curl -fsSL https://get.docker.com -o install-docker.sh
sudo sh install-docker.sh
- 使用
这里以 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
- 构建自己的镜像
这里以运行一个 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❄
未完待续…