手把手构建前端CI/CD:Docker 入门使用

您所在的位置:网站首页 用img镜像装系统 手把手构建前端CI/CD:Docker 入门使用

手把手构建前端CI/CD:Docker 入门使用

2023-03-13 09:19| 来源: 网络整理| 查看: 265

手把手构建前端CI/CD:Docker 入门使用 Docker解决了什么问题?

想要理解docker解决了什么问题,首先,我们要知道,在docker出现之前是什么样子?

物理机: 首先就是最原始的阶段,直接使用物理机,即我们平时使用的电脑就是一台物理机。

虚拟机:即我们可以在操作系统去运行另外一种操作系统,比如:在window系统了运行linux系统,但是,这种安装虚拟机的方式,会有以下几个缺点:

资源占用多: 步骤冗余多 启动慢

Linux容器:由于虚拟机存在这些缺点,Linux又发展出了另外一种虚拟化技术:Linux 容器,它不是模拟一个完整的操作系统,而是对进程进行隔离。 或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

启动快:启动容器,相当于就是启动本机的一个进程,而不是启动整个操作系统,所以速度会很快 资源占用少:容器只占用需要的资源,不会占用不需要的资源,而虚拟机相当于是一个完整的操作系统,不可避免会占用所有资源。 另外,多个容器之间还可以共享资源,而虚拟机做不到。 体积很小:容器只会包含用到的组件,而虚拟机是整个操作系统的打包,因此文件会小很多。

Docker容器:Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。 它是目前最流行的 Linux 容器解决方案。

Docker的安装 安装docker brew install docker // 这里是mac系统的安装方式 复制代码

也可以直接去docker 官网下载。

安装完成以后,我们可以执行docker --version来验证是否安装成功。

Docker核心概念 镜像 - image

镜像 可以简单类比着理解为 我们平时系统上安装的各种软件,比如:我们自己的mac其实就是一个物理机,同时这台机器上可能安装了大量的应用,比如:nginx,node等。而在Docker中是怎么安装这些应用程序呢?Docker其实会把应用程序及其依赖,都打包在一个image文件里,这个image文件就是镜像,其实就是一个二进制文件。在docker中实际安装的就是一个个的镜像 例如:我们刚刚所说nginx,在docker中也会有对应的nginx镜像。

同时,在实际开发中,镜像是可以相互继承的。一个image文件往往通过继承另外一个基础image文件,同时,再加上一个个性化的设置,从而生成一个新的image文件。

image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。一般来说,为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作。即使要定制,也应该基于别人的 image 文件进行加工,而不是从零开始制作。

为了方便共享,image 文件制作完成后,可以上传到网上的仓库。Docker 的官方仓库 Docker Hub 是最重要、最常用的 image 仓库。此外,出售自己制作的 image 文件也是可以的。

容器 - container

有了image镜像以后,我们才可以生成Docker容器,这点可能和物理机正好反过来啦,不过也好理解,容器不像物理机,虚拟机那样,不需要整个操作系统所有文件,而是按需引入需要的文件即可,这里所说的需要的文件其实就是镜像,确定了需要哪些镜像,我们就可以创建相应的容器啦。

常用Docker命令 镜像相关命令

创建镜像

docker image build -t test_image . // 基于当前目录的Dockerfile创建指定名称的镜像test_image docker image build -t test_image:0.0.1 . // 也可以指定镜像的版本 复制代码

安装镜像:即安装市场开源的镜像

docker image pull nginx // 安装nginx镜像 复制代码

删除镜像

docker image rm nginx // 删除nginx静心啊个 复制代码

查看镜像列表

docker image ls // 或者 docker images 复制代码

发布镜像

即我们想把自己创建的镜像发布到docker hub中,让其他人使用。

// 1. 去 hub.docker.com 或 cloud.docker.com 注册一个账户。然后,用下面的命令登录。 docker login ​ // 2. 为本地的 image 标注用户名和版本。 $ docker image tag [imageName] [username]/[repository]:[tag] # 实例 $ docker image tag koa-demos:0.0.1 ruanyf/koa-demos:0.0.1 ​ //3. 发布 image 文件。 docker image push [username]/[repository]:[tag] 复制代码

发布成功以后,登录 hub.docker.com,就可以看到已经发布的 image 文件。

容器相关命令

创建容器

docker container run -d -p 8000:80 --name [容器名] [镜像名] // 基于指定镜像创建容器 ​ // -d 表示docker容器启动以后在后台运行 // -p 表示指定容器启动后对应的端口号 // --name 指定容器名 复制代码

运行容器

docker container run 每次执行都会新建一个容器,多次执行,就会生成多个一摸一样的容器,而docker container start是启动指定容器。

docker container start [containerID] 复制代码

查看容器列表

docker container ls // 或者 docker ps 复制代码

删除容器

docker container rm [containerID] 复制代码

终止容器运行

docker container stop [containerID] // 不会立即终止 docker constainer kill [containerID] // kill命令会强制立即终止,那些正在进行的操作会全部丢失 复制代码

不过,容器停止运行后,并不会消失,容器列表里依然存在。

查看容器日志

docker container logs [containerID] 复制代码

进入指定容器,查看容器内的文件

docker container exec -it [containerID] /bin/bash // --it命令必须有 // 进入容器之后,可以执行exit命令退出。 exit; 复制代码 Dockerfile文件详解

Dockerfile文件常见语法:

FROM // base image RUN // 执行命令 ADD // 添加文件 COPY // 拷贝文件 CMD // 执行命令 EXPOSE // 暴露端口 WORKDIR // 指定路径 MAINTAINER // 维护者 ENV // 设置环境变量 ENTRYPOINT // 容器入口 USER // 指定用户 VOLUMNE // mount point 复制代码 案例体会

接下来,我们通过一个小例子实际体会一下:

创建Dockerfile文件

FROM alpine:latest // 表示基于哪个基础镜像,alpine:latest是常用的最小集合的镜像 MAINTAINER fengyuchao // 维护者,即一个备注说明 CMD echo 'hello docker' 复制代码

基于Dockerfile文件创建镜像

docker build -t hello_docker . // 基于当前目录创建一个hello_docker镜像 复制代码

查看镜像

docker images // 此时我们就可以看到列表会有一个hello_docker镜像 复制代码

执行镜像

docker run hello_image // 输出 hello docker 复制代码


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3