个人操作docker手册

Docker Tool中输入:

1.查看
docker images

2.进入ubuntu容器交互系统:
docker run -i -t ubuntu /bin/bash

6.查看容器的信息
docker ps -n 5

7.进入容器
docker start CONTAINER_ID #进入前需要先启动
docker attach CONTAINER_ID

8、终止容器
docker stop CONTAINER_ID #用来终止一个运行中的容器。
docker stop $(docker ps -a -q) #停止所有容器
9、启动容器
docker start CONTAINER_ID #启动ID 为CONTAINER_ID的容器

10、删除容器

docker rm CONTAINER_ID

对比,删除镜像:
docker rmi IMAGE_ID
docker rmi $(docker images | grep “none” | awk ‘{print $3}’) #批量删除 none镜像,执行前最好删掉被占用的容器

11、打包容器成新的镜像(pyinstaller打包:执行pyinstaller -F ${Python脚本名}完成文件转换exe)
docker commit CONTAINER_ID New_Image_Name

#linux系统打包python可执行文件,默认保存到/PycharmProjects/Weather /dist

kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather$
pyinstaller -F zhejiang_history_sq.py
kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather/dist$
sudo docker build --tag=zhejiang_history_sq . #注意最后这个点不要落下

kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather$
sudo docker run zhejiang_history_sq

12.制作python环境基础镜像

目录下包含 Dockerfile + reqirements 两个文件即可

kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather/base_image$
sudo docker build --tag=base_image_python . #注意最后这个点不要落下
kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather/base_image$
sudo docker run base_image_python . #注意最后这个点不要落下

13.制作/运行 爬取历史数据 镜像
目录下包含 Dockerfile + zhejiang_history_sq.py 两个文件即可

kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather$
sudo docker build --tag=zhejiang_history_sq
kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather$
sudo docker run zhejiang_history_sq

14.制作/运行 爬取实时数据 镜像

14.1 制作Dockerfile------------------------------------

生成当前工程下的依赖文件
D:\Pycharm Project\flask_web-master>pigar -p requirements.txt -P ./

Use an official Python runtime as a parent image

#最近一层基础镜像
FROM crawlbasic:v1

#容器中的工作目录
WORKDIR /zhejiang_realtime_yq
#在Pycharmproject目录下执行命令时,将./images/zhejiang_realtime_yq目录下的所有文件,拷贝到容器/zhejiang_realtime_yq目录下
COPY ./images/zhejiang_realtime_yq /zhejiang_realtime_yq

#在Pycharmproject目录下执行命令时,将./Weather目录下的所有文件,拷贝到容器/zhejiang_realtime_yq目录下
COPY ./Weather /zhejiang_realtime_yq

RUN crontab /zhejiang_realtime_yq/crontabfile \ #执行定时文件
&& cp /zhejiang_realtime_yq/crontabfile /etc/cron.d/
&& chmod u+x /etc/cron.d/
&& touch /var/log/zhejiang_realtime_yq.log #建立日志文件
CMD cron && tail -f /var/log/zhejiang_realtime_yq.log
#执行定时任务,显示日志


14.2 制作crontabfile

每小时执行一次

  • */1 * * * python /zhejiang_realtime_yq/zhejiang_realtime_yq.py >> /var/log/cron.log

14.3 制作镜像

kinvy@kinvy-virtual-machine:~/PycharmProjects$
sudo docker build -f ./images/zhejiang_realtime_yq/Dockerfile --tag=zhejiang_realtime_yq:v1 . #最后的点不能忘记

sudo docker build –f /home/jingwu.jia-g/pycharm/bot-learning/docker/gpu-train.Dockerfile --tag=soyoung:v1 .

14.3 运行容器/挂载容器到本地
kinvy@kinvy-virtual-machine:~/PycharmProjects$
sudo docker run -it -v /mnt/sda/download:/zhejiang_realtime_yq/download zhejiang_realtime_yq:v1
#本地文件目录 #容器文件目录 #需要使用的镜像名

对比软链接:
kinvy@kinvy-virtual-machine:~$ ln -s /mnt/sdb/Downloads /home/kinvy/Downloads

/home/kinvy/下的Downloads目录被剪切到/mnt/sdb/下之后,就可以使用软链接,不会占用系统磁盘(占用挂载磁盘)。

############################ docker 镜像本地的导出/导入 ###################
PS D:\工作\python2docker\basic_images> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 4e5021d210f6 5 days ago 64.2MB
PS D:\工作\python2docker\basic_images> docker save -o ubuntu.tar ubuntu:18.04 #导出
PS D:\工作\python2docker\basic_images> docker load -i ubuntu.tar #导入(docker import ubuntu.tar ubuntu:test #最好不用,容易报错)

PS D:\工作\python2docker\basic_images> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu test 244eeec2dde8 6 seconds ago 66.6MB
ubuntu 18.04 4e5021d210f6 5 days ago 64.2MB

######################### 拷贝本地文件到docker容器 #########################
步骤一:启动、进入容器
docker run -i -t python_requirements:latest /bin/bash
#容器内Python包的位置,查看Python包
ls /usr/local/lib/python3.6/dist-packages/

步骤二:查询容器ID
docker ps -a
docker inspect -f ‘{{.ID}}’ [容器NAMES]
得到一串编码—容器长ID

步骤三:本地文件拷贝
docker cp 本地路径 容器长ID:容器路径
sudo docker cp /home/kinvy/Documents/site_packages/keras 11119a5c0ae:/usr/local/lib/python3.6/dist-packages/

#拷贝本地目录下的所有文件到容器内的whole_control/目录下:
docker cp /root/Documents/flask_web-master20200522/. 494a4439ea9a5ca6f9aca3adadc8422327cfc5c1f721d0da6d3a23c9c70bfd7f:/whole_control/
kinvy@kinvy-virtual-machine:~/PycharmProjects$ sudo docker cp flask_web-master/. 2c4c73ee3c97a15494af37e68586dc628b76a0950139c2d32523f7bb90d9f521:/whole_control/

步骤四:容器生成新的镜像
docker commit [容器NAMES] [新的镜像名称]
例如:
sudo docker commit priceless_lehmann python_requirements:latest

步骤五:补充拷贝本地文件到docker容器:
1.以交互式的方式再次进入容器:
docker attach [容器ID]
样例:
docker attach b615301cf358
( 或者 docker exec -it 容器ID bin/bash docker exec -it b615301cf358 bin/bash )
以上两个语句的区别就是:attach 直接进入容器启动命令的终端,不会启动新的进程,exec 是在容器中打开新的终端,并且可以启动新的进程

步骤六:安全退出交互式界面:
Ctrl+P+Q

其他操作:

sudo docker build -f ./dockerfile_images/301-whole_control/Dockerfile --tag=whole_control:latest . #在/ dockerfile_images上一层目录下打镜像
sudo docker run -i -t -p 29000:29000 whole_control:latest /bin/bash #端口映射
参考文章:
https://www.cnblogs.com/dazhan/p/9371818.html
https://jingyan.baidu.com/article/09ea3ede52323fc0afde3956.html

#######修改docker 时区

【容器内操作】
root@2412d95364bd:/# ls /etc/localtime
/etc/localtime #表示该目录下没有任何东西

root@2412d95364bd:/# ls -l /etc/localtime
lrwxrwxrwx. 1 root root 33 Dec 18 11:32 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai #原来是软连接

【宿主机内操作】
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器长ID:/whole_control/ #先拷贝到容器内某目录下

【容器内操作】
cp /whole_control/Shanghai /usr/share/zoneinfo/Asia/ #将 Shanghai 文件 转存到 /usr/share/zoneinfo/Asia/

#没有 /usr/share/zoneinfo/Asia/ 路径时,需要手动mkdir 建立对应的目录

【容器内操作—UTC改为CST】
【容器内操作】
[root@851637b60b8a log]# ls -l /etc/localtime
lrwxrwxrwx 1 root root 25 11月 13 2020 /etc/localtime -> …/usr/share/zoneinfo/UTC

[root@851637b60b8a log]# date
2022年 02月 17日 星期四 06:14:48 UTC

【宿主机内操作】
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器长ID:/whole_control/ #先拷贝到容器内某目录下

【容器内操作】
[root@851637b60b8a log]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #强制覆盖
[root@851637b60b8a log]# date
2022年 02月 17日 星期四 14:18:25 CST

################################# docker容器内旧版本的python升级
[root@0adb80d18ec2 ~]# sh Miniconda3-py310_22.11.1-1-Linux-x86_64.sh

[root@0adb80d18ec2 ~]# conda install python==3.10

################################# 自定义python包加入Python搜索路径

[root@0adb80d18ec2 CAI]# python
Python 3.10.0 (default, Dec 21 2021, 13:36:04) [GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from distutils.sysconfig import get_python_lib
>>> print(get_python_lib())
/usr/local/conda/lib/python3.10/site-packages
>>> import sys
>>> sys.path
['', '/usr/local/conda/lib/python310.zip', '/usr/local/conda/lib/python3.10', '/usr/local/conda/lib/python3.10/lib-dynload', '/usr/local/conda/lib/python3.10/site-packages']
>>> exit();
[root@0adb80d18ec2 CAI]# find /usr/local/conda/lib/python3.10/site-packages | grep .pth
/usr/local/conda/lib/python3.10/site-packages/distutils-precedence.pth

[root@0adb80d18ec2 CAI]# pwd
/home/CAI
[root@0adb80d18ec2 CAI]# vi /usr/local/conda/lib/python3.10/site-packages/distutils-precedence.pth
			#### 将自定义python包写入文件
import os; var = 'SETUPTOOLS_USE_DISTUTILS'; enabled = os.environ.get(var, 'local') == 'local'; enabled and __import__('_distutils_hack').add_shim();
/home/CAI/langChain
/home/CAI/openAI

#################################加入docker群组
sudo gpasswd -a $USER docker

#################################容器内启动jupyter

root@a34d5f7317cd:~# ls -la
total 20
drwx------ 1 root root  145 Mar  9 09:17 .
drwxr-xr-x 1 root root   56 Mar  9 09:01 ..
-rw------- 1 root root  585 Dec 21 03:21 .bash_history
-rw-r--r-- 1 root root  570 Jan 31  2010 .bashrc
drwxr-xr-x 1 root root   48 Mar  9 09:17 .cache
drwxr-xr-x 4 root root   47 Dec 22 12:08 .config
drwxr-xr-x 1 root root   37 Dec 21 03:27 .ipython
drwx------ 1 root root   25 Mar  9 09:02 .jupyter

root@a34d5f7317cd:~# cd .jupyter/

root@a34d5f7317cd:~/.jupyter# ls
jupyter_lab_config.py  jupyter_lb.log  lab  migrated

root@a34d5f7317cd:~/.jupyter# nohup jupyter-lab --config=./jupyter_lab_config.py >> jupyter_jjw.log 2>&1 &

################################################ sh 启动容器

*MRPA_conf/gunicorn.conf

workers = 2
bind = '0.0.0.0:7010'

*MRPA_dockerfile

FROM mrpa_intent:v0.3

COPY ./MRPA_conf/gunicorn.conf /home/MRPA

WORKDIR /home/MRPA

CMD ["gunicorn","manager:app","-c","./gunicorn.conf"]

******MRPA_shell.sh

#!/bin/bash

docker run -v /root/jjw/MRPA_conf/conf:/home/MRPA/conf -v /root/jjw/MRPA_conf/gunicorn.conf:/home/MRPA/gunicorn.conf -p 7010:7010 mrpa_intent:v0.4

或者

#### 3.1、操作步骤:
代码更新后,先将代码放到mrpa_intent:v0.1的容器中,然后
docker commit -m "update intent_code" -a "jjw"  容器ID mrpa_intent:v0.2
docker commit -m "update intent_code" -a "jjw" c57ef05c1e05 mrpa_intent:v0.2

步骤一:制作自启服务镜像mrpa_intent:v0.X (mrpa_intent:v0.4不是自启动服务)

FROM mrpa_intent:v0.2

COPY ./MRPA_conf/gunicorn.conf /home/MRPA

WORKDIR /home/MRPA

CMD ["gunicorn","manager:app","-c","./gunicorn.conf"]


步骤二:docker build -f MRPA_dockerfile --tag=mrpa_intent:v0.X .


步骤三:利用shell脚本,直接启动服务
#!/bin/bash
docker run -itd -v /root/jjw/MRPA_intent/MRPA_conf/conf:/home/MRPA/conf -v /root/jjw/MRPA_intent/MRPA_conf/gunicorn.conf:/home/MRPA/gunicorn.conf -v /root/jjw/MRPA_intent/MRPA_conf/log:/home/MRPA/log  --restart=unless-stopped -p 7010:7010 mrpa_intent:v0.6

################################################ sh_gpu.sh 启动GPU容器

#!/bin/bash
docker run  -it --gpus all  -v /home/jiajingwu/service/shangqi/pre_train_model:/home/pre_train_model -v /home/jiajingwu/service/s    hangqi/gpt2_conf_gpu/conf:/home/shangqi_gpt2/conf -v /home/jiajingwu/service/shangqi/gpt2_conf_gpu/gunicorn.conf:/home/shangqi_gp    t2/gunicorn.conf -p 9804:9804 shangqi_gpt2_gpu:v0.1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值