docker使用教程
先在自己的win电脑上下载docker desktop. 这里以构建python项目镜像为例
创建dockerfile
Dockerfile是一个包含用户定义的指令的文本文档,它可以指定基本镜像,并包含创建容器时应运行的所有命令。以下是一个例子:
# 选择一个基础镜像FROM python:3.8# 设置工作目录WORKDIR /app# 将当前目录下的所有文件(除了.dockerignore排除的路径),复制到 /app下ADD . /app# 安装项目需要的包RUN pip install --no-cache-dir -r requirements.txt# 声明服务端口EXPOSE 8080# 启动时运行 Python 应用CMD ["python", "./your_script.py"]
需要替换的部分:
python:3.8
: 你项目所使用的Python版本./your_script.py
: 你需要运行的Python脚本的相对路径
其它的基本不用变
.dockerignore文件
类似于 .gitignore
文件,.dockerignore
文件可以避免不必要的文件或目录被复制到Docker镜像中。
__pycache__*.pyc*.pyo*.pyd
docker build构建docker镜像
在你的项目根目录下(即Dockerfile所在的位置),运行以下命令来构建你的Docker镜像:
docker build -t your-image-name .
其中 your-image-name
是你给你的Docker镜像起的名字。
docker run试一下
docker run -d -p 8080:8080 your-image-name
-d
标志表示以”detached”模式(即后台模式)运行容器,-p
标志用于将容器内部的网络端口映射到我们的主机上。在这个例子中,我们将容器的8080端口映射到主机的8080端口。这样你的Python应用就应该在你的本地Windows电脑上以Docker的方式运行起来了。
docker push推送
docker logindocker tag your-image-name:latest your-dockerhub-username/your-image-name:latestdocker push your-dockerhub-username/your-image-name:latest
注意将 your-dockerhub-username
和 your-image-name
替换成你的Docker Hub用户名和你的镜像名。
到此你的镜像就构建完成并上传到dockerhub了, 其它设备可以方便地构建容器
在Ubuntu云服务器上部署Docker容器
(假设你没有在ubuntu上安装Docker)
首先,你需要在Ubuntu服务器上安装Docker。登录到你的Ubuntu服务器,然后运行以下命令来安装Docker:
sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl software-properties-commoncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"sudo apt-get updatesudo apt-get install docker-ce
从Docker Hub上拉取你的Docker镜像并运行:
docker pull your-dockerhub-username/your-image-name:latestdocker run -d -p 8080:8080 your-dockerhub-username/your-image-name:latest
注意将
your-dockerhub-username
和your-image-name
替换成你的Docker Hub用户名和你的镜像名。也可以不开端口, 就不要-p参数
cron
顺便再讲一下Ubuntu上定时运行程序的一个工具
在Ubuntu上定时运行Docker容器,可以利用cron来实现。以下是操作步骤:
打开crontab编辑器:
在终端输入
crontab -e
命令。如果是第一次运行这个命令,系统可能会让你选择一个编辑器(比如nano或vim)。添加一个cron任务:
在crontab编辑器中,你可以添加一行来定义你的定时任务。每一行代表一个定时任务,格式如下:
* * * * * command to be executed- - - - -| | | | || | | | +----- day of the week (0 - 6) (Sunday=0)| | | +------- month (1 - 12)| | +--------- day of the month (1 - 31)| +----------- hour (0 - 23)+------------- min (0 - 59)
例如,如果你想每天的凌晨1点运行你的Docker容器,你可以添加以下行:
0 1 * * * /usr/bin/docker run --rm your-image-name
这行命令的意思是在每天的1点0分(即每天凌晨1点)执行
/usr/bin/docker run --rm your-image-name
命令。--rm
选项意味着每次运行完容器后删除容器,这通常在你不需要保留容器运行结果时使用。注意:请将
your-image-name
替换为你的实际Docker镜像名称。