用Docker搭建Python环境及常用命令
1 创建项目目录
$ cd /PATH/TO
$ mkdir python-demo
2 下载python镜像
1 #下载镜像
2 docker pull python:3.8
3
4 #查看镜像
5 docker images
3 创建python文件
1 # 进入项目目录 2 cd python-demo 3 4 # 创建 demo.py 文件
demo.py
1 #!/usr/bin/python 2 3 print("Hello, World!")
4 构建容器
4.1方式一:指令直接构建
1 #用 docker run 命令运行 demo.py文件 2 docker run -v /PATH/TO/python-demo:/usr/src/python-demo -w /usr/src/python-demo python:3.8 python demo.py 3 4 注意事项: 5 -v 将主机的py文件目录挂载到容器中的 /usr/src/python-demo 6 -w 指定容器的 /usr/src/python-demo 目录为工作目录 7 python demo.py 用容器中的python命令来执行工作目录的demo.py
4.2方式二:Dockerfile 方式构建
Dockerfile 文件是文本文件,没有后缀名。 在项目目录中,创建 Dockerfile 文件。
4.2.1编写Dockerfile
1 FROM python:3.8 2 COPY . /usr/src/python-demo 3 WORKDIR /usr/src/python-demo 4 ENTRYPOINT [ "python" ] 5 CMD ["python", "demo.py" ]
4.2.2构建镜像
1 #通过 docker build 创建容器 2 $ docker build --tag=pydemo:v1.0.1 . 3 或者 4 $ docker build -t pydemo:v1.0.1 .
结果:
1 Sending build context to Docker daemon 3.072kB 2 Step 1/5 : FROM python:3.8 3 ---> 79cc46abd78d 4 Step 2/5 : COPY . /usr/src/python-demo 5 ---> 08fce4002666 6 Step 3/5 : WORKDIR /usr/src/python-demo 7 ---> Running in 17f949ce19eb 8 Removing intermediate container 17f949ce19eb 9 ---> 9b4884144bd8 10 Step 4/5 : ENTRYPOINT [ "python" ] 11 ---> Running in bc0957e548a4 12 Removing intermediate container bc0957e548a4 13 ---> e4f82d0563e6 14 Step 5/5 : CMD ["python", "demo.py" ] 15 ---> Running in 2e80c8ab0419 16 Removing intermediate container 2e80c8ab0419 17 ---> 5baece65b369 18 Successfully built 5baece65b369 19 Successfully tagged pydemo:v1.0.1
4.2.3启动容器
1 # 查看容器 2 docker ps -a 3 4 # 启动容器 5 docker run -it pydemo:v1.0.1
5 容器打包成镜像
# 1 查看容器信息 docker ps -a # 2 把容器打包成镜像:用到容器ID,hello是镜像名称,v1是镜像TAG(版本号) docker commit -a "eric" -m "my python test" 80cdd11f9b60 hello:v1
# 查看新镜像
docker images
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
6 docker常用命令
安装docker:yum install docker-ce
启动docker:systemctl start docker
停止docker:systemctl stop docker
重启docker:systemctl restart docker
查看docker状态:systemctl status docker
开机启动:systemctl enable docker
查看docker概要信息:docker info
查看所有容器:docker ps -a 删除镜像:docker rmi imageId 删除容器:docker rm containerId 直接运行一个停止的容器:docker start containerId 进入容器:docker exec -it 09d2a6ee4095 /bin/bash 退出容器:exit 将容器打包成镜像:docker commit containerId imageName,如:docker commit 1f9dfc05e3ad spring-microservice-exam-mysql 查看镜像:docker images 重启容器:docker start 容器ID或容器名,建议使用容器ID,容器ID支持模糊查询而容器名称不支持 启动所有容器:docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) 关闭所有容器:docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2) 删除所有容器:docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
7 docker compose
1 启动镜像:docker-compose up 2 后台启动:docker-compose up -d // 后台启动并运行容器 3 指定配置文件:docker-compose -f docker-compose-base.yml up 4 构建服务:docker-compose -f docker-compose-base.yml build 5 列出所有容器:docker-compose ps 6 删除容器:docker-compose rm container,如:docker-compose rm config-service 7 停止正在运行的容器:docker-compose stop
本文来自博客园,作者:术科术,转载请注明原文链接:https://www.cnblogs.com/shukeshu/p/16855217.html