用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

 

posted @ 2022-11-03 19:18  术科术  阅读(2396)  评论(0编辑  收藏  举报