docker-ubuntu-python
一、windows下安装docker desktop
1.打开 控制面板 -> 程序 -> 启用或关闭Windows功能。找到“适用于Linux的Windows子系统”和“虚拟机平台”,勾选这两项之后确定,并重新启动计算机。
2.使用管理员用户打开CMD,运行:wsl --set-default-version 2
注意,有可能会出现如下提示:WSL 2 需要更新其内核组件。有关信息,请访问 https://aka.ms/wsl2kernel
按照提示下载wsl2的内核

3.打开Microsoft Store,搜索ubuntu并安装
4.验证Ubuntu是否在WSL2的环境下启动
以管理员身份运行:wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
出现以上信息说明已安装好。如果发现VERSION为1,说明Ubuntu运行在WSL1下。需要手工切换。
首先关闭WSL下运行的Linux,执行:wsl --shutdown然后执行:wsl --set-version <Linux发行版名称> 2其中Linux发行版名称为前面安装的Linux名称,可以通过wsl -l -v命令查看。
执行命令后等待片刻。等命令行提示转换完成,我们已经成功将Linux切换到WSL2环境。
5.最后直接按提示安装docker desktop
二、docker基本概念
1.什么是docker
Docker 是一个应用打包、分发、部署的工具,你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。
2.容器与镜像
镜像(container):可以理解为软件安装包,可以方便的进行传播和安装。
容器(image):软件安装后的状态,每个软件运行环境都是独立的、隔离的,称之为容器。
注:容器即为镜像的实例,一个镜像可以存在多个容器
3.打包、分发、部署
打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包
分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装
部署:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一模一样的运行环境,不管是在 Windows/Mac/Linux。
三、创建一个ubuntu下的python镜像以及容器挂载
1.首先准备一个项目,HMM分词
2.在项目目录下创建一个名为Dockerfile的文件,并写入一些初始化命令,如下
FROM ubuntu:18.04
LABEL maintainer="<%= name:@emal.com %>"
ADD sources.list /etc/apt
RUN apt-get update
RUN apt-get install -y python3
RUN apt-get install -y python3-pip
RUN python3 -m pip install --upgrade pip
RUN pip3 install tqdm
RUN pip3 install numpy
ENV LANG C.UTF-8
ADD . /app
WORKDIR /app
CMD ["/bin/bash", "run.sh"]
3.在该目录下打开终端,输入命令:docker build -t test:v1 .即可创建一个镜像
4.在该目录下打开终端,输入命令:docker run -p 8080:8080 --name test-hello test:v1创建一个容器
5.在该目录下打开终端,输入命令:docker run --name test -it -v widnows下的绝对路径:/app -d test:v1创建一个挂载容器
挂载的作用:同步windows下项目文件的修改
6.几种挂载方式
bind mount直接把宿主机目录映射到容器内,适合挂代码目录和配置文件。可挂到多个容器上volume由容器创建和管理,创建在宿主机,所以删除容器不会丢失,官方推荐,更高效,Linux 文件系统,适合存储数据库数据。可挂到多个容器上tmpfs mount适合存储临时文件,存宿主机内存中。不可多容器共享。
注:bind mount 方式用绝对路径 -v D:/code:/app而volume 方式,只需要一个名字 -v db-data:/app
四、遇到的问题
1.ubuntu下载源太慢
见参考链接一
2.容器无法使用中文
见参考链接四
五、常用命令
Dockerfile指令

参考:
完美解决XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root‘

浙公网安备 33010602011771号