10分钟学会docker
什么是docker
Docker是一种容器化技术,它可以让开发者将应用程序和依赖项打包到一个独立的容器中,从而使得应用程序可以跨平台运行并且更加轻便、灵活。Docker容器可以在任何支持Docker的主机上运行,例如Linux、MacOS和Windows系统。
安装docker
在进行Docker开发之前,我们首先需要安装Docker。我们可以通过以下步骤在Linux系统上安装Docker:
- 安装所需的依赖包:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
- 添加Docker官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 将Docker官方存储库添加到APT源:
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装Docker引擎:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
使用docker
现在我们已经安装了Docker,我们来看看如何使用它。
示例1:运行一个简单的应用程序
我们可以使用以下步骤运行一个简单的“Hello World”应用程序:
- 创建Dockerfile:
# 使用官方的python运行时作为基础镜像
FROM python:3.9-slim-buster
# 将当前目录下的应用程序复制到容器的/app目录下
COPY . /app
# 设置工作目录为/app
WORKDIR /app
# 安装应用程序所需的依赖项
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# 在容器启动时运行应用程序
CMD ["python", "app.py"]
- 构建镜像:
docker build -t myapp .
- 运行容器:
docker run -p 8080:80 myapp
现在我们可以在浏览器中访问http://localhost:8080/,就可以看到我们的“Hello World”应用程序运行起来了。
示例2:与数据库交互
现在我们来看看如何在Docker容器中使用数据库。
- 首先,我们需要安装一个数据库,我们可以使用以下命令在Docker容器中安装MySQL:
docker run -d --name=mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:latest
- 然后,我们需要修改示例1中的应用程序,以便它可以连接到数据库:
import mysql.connector
# 连接到数据库
cnx = mysql.connector.connect(user='root', password='my-secret-pw',
host='localhost',
database='test')
# 执行查询
cursor = cnx.cursor()
query = ("SELECT * FROM mytable")
cursor.execute(query)
# 处理结果
for (name, value) in cursor:
print("{}: {}".format(name, value))
# 关闭连接
cnx.close()
- 然后我们需要更新Dockerfile,以便包含我们的数据库驱动程序和连接信息:
# 使用官方的python运行时作为基础镜像
FROM python:3.9-slim-buster
# 将当前目录下的应用程序复制到容器的/app目录下
COPY . /app
# 设置工作目录为/app
WORKDIR /app
# 安装应用程序所需的依赖项
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# 安装MySQL驱动程序
RUN pip install mysql-connector-python
# 定义环境变量
ENV DB_HOST=localhost
ENV DB_USER=root
ENV DB_PASSWORD=my-secret-pw
ENV DB_DATABASE=test
# 在容器启动时运行应用程序
CMD ["python", "app.py"]
- 最后,我们需要运行容器并将连接信息传递给环境变量:
docker run -p 8080:80 --link=mysql:mysql -e DB_HOST=mysql -e DB_USER=root -e DB_PASSWORD=my-secret-pw -e DB_DATABASE=test myapp
现在我们可以在浏览器中访问http://localhost:8080/,就可以看到我们的应用程序从MySQL数据库中检索数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:10分钟学会docker - Python技术站