小白学docker
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。Docker容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
要学习Docker,你需要掌握Docker的基本概念,例如镜像、容器、仓库等等。此外,你还需要了解如何使用Dockerfile来创建自定义镜像,以及如何使用Docker Compose来编排多个容器。
学习Docker可以帮助你更好地管理你的应用程序,提高开发效率,并且可以让你轻松地在多个环境中移植你的应用程序。
安装Docker
- 前往Docker官网下载Docker Desktop适用于你的操作系统的版本。
- 安装Docker Desktop。
- 启动Docker Desktop,并等待Docker服务启动完成。
安装完成后,你就可以开始使用Docker了!
以下是一些基本的Docker命令:
docker run: 运行一个容器docker build: 构建一个镜像docker pull: 拉取一个镜像docker push: 推送一个镜像docker images: 显示所有本地镜像docker ps: 显示正在运行的所有容器docker stop: 停止一个正在运行的容器docker rm: 删除一个容器docker rmi: 删除一个镜像
使用 Docker 与 Jenkins 实现自动化构建和发布流程
-
安装 Docker 和 Jenkins
首先,我们需要在本地机器和远程服务器上安装 Docker 和 Jenkins。你可以前往Docker官网下载Docker Desktop适用于你的操作系统的版本,并按照安装向导进行操作;你也可以前往Jenkins官网下载适用于你的操作系统的 Jenkins 安装包,并按照安装向导进行操作。
-
创建 Dockerfile 文件
接下来,我们需要在项目的根目录中创建一个 Dockerfile 文件。在该文件中,你需要指定你所需的基础镜像,以及安装和配置你的应用程序所需的软件和工具。例如,以下是一个简单的 Dockerfile 文件示例:
FROM node:10-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD [ "npm", "start" ] -
在 Jenkins 中创建一个新的任务
在 Jenkins 中,我们需要创建一个新的任务。在任务中,你需要配置源代码管理、构建步骤、构建后步骤等信息。具体来说,你需要:
-
配置源代码管理:选择用于存储源代码的 Git 仓库,并指定分支名称等信息。
-
配置构建步骤:我们可以使用 Jenkins 提供的 Pipeline 脚本语法来定义构建步骤。例如,以下是一个简单的 Pipeline 脚本示例:
pipeline { agent any stages { stage('Build') { steps { sh 'docker build -t my-app .' } } } }在该 Pipeline 中,我们定义了一个名为
Build的阶段,在该阶段中,我们使用docker build命令构建一个名为my-app的 Docker 镜像。 -
配置构建后步骤:在构建后步骤中,我们可以使用以下命令将 Docker 镜像推送到远程仓库中:
docker tag my-app <registry>/<namespace>/<image-name>:<tag> docker push <registry>/<namespace>/<image-name>:<tag>其中,
<registry>表示远程仓库地址,<namespace>表示命名空间,<image-name>表示镜像名称,<tag>表示标签名称。
-
-
在远程服务器上拉取 Docker 镜像并运行容器
最后,我们需要在远程服务器上拉取 Docker 镜像并运行容器。具体来说,你需要:
-
拉取 Docker 镜像:使用以下命令拉取 Docker 镜像:
docker pull <registry>/<namespace>/<image-name>:<tag>其中,
<registry>表示远程仓库地址,<namespace>表示命名空间,<image-name>表示镜像名称,<tag>表示标签名称。 -
运行容器:使用以下命令运行容器:
docker run -d -p <host-port>:<container-port> <registry>/<namespace>/<image-name>:<tag>其中,
<host-port>表示主机端口,<container-port>表示容器端口。
-