docker 部署隔离其他环境

一、问题

生产测试有很多人同时用,virtualenv 等虚拟环境也是很多人用的,但是docker 可以隔离操作系统,快速获得不同的python版本环境

二、理论

镜像:就是静态的

容器:就是镜像的实例化,码农同学可以类比于对象

三、常用的docker命令

# 查看当前docker版本
docker -v
 
# 查看当前本地所有镜像
docker images
 
# 列出容器。 -a:所有容器包含没有运行的
docker ps 
 
# 查看当前运行下的镜像进程
docker ps -a
 
# 构造镜像,用法docker build -t 镜像名称 .
docker build -t docker_demo .
 
# 启动已被停止的容器【xx -> CONTAINER ID】
docker start xx
# 关闭已被启动的容器 
docker stop xx
# 重新启动容器
docker restart xx
 
# 杀掉一个运行中的容器
docker kill -s KILL xx
 
# 【 注:如果删除镜像,顺序:停止镜像里的容器,再删除容器,最后再删除镜像 】
# 删除一个或多少容器。-f :通过SIGKILL信号强制删除一个运行中的容器-l :移除容器间的网络连接,而非容器本身-v :-v 删除与容器关联的卷
docker rm -f xx、xx2
# 删除镜像
docker rmi xx
 
# 创建一个新的容器并运行,-d为后台执行,-p 9000:3000前面为主机端口,后面是容器端口。docker_demo镜像名
docker run -d -p 9000:3000 docker_demo
 
# 在运行的容器中执行命令。6576abc容器id
sudo docker exec -it 6576abc /bin/bash 
 
# 获取容器获取容器的日志 6576abc容器id,-t:显示时间戳
docker logs -f -t 6576abc
 
# 登陆镜像仓库
docker login
 
# 获取镜像
docker pull 
# 上传镜像
docker push
# 查看指定镜像的创建历史。
docker history docker_demo
 
# 进入容器
docker exec -t 6576abc /bin/bash
 
# 从宿主机拷文件到容器里面
docker cp /home/zhengqing/test.sql mysql_server:/tmp   # mysql_server:容器名  前:宿主机文件路径 后:容器路径
 
# 从容器里面拷文件到宿主机
docker cp 容器名:/tmp/test.sql /home  前:容器路径  后:宿主机路径

下面对该条命令进行剖析

(1)端口映射  -p 8888:8888
将docker中的jupyter的8888接口与本机的8888接口关联

(2)挂载   -v `pwd`/workspace:/opt/workspace
将当前路径下(由`pwd`)的workspaace文件夹映射到docker中的opt路径下的的workspace文件夹,这样,docker下的opt/workspace就指向来本机的`pwd`/workspace文件夹;
Dockerfile 文件示例

FROM ubuntu:18.04

FROM python:3.6.13

RUN pip install --upgrade pip

RUN apt-get update -y && apt-get install -y python-pip python-dev

# We copy just the requirements.txt first to leverage Docker cache
COPY ./requirements.txt /nlp/requirements.txt

WORKDIR /nlp

RUN pip install -i https://pypi.doubanio.com/simple/  -r requirements.txt 

COPY . /nlp

CMD cd /nlp/nlp_service && python app.py

四、使用

1、docker build -t nlp_tornad . 注意后面有个小点!

2、docker run -p 9080:9080 nlp_tornad 端口号可以自己改

上一篇:Python编程及高级数据分析


下一篇:胡说八道 - 知乎杂谈