跳到主要内容

Docker部署

· 阅读需 7 分钟
Guangyu
learner

ssh处理

ssh-keygen -R 192.168.2.124
# 连接
ssh pi@192.168.2.124

解锁root用户

进入系统后,执行以下命令:

sudo passwd root
# 执行后会提示输入两次root用户密码,然后执行:
sudo passwd --unlock root
# 这样root用户解锁成功,使用su命令即可登录root用户

设置软件源

源获取: https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

sudo nano /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

# deb https://security.debian.org/debian-security bullseye-security main contrib non-free
# deb-src https://security.debian.org/debian-security bullseye-security main contrib non-free
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse

# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse

deb http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse

更新软件源

sudo apt-get update
sudo apt-get upgrade

服务端部署

1 安装Docker和docker-compose

1.1 安装Docker

docker官网 https://hub.docker.com/ 树莓派安装docker: https://docs.docker.com/engine/install/debian/ ubuntu安装docker: https://docs.docker.com/engine/install/ubuntu/

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world

1.2 解决docker使用sudo的问题

1.创建docker组:
sudo groupadd docker

2.将当前用户加入docker组:
sudo gpasswd -a ${USER} docker

3.重启服务:
sudo service docker restart

4.刷新docker成员:
newgrp - docker

2 编写Dockerfile

FROM python:3.11.1
ADD requirements.txt /opt/requirements.txt
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
RUN cd /opt \
&& python -m pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
EXPOSE 8888 2000 8003

2.1 构建镜像

# 构建镜像
sudo docker build -t image_name:tag .

# 修改镜像名
sudo docker tag a66 xr:1.0

3 编排docker-compose

version: "3.11.1"

services:
xr2:
image: xr2:1.2
build:
context: .
dockerfile: Dockerfile
volumes:
[../yellow_04/:/opt/yellow_04]
container_name: "xr2_container"
restart: always
networks:
mynetwork:
ipv4_address: 192.168.1.200
ports:
- "8888"
- "8003"
- "2000"
command:
["python", "/opt/yellow_04/manage.py"]

networks:
mynetwork:
ipam:
driver: default
config:
- subnet: 192.168.1.0/24

4 启动容器

docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
# 选项包括:
-f 指定compose模板文件名
-d 在系统守护进程的方式批量运行服务容器,可以设置开机自启

5 关闭与停止

# 停止运行并删除docker-compose.yml配置的容器、网络、卷。相当于 docker stop 与 docker rm的组合
sudo docker-compose down

6 导出镜像

# 导出
docker save 镜像id > 镜像的压缩文件

# 导入
docker load < /opt/s25-centos-vim.tar.gz
# 首次导入时,镜像tag标签丢失,重新赋予一个即可
docker tag 45d7f887125d new-centos-vim

7 参考

1、解压tar.xz
xz -d ***.tar.xz //先解压xz
tar -xvf ***.tar //再解压tar

2、压缩tar.xz
tar cvf xxx.tar xxx // 这样创建xxx.tar文件先,
xz -z xxx.tar //将 xxx.tar压缩成为 xxx.tar.xz

树莓派安装 https://blog.csdn.net/lx_nhs/article/details/124859914

ubuntu树莓派镜像 Ubuntu MATE | For a retrospective future

sudo raspi-config
弹出的界面选择 Interfacing Options
选择P3 VNC
点击 Yes 即可开启 VNC 服务
打开成功后会有提示 The VNC Server is enabled,按 OK

客户端部署

# 定义要检查的容器名称
container_name="xr_container"

# 检查容器是否已启动
container_status=$(docker inspect -f '{{.State.Status}}' "$container_name" 2>/dev/null)

# 循环检查容器状态,直到容器启动
while [ "$container_status" != "running" ]; do
echo "wating container start..."
sleep 1
container_status=$(docker inspect -f '{{.State.Status}}' "$container_name" 2>/dev/null)
done

echo "container is running"

cd ~/Desktop/yellow_04/ && ./xr.AppImage --no-sandbox
cd /etc/profile.d/
sudo nano run-xr.sh

"""
写入以下命令:
cd /home/pi/Desktop/yellow_04 && ./xr.AppImage --no-sandbox
"""

sudo reboot

python环境部署

1 下载python源码

https://www.python.org/downloads/ 拷贝到需要安装的主机上 解压

2 安装openssl

wget http://www.openssl.org/source/openssl-1.1.1j.tar.gz
tar -zxvf openssl-1.1.1j.tar.gz
cd openssl-1.1.1j

./config --prefix=/usr/local/openssl shared zlib
make && make install

3 安装python

cd Python-3.11.1  # 进入到源码中
./configure prefix=/usr/local/python311 # 配置信息,把Python存放在/usr/bin/python3.11目录下
make && make install # 编译安装python
rm -rf Python-3.11.1.tar.gz Python-3.11.1 # 移除附带的文件

4 环境配置

which python3 && rm -rf /usr/bin/python3  # 如果存在python3软链接,移除 
ln -s /usr/local/python39/bin/python3 /usr/bin/python3 # 创建python3软链接
which pip3 > /dev/null 2>&1 && rm -rf /usr/bin/pip # 把python2.7的pip移除,如果没有,则什么都不干
ln -s /usr/local/python39/bin/pip3 /usr/bin/pip # 创建pip软链接
echo "
export PYTHON_HOME=/usr/local/python39
export PATH=\${PYTHON_HOME}/bin:\${PATH}
" >> /etc/profile # 配置python环境变量
source /etc/profile # 刷新配置文件
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 换源,也可以使用https://pypi.douban.com/simple 等国内源

参考

https://www.cnblogs.com/liuzhongkun/p/16442888.html#%E4%BA%94-%E5%AE%89%E8%A3%85conda

文件发送

scp transfection.AppImage pi@192.168.2.124:~/Desktop/transfection.AppImage
scp yellow-04.zip pi@192.168.2.124:~/Desktop