docker
1 安装
- ubuntu 20.04 安装、参考二
- 避免每次输入 sudo
1
2
3
4
5
6sudo groupadd docker
sudo usermod -aG docker $USER
# 激活新修改
newgrp docker
# 提示没权限的话重启
docker version - compose 安装,这里下载的 github 地址要去 GitHub 看一下来改
1.1 windows-wsl2
- wsl –update 用 wsl2
- 在 resource - proxies 设置代理
- 按 Configure WSL 2 Data Location 修改文件路径到其它盘
- wsl 其它 distro 也可以这样改路径
- 相关命令
1
2
3
4
5
6
7
8
9
10
11# 装 kali
wsl --list --online
wsl --install -d kali-linux
wsl -s kali-linux
# 修改路径
wsl --export kali-linux kali-linux.tar
wsl --export docker-desktop-data docker-desktop-data.tar
wsl --unregister docker-desktop-data
wsl --unregister kali-linux
wsl --import kali-linux E:\wsl\kali kali-linux.tar --version 2
wsl --import docker-desktop-data E:\wsl\docker-data docker-desktop-data.tar --version 2 - 设置
appendWindowsPath = false
,需要wsl --shutdown
2 镜像
拉取镜像,替换源速度没有提升,建议 设置代理,只设置前 http 和 https 两处就可以了
1
2
3
4docker pull cdrx/pyinstaller-linux
# 使用
docker pull ubuntu@sha256:4b114761663a63948fcd36ef36315b31370c52e59546cf32fee60a8fb16aeddf
docker pull --platform linux/arm64 alpine:latest保存和加载镜像
1
2docker save -o <path for generated tar file> <image name>
docker load -i <path to image tar file>
3 容器
- 生成容器
1
2
3
4
5# 指定容器名字方便操作
# -v 是绑定,docker run 见 https://docs.docker.com/engine/reference/commandline/run/
docker run --rm -it --name table_bot -v /home/zack/code/table_bot:/src/ cdrx/pyinstaller-linux /bin/bash
# 改成豆瓣源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple - 列出容器
1
2# -s 占用大小,-a 所有,包括停止的容器
docker ps -a -s - 运行命令
1
2
3docker start table_bot
# -d: Detached mode: run command in the background
docker exec -d table_bot bash -c '/root/.pyenv/shims/pyinstaller -F bot.py && cp dist/b .' - 进入 docker
1
2
3docker start table_bot -i
# 如果已启动
docker exec -it <mycontainer> /bin/sh - 修改端口映射
4 API
1 | # 用 curl 和 jq 测试 |
- 对于想通过 nginx 的 path 来区分不同应用的,可以这样配置,参考
1
2
3
4
5
6
7
8
9
10
11location /app1/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:3000/;
}
location /app1 {
return 301 /app1/;
}