docker安装文档:
https://docs.docker.com/docker-for-mac/#check-versions
http://www.runoob.com/docker/macos-docker-install.html
docker打包步骤(pipenv shell虚拟环境下python项目打包):
项目最终结构:
docker_test
├── Dockerfile
├── myapps
│ └── hello_world.py
└── requirements.txt
1 directory, 3 files
假设文件夹 myapps, 主入口文件 myapps/hello_world.py
(1)导出程序依赖包(生成 requirements.txt)
进入到hello_world.py目录,执行:
pipenv lock --requirements > requirements.txt
将生成的requirements.txt移动到Dockerfile同目录
(2)编写Dockfile
在docker_test目录下创建Dockfile文件,内容格式如下:
# 将官方 Python 运行时用作父镜像
FROM python:3.7
# 将工作目录设置为 /myapps
WORKDIR ./myapps
# 将当前目录内容复制到位于 /myapps 中的容器中
ADD . .
# 安装 requirements.txt 中指定的任何所需软件包
RUN pip install -r requirements.txt
# 定义环境变量
#ENV NAME World
# 在容器启动时运行 app.py
CMD ["python3", "./myapps/hello_world.py"]
#CMD ["python3","./myapps/hello_world.py","worker","-l","info"] ##faust程序worker启动命令
(3)制作镜像
格式:
docker build -t imagename Dockerfilepath
# imagename:镜像名称,自定义
# Dockerfilepath:Dockerfile 所在文件夹名称,当前名录为 “.”
如:
docker build -t hello_world .
(4)运行镜像
格式:
docker run -it --name c_name imagename
-it:可交互
c_name:container名称,自定义
如:
docker run -it --name hello5 hello_world
docker run -p 192.168.31.35::9092 -it --name hello7 hello_world #映射到宿主机192.168.31.35的9092端口,即使用宿主机的kafka
3、docker常用命令
docker container ls -a #查看container信息
docker exec -it containerID bash #进入container
docker run -p 4000:80 imageName #将机器的 4000 端口映射到容器的 80 端口
docker run -d -p 4000:80 imageName # 内容相同,但在分离模式下
docker ps # 查看所有正在运行的容器的列表
docker stop containerID # 平稳地停止指定的容器
docker ps -a # 查看所有容器的列表,甚至包含未运行的容器
docker kill containerID # 强制关闭指定的容器
docker rm containerID # 从此机器中删除指定的容器
docker rm $(docker ps -a -q) # 从此机器中删除所有容器
docker images -a # 显示此机器上的所有镜像
docker rmi imagename # 从此机器中删除指定的镜像
docker rmi $(docker images -q) # 从此机器中删除所有镜像
docker login # 使用您的 Docker 凭证登录此 CLI 会话
docker tag <image> username/repository:tag # 标记 <image> 以上传到镜像库
docker push username/repository:tag # 将已标记的镜像上传到镜像库
docker run username/repository:tag # 运行镜像库中的镜像
参考文档:
https://docs.docker-cn.com #docker中文文档