启动docker
systemctl start docker #启动docker
systemctl enable docker #设置开机自启动docker
systemctl status docker #查看docker状态
步骤:
1、新建文件夹
mkdir docker_test
cd docker_test
2、创建Dockerfile文件,文件内容如下
FROM ubuntu:16.04
MAINTAINER LXY
ENV LANG C.UTF-8
#执行镜像中的provision.sh脚本
COPY provision.sh /home/
COPY python程序文件 /home/
RUN chmod a+x /home/provision.sh
RUN /home/provision.sh
#解决时区问题
RUN apt-get update -y && apt-get upgrade -y
# 安装,中国用户填写[Asia/Shanghai] ,表示亚洲/上海 ,东八区
RUN apt-get install -y tzdata && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3、创建provision.sh脚本,内容如下:
#!/bin/bash
set -e
apt-get update
#安装vim
#apt-get -y install vim
#解决vim中文乱码
#vim /etc/vim/vimrc
#set fileencodings=utf-8,gbk,utf-16le,cp1252,iso-8859-15,ucs-bom
#set termencoding=utf-8
#set encoding=utf-8
#
#安装sqlite3
apt-get install libsqlite3-dev
apt-get -y install gcc
#解决ssl No module named _ssl
apt-get install libssl-dev -y
#
apt-get install make
apt-get -y install zlib*
#安装wget
apt-get -y install wget
#下载python
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
#解压tgz
tar -xvzf Python-3.6.5.tgz
#
cd Python-3.6.5
./configure --with-ssl
make && make install
ln -sf /usr/local/bin/python3 /usr/bin/python
#解决opencv 报错
apt-get -y install libgl1-mesa-glx
apt-get install -y libglib2.0-dev
apt-get install -y libsm6 libxext6 libxrender-dev
#删除安装文件
#rm -R Python*
#升级pip
python3 -m pip install --upgrade pip
pip3 install -r requirements.txt -i https://pypi.douban.com/simple
#mysql
#cd /home
#wget https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb
#中文编码问题
#export LANG=C.UTF-8
#解决cv2 问题
#apt-get -y install libgl1-mesa-glx
#python -V
#升级pip
#python -m pip install --upgrade pip
3、创建镜像
docker build -t image_name .
# image_name 为创建的镜像名称,. 表示当前目录(docker_test)
# 执行该命令会自动按照Dockerfile文件中的内容生成镜像
4、创建run.sh脚本文件,用于后面创建docker容器后开启自动运行python程序
#!/bin/bash
#python.sh
cd /home/src
export LANG=C.UTF-8
nohup python3 filename.py >/home/out.log 2>&1 #后台运行并保存日志文件
5、创建容器并运行
docker run -it -d -p 11883:45055 --restart=always --name 容器名 镜像ID /bin/bash ./run.sh
#-d 后台运行 -p 指定端口映射 11883 主机端口 45055容器端口 --restart=always 容器开机自启动
# /bin/bash ./run.sh 容器启动时自动运行脚本
容器保存为镜像
docker commit 容器名称 镜像名称
镜像备份
docker save -o my_image.tar 镜像名称
镜像迁移与恢复
docker load -i my_image.tar
进入容器
docker exec -it 容器名称或id /bin/bash # 进入
exit # 退出
停止容器
docker stop 镜像名称或id
启动容器
docker start 容器名称或id
重启容器
docker restart 容器名称或id
删除容器
docker rm 容器名称或id
删除镜像
docker rmi 镜像名称或id
查看容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器,包括未删除的历史容器
查看镜像
docker images
拷贝本地文件到容器
docker cp 本地文件路径 容器id:路径 # 本地到容器
docker cp 容器id:文件路径 本地路径 # 容器到本地
解决python 缺少_bz2
链接:https://pan.baidu.com/s/1XWKQfJPhtrcTwG62LhQ82Q
提取码:fdxy
备注:
docker run -itd --rm --name python python:3.5-slim-stretch