之前我们安装好了软件,那么怎么用呢
目录
1、别乱改东西
没必要什么都换国内源,搞不好最后还要重启电脑重置网络,很麻烦
上三张图
网段也是默认,没关系。同一个局域网内的设备要访问可以暴露端口给他,后面会说
2、切换好版本
切换到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
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自己的重启相当于省掉了自己写开机自启这一块的脚本,但是还是需要写进程监视的脚本。