之前我们安装好了软件,那么怎么用呢

目录

1、别乱改东西

2、切换好版本

3、拉镜像

4、python文件在docker容器的使用

5、python文件的修改 

6、安装需要的包

7、打包

8、运行容器

注意事项


1、别乱改东西

没必要什么都换国内源,搞不好最后还要重启电脑重置网络,很麻烦

上三张图

docker能装linux wps docker能装pywin32吗_docker

 

docker能装linux wps docker能装pywin32吗_linux_02

docker能装linux wps docker能装pywin32吗_linux_03

 网段也是默认,没关系。同一个局域网内的设备要访问可以暴露端口给他,后面会说

2、切换好版本

docker能装linux wps docker能装pywin32吗_docker能装linux wps_04

 切换到linux的容器,我已经切换了,所以这里是windows,这个还是挺重要的哦。

3、拉镜像

我主要用python,所以拉一个python3.8的

下面的命令cmd输入就行了

docker run -itd python:3.8 bash

本地没有,他就会自己去拉,不用管,等结束了我们进去再装点东西

docker exec -it 容器id bash

这个可以进入容器内部,虽然docker desktop也可以进终端,但是用不习惯

更新apt,需要换源的话就换
apt-get update
apt-get upgrade
安装文件传输助手
apt-get install lrzsz -y
你不会不装vim吧
apt-get install vim -y
网络工具
apt-get install net-tools
修改时区,这个要哦,不然时区不是百京时间
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ctrl+d退出来

这里如果需要换源,那就得换了,不然下载太慢了

查看容器版本

cat /etc/os-release

我这边是

PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

"11 (bullseye)" 所以我的源要找这个

但我没换,网不错

然后重新保存一个镜像,或者先不保存,等会再报错

docker commit -m='说明,随便填' -a='作者名字' 容器id 新镜像名字:v1(版本号)

这个镜像就是我们的基础镜像了。后面有用。

4、python文件在docker容器的使用

我们先用镜像进入容器,这时候可以不用命令行了,因为咱们有docker desktop

docker能装linux wps docker能装pywin32吗_docker能装linux wps_05

LOGS------可以看到你程序的print的东西,方便你看程序运行情况

Teminal-----终端,这个不用我说了

Files------文件,可以在任意文件夹上右键,你会看到import,可以将外部的文件导入到容器内,而且在这个里面可以对文件进行编辑,非常好用。

我们可以把python的项目文件拉进来,但是先不拉,因为要先修改一下python的文件内容

5、python文件的修改 

其实说不上修改,就是有点不同

比如,我现在就想在我容器开启的时候,直接运行我的.py文件,那我得写个脚本,这样容器开启就调用,在python项目文件里写一个run.sh的脚本,就这样,要用绝对路径哦。而且,必须要在linux环境下写,在windows环境下的换行符号在docker里面无法识别,会报错。vim没有就vi吧,就是难用点。

#! /bin/sh
python /cty/test/main.py

 好,接下来针对代码内部有点变化

我要用socket传输数据,所以我开一个端口,让局域网内的其他设备连到我。

就是

局域网设备A--------我的电脑(宿主机)-------我的容器

启动方式和内部的程序可能会有一点修改,但我们现在还是不启动新的容器,还没完。

注意事项就是下面的

通过暴露端口的方式,让socket可以使用

当容器作为客户端的时候
地址输入同一个局域网下的设备的ip就ok
docker run -itd -p 35101:35101 镜像名字:版本 /bin/bash /cty/test/run.sh

当容器作为服务端的时候
地址自动获取容器ip
host_ip = socket.gethostbyname(socket.gethostname())
在远程设备上只要输入宿主机ip就可以了,容器和宿主机之间通过端口直接通信了

6、安装需要的包

把python 需要的requirement.txt inport 到容器内部,直接pip 安装,慢就清华源,这个就不用说了吧

7、打包

这时候,三方包安装完,脚本写完,该有的都有了。打包一个新的镜像

docker commit -m='说明,随便填' -a='作者名字' 容器id 新镜像名字:v1(版本号

好了,镜像可以覆盖打包,名字版本一样都行的。

8、运行容器

来,掉了就重启,--restart是容器的重启选项,需要的可以百度

5、启动的时候加上守护进程重启选项
这样除非是代码出错,如果是docker退出,他就可以重启。
docker run -itd -p 35101:35101 --name=socket --restart=always 镜像名称:v1 /bin/bash /cty/test/run.sh

注意事项

python进程的开启和监视需要自己重新写进程监视,docker desktop貌似做不到
也就是说,docker自己的重启相当于省掉了自己写开机自启这一块的脚本,但是还是需要写进程监视的脚本。