Linux云服务器docker使用教程

诸神缄默不语-个人优快云博文目录

我用的是腾讯云服务器,操作系统是OpenCloudOS 9,基本上可以当特色版CentOS用。
docker安装教程:

  1. OpenCloudOS 9安装docker:
    安装:sudo dnf install docker
    启动docker服务:systemctl start docker

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/

修改下载镜像配置文件从而能够一劳永逸设置镜像路径 & 自搭docker镜像的教程可以参考:【2024/12/27域名再次被墙 现已更换】2024自建Docker镜像代理加速 教程来了 3分钟部署完毕 - 资源荟萃 - LINUX DO
但是我每次其实都是直接一个一个镜像下的,哈哈哈。

2. 启动、运行、退出容器

1. 启动交互式容器

启动容器,启动一个交互式容器并进入容器环境:sudo docker run -it --name my_python_env python:3.10 /bin/bash

在交互式容器环境内就跟在正常终端内操作一样了,在有Python环境的容器内就可以运行pip、python等命令了。

2. 退出容器

在使用 docker run -it 命令启动交互式容器后,您可以通过以下方式退出容器:

  1. 保持容器运行,退出交互会话:

    如果希望退出交互会话但让容器继续在后台运行,请按以下键组合:

    • 键盘组合: Ctrl + P,然后立即按 Ctrl + Q

    此操作将使您退出容器的交互会话,但容器仍在后台运行。

  2. 退出并停止容器:

    如果希望退出交互会话并停止容器,可以使用以下方法:

    • 输入命令: 在容器内输入 exit 命令

      exit
      
    • 键盘组合:Ctrl + D

    这两种方式都会使您退出容器的交互会话,并停止容器的运行。

3. 使用Dockerfile

在项目目录下创建一个名为 Dockerfile 的文件,内容如下:

FROM python:3.10

# 设置容器的工作目录
WORKDIR /app

COPY /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服务的交互式容器中:exec

docker exec -it -u 0 my_python_app COMMAND

COMMAND在Python环境里就可以是/bin/bash:sudo docker exec -it my_python_env /bin/bash

参数-u用于指定执行命令时使用的用户ID(UID)或用户名。这允许你在容器内以特定用户的身份执行命令,而不是默认的 root 用户。
使用 -u 参数可以帮助你避免在容器内以 root 用户身份执行命令,从而提高安全性。此外,某些应用程序可能需要以非 root 用户身份运行,因此使用 -u 参数可以确保应用程序正常工作。

5. docker run命令参数

  1. -v:指定容器目录/app到Linux目录文件的映射,意思是这个参数指定的路径就相当于容器目录/app了,Dockerfile就直接在这里运行,所以your_script.py也要放在这里
  2. -p:Linux宿主机、容器的端口映射,比如1080:5000就相当于把访问主机的1080端口映射成访问容器的5000端口
    如果容器内有多个服务需要映射,可以使用多个 -p 参数。
  3. --network:联网,如需要连本机就用host,用host就能访问本机的服务了,比如MySQL
    但是需要注意的是docker for Windows不支持host,详情请参考:window安装DockerDesktop无法使用host网络模式解决方案_docker注册服务为什么不认host-优快云博客
    对于Windows MySQL还需要设置MySQL可以从任何IP地址访问的权限:docker容器中连接宿主机mysql数据库_docker连接宿主机mysql-优快云博客

1. 示例:用docker创建一个服务,挂载代码路径,映射端口

Dockerfile就在代码文件夹里。

如果不需要更新文件的话就用COPY命令:

FROM python:3.10

WORKDIR /app

COPY . /app/

RUN pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple

CMD ["python", "demo2.py"]
cd 代码文件夹
sudo docker build -t my_python_app:latest 
sudo docker run -d -p 5000:5000 my_python_app

如果需要实时更新文件的话用-v参数挂载,Dockerfile简化为:

FROM python:3.10

WORKDIR /app

RUN pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple

CMD ["python", "demo2.py"]
cd 代码文件夹
sudo docker build -t my_python_app:latest 
sudo docker run -d -p 5000:5000 -v 指定文件夹:/app my-python-app

3. 提交镜像

docker commit my_python_env my_python_image:latest

4. 查看所有docker服务

sudo docker ps
会展示正在运行的服务的如下信息:

CONTAINER ID   IMAGE         COMMAND       CREATED              STATUS              PORTS     NAMES

sudo docker ps -a:会显示所有服务,包括已暂停的

5. 查看容器日志

docker logs 容器ID/容器名
这个容器ID用上一节提到的docker ps看就行。

可选参数:

  • -f:实时日志
  • --tail 函数:显示最新的多少行

6. 执行容器中的命令行

docker exec -it 容器ID bash命令行

7. 将主机中的文件复制到容器里

docker cp --chmod=u+x 主机文件路径 容器ID:容器文件路径
chmod是在这里给个权重,不能更改文件或目录的所有权或组。

(持续访问文件用docker volume。构建新的镜像时可以在Dockerfile中添加,就用COPY就行,文件会成为镜像的一部分,以后分发和部署就直接自动放进去。此外也可以靠放在docker run -v挂载的目录里)

8. 查看所有镜像

docker images

9. 停止容器

docker stop <容器ID或容器名>

本文撰写过程中参考的其他网络资料

  1. Linux下docker运行python_linux docker运行python-优快云博客
  2. linux怎么办文件拷贝进docker_mob649e816209c2的技术博客_51CTO博客
  3. Docker cp怎样设置权限 - 问答 - 亿速云
  4. 一篇文章搞懂docker日志的查看_docker 查看日志-优快云博客
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸神缄默不语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值