一、在Ubuntu 20.04上下载并使用Docker(详细步骤及示例)
本指南将详细介绍如何在Ubuntu 20.04系统上下载、安装和使用Docker,并通过一个简单的Web服务器示例演示其基本操作。
第一步:准备工作
- 更新系统软件包: 打开终端并执行以下命令,确保您的系统拥有最新的软件包:
sudoapt updatesudoapt upgrade
- 卸载旧版本的Docker (如果存在): 为了避免潜在的冲突,建议先卸载旧版本的Docker(如果存在):
sudoapt remove docker docker-engine docker.io containerd runc
第二步:安装Docker
- 安装Docker依赖项: Docker需要一些依赖项才能正常工作,使用以下命令安装它们:
sudoaptinstall apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common
- 添加Docker官方GPG密钥: 这是为了确保您下载的Docker软件包是官方正版且未被篡改:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg |sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 设置Docker稳定版存储库: 这告诉您的系统从哪里下载Docker软件包:
echo\"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable"|sudotee /etc/apt/sources.list.d/docker.list > /dev/null
- 再次更新软件包并安装Docker Engine, CLI 和 Containerd:
sudoapt updatesudoaptinstall docker-ce docker-ce-cli containerd.io docker-compose-plugin
第三步:验证Docker安装
- 运行Hello World容器: 这是验证Docker是否正确安装的标准方法:
sudo docker run hello-world
如果一切正常,您将看到一条消息,表明Docker能够下载并运行hello-world
镜像。
第四步:(可选) 将用户添加到docker组
为了避免每次运行Docker命令都需要使用
sudo
,您可以将当前用户添加到
docker
组:
sudousermod -aG docker $USER
注意: 您需要注销并重新登录才能使更改生效。
第五步:(可选) 安装Docker Compose
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,如果您的项目需要管理多个容器,建议安装它:
sudoaptinstall docker-compose
第六步:实际示例 - 运行Nginx Web服务器
让我们通过一个简单的例子来演示如何使用Docker运行一个Nginx Web服务器:
- 下载Nginx镜像:
docker pull nginx
- 运行Nginx容器:
docker run -d -p 80:80 nginx
这个命令做了以下几件事:--d
: 在后台运行容器。--p 80:80
: 将容器的80端口映射到主机的80端口,这样您可以通过访问主机的80端口来访问Nginx服务器。-nginx
: 指定要运行的镜像名称。 - 验证Nginx是否正在运行: 打开浏览器并访问
http://localhost
,您应该可以看到Nginx的默认欢迎页面。
第七步:常用Docker命令
以下是一些常用的Docker命令:
- 查看正在运行的容器:
docker ps
- 查看所有容器 (包括已停止的):
docker ps -a
- 停止容器:
docker stop <容器ID或名称>
- 删除容器:
docker rm <容器ID或名称>
- 查看本地镜像:
docker images
- 从Docker Hub下载镜像:
docker pull <镜像名称>
- 构建镜像:
docker build -t <镜像名称> .
- 将镜像上传到Docker Hub:
docker push <镜像名称>
第八步:继续学习
Docker是一个功能强大的工具,还有很多东西需要学习。以下是一些学习资源:
- Docker官方文档: https://docs.docker.com/
- Docker Hub: https://hub.docker.com/
二、举例说明将包含Conda环境的应用程序打包成Docker镜像
以下是如何将一个新的Conda环境以及您的应用程序打包成Docker镜像的步骤:
1. 创建Conda环境并安装依赖
首先,在您的本地机器上创建一个新的Conda环境,并安装应用程序所需的依赖项。
conda create -n myenv python=3.9
conda activate myenv
conda install -c conda-forge <您的应用程序依赖项>
2. 创建应用程序代码
将您的应用程序代码放入一个名为
app
的文件夹中(或您选择的任何名称)。
3. 编写Dockerfile
在
app
文件夹所在的目录下创建一个名为
Dockerfile
的文件,并添加以下内容:
# 使用基于Miniconda的镜像作为基础镜像
FROM continuumio/miniconda3:latest
# 设置工作目录
WORKDIR /app
# 复制Conda环境文件
COPY environment.yml .
# 创建Conda环境
RUN conda env create -f environment.yml
# 激活Conda环境
SHELL ["conda", "run", "-n", "myenv", "/bin/bash", "-c"]
# 复制应用程序代码
COPY . .
# 暴露应用程序端口 (如果需要)
EXPOSE 8080
# 定义启动命令
CMD ["python", "your_app.py"]
说明:
FROM
: 指定基础镜像,这里使用Miniconda3镜像。WORKDIR
: 设置容器内的工作目录。COPY
: 将本地文件复制到容器中。RUN
: 在容器内执行命令。SHELL
: 用于在后续命令中激活Conda环境。EXPOSE
: 声明容器将监听的端口。CMD
: 定义容器启动时执行的命令。
4. 构建Docker镜像
在
Dockerfile
所在的目录下执行以下命令构建镜像:
docker build -t my-conda-app .
5. 运行Docker容器
构建完成后,可以使用以下命令运行容器:
docker run -p 8080:8080 my-conda-app
这将启动一个新的容器,并将容器的8080端口映射到主机的8080端口。
示例:
假设您的应用程序是一个简单的Flask Web服务器,代码如下:
# app/app.pyfrom flask import Flask
app = Flask(__name__)@app.route("/")defhello():return"Hello from my Conda app!"if __name__ =="__main__":
app.run(debug=True, host='0.0.0.0', port=8080)
您的
environment.yml
文件可能如下:
name: myenv
channels:- conda-forge
dependencies:- python=3.9
- flask
按照上述步骤构建镜像并运行容器后,您就可以通过访问
http://localhost:8080
来访问您的应用程序了。
注意:
- 将
your_app.py
替换为您应用程序的入口文件名称。 - 如果您的应用程序需要其他端口,请相应地修改
EXPOSE
和docker run
命令中的端口号。 - 您可以根据需要调整
Dockerfile
中的内容,例如添加其他依赖项、更改基础镜像等。
希望这可以帮助您将Conda环境和应用程序打包成Docker镜像!
希望本指南能够帮助您在Ubuntu 20.04上成功安装和使用Docker! 祝您学习愉快!
版权归原作者 roman_fan 所有, 如有侵权,请联系我们删除。