诸神缄默不语-个人CSDN博文目录
我用的是腾讯云服务器,操作系统是OpenCloudOS 9,基本上可以当特色版CentOS用。
docker安装跟各个系统关系太大了,我就不写了。OpenCloudOS 9安装docker见这篇博文:腾讯云服务器使用教程
文章目录
- 1. 拉docker镜像
- 2. 启动、运行、退出容器
- 1. 启动交互式容器
- 2. 退出容器
- 3. 使用Dockerfile
- 4. 进入已存在的docker服务的交互式容器中
- 5. docker run命令参数
- 3. 提交镜像
- 4. 查看所有docker服务
- 5. 查看容器日志
- 6. 执行容器中的命令行
- 7. 将主机中的文件复制到容器里
- 本文撰写过程中参考的其他网络资料
1. 拉docker镜像
由于众所周知docker官方镜像被墙了,所以需要用民间镜像跳转,举例python:3.10镜像:
sudo docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/python:3.10
sudo docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/python:3.10 docker.io/library/python:3.10
我用的这个镜像的网址:https://docker.aityp.com/image/docker.io/library/python:3.10
2. 启动、运行、退出容器
1. 启动交互式容器
启动容器,启动一个交互式容器并进入容器环境:sudo docker run -it --name my_python_env python:3.10 /bin/bash
在交互式容器环境内就跟在正常终端内操作一样了,在有Python环境的容器内就可以运行pip、python等命令了。
2. 退出容器
在使用 docker run -it
命令启动交互式容器后,您可以通过以下方式退出容器:
-
保持容器运行,退出交互会话:
如果希望退出交互会话但让容器继续在后台运行,请按以下键组合:
- 键盘组合:
Ctrl + P
,然后立即按Ctrl + Q
此操作将使您退出容器的交互会话,但容器仍在后台运行。
- 键盘组合:
-
退出并停止容器:
如果希望退出交互会话并停止容器,可以使用以下方法:
-
输入命令: 在容器内输入
exit
命令exit
-
键盘组合: 按
Ctrl + D
这两种方式都会使您退出容器的交互会话,并停止容器的运行。
-
3. 使用Dockerfile
在项目目录下创建一个名为 Dockerfile 的文件,内容如下:
FROM python:3.10# 设置容器的工作目录
WORKDIR /appCOPY /home/user/myfile.txt /root/# 安装依赖包
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# 设置默认命令
CMD ["python", "your_script.py"]
在Dockerfile所在目录下运行以下命令构建镜像:docker build -t my_python_app:latest .
此命令将创建一个名为 my_python_app:latest
的镜像。
使用构建的镜像运行容器:docker run -it --name my_running_app my_python_app:latest
此命令将启动一个名为 my_running_app
的容器,并运行 your_script.py。
4. 进入已存在的docker服务的交互式容器中
docker exec -it -u 0 my_python_app COMMAND
COMMAND在Python环境里就可以是/bin/bash
5. docker run命令参数
-v
:指定容器目录/app到Linux目录文件的映射,意思是这个参数指定的路径就相当于容器目录/app了,Dockerfile就直接在这里运行,所以your_script.py也要放在这里-p
:Linux宿主机、容器的端口映射,比如1080:5000
就相当于把访问主机的1080端口映射成访问容器的5000端口
如果容器内有多个服务需要映射,可以使用多个-p
参数。
3. 提交镜像
docker commit my_python_env my_python_image:latest
4. 查看所有docker服务
sudo docker ps
会展示正在运行的服务的如下信息:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5. 查看容器日志
docker logs 容器ID
这个容器ID用上一节提到的docker ps
看就行。
6. 执行容器中的命令行
docker exec -it 容器ID bash命令行
7. 将主机中的文件复制到容器里
docker cp --chmod=u+x 主机文件路径 容器ID:容器文件路径
chmod是在这里给个权重,不能更改文件或目录的所有权或组。
(持续访问文件用docker volume。构建新的镜像时可以在Dockerfile中添加,就用COPY就行,文件会成为镜像的一部分,以后分发和部署就直接自动放进去。此外也可以靠放在docker run -v挂载的目录里)
本文撰写过程中参考的其他网络资料
- Linux下docker运行python_linux docker运行python-CSDN博客
- linux怎么办文件拷贝进docker_mob649e816209c2的技术博客_51CTO博客
- Docker cp怎样设置权限 - 问答 - 亿速云