前端docker初探

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

前言

Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用Docker可更快地打包、测试以及部署应用程序。

Docker架构

Docker三个基本概念

  • 镜像(Image) :Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container) :镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository) :仓库可看成一个代码控制中心,用来保存镜像。

架构图

image.png

概念 说明
Docker 镜像(Images) Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。
Docker 容器(Container) 容器是独立运行的一个或一组应用,是镜像运行时的实体。
Docker 客户端(Client) Docker 客户端通过命令行或者其他工具使用 Docker SDK (docs.docker.com/develop/sdk…) 与 Docker 的守护进程通信。
Docker 主机(Host) 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker Registry Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(hub.docker.com) 提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
Docker Machine Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

Docker安装

Docker 支持多种操作系统,我们这里用CentOS系统,其它系统请参考文档。CentOS的内核版本高于 3.10。下面几条命令会说明一下安装过程

  • 查看系统的版本
uname -r  
复制代码
  • 使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum -y update
复制代码
  • 卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
复制代码
  • 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum remove docker docker-common docker-selinux docker-engine
复制代码
  • 可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r 
复制代码
  • 安装docker
 sudo yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1
复制代码

Docker常用操作

搜索镜像

docker search nginx

可使用 docker search命令搜索存放在 Docker Hub(这是docker官方提供的存放所有docker镜像软件的地方,类似maven的中央仓库)中的镜像

image.png 以上列表包含五列,含义如下:

  • NAME:镜像仓库名称。
  • DESCRIPTION:镜像仓库描述。
  • STARS:镜像仓库收藏数,表示该镜像仓库的受欢迎程度,类似于 GitHub的 stars0
  • OFFICAL:表示是否为官方仓库,该列标记为[0K]的镜像均由各软件的官方项目组创建和维护。
  • AUTOMATED:表示是否是自动构建的镜像仓库。

更改镜像地址

编辑daemon.json文件,这是docker的默认地址

# vim daemon.json 
{
    "registry-mirrors": ["https://m9r2r2uj.mirror.aliyuncs.com"]
}
复制代码

如果在/etc/docker目录下没有该文件,可以手动创建。

保存退出并重启docker服务

service docker restart
复制代码

下载镜像

前段一般是用nginx来部署我们的服务,在这里我们下载nginx镜像

docker pull nginx:1.4
复制代码

如果要下载指定版本则在nginx后面加冒号指定版本

查看已下载的镜像

docker images
复制代码

image.png

以上列表含义如下

  • REPOSITORY:镜像所属仓库名称。
  • TAG:镜像标签。默认是 latest,表示最新。
  • IMAGE ID:镜像 ID,表示镜像唯一标识。
  • CREATED:镜像创建时间。
  • SIZE: 镜像大小。

删除本地镜像

使用 docker rmi命令即可删除指定镜像

docker rmi java
复制代码

容器常用命令

新建并启动容器

docker run -d -p 8000:80 nginx
复制代码

这样就能启动一个 Nginx容器。在本例中,为 docker run添加了两个参数,含义如下:

  • -d 后台运行
  • -p 宿主机端口:容器端口 #开放容器端口到宿主机端口

列出容器

docker ps

image.png

  • CONTAINER_ID:表示容器 ID。
  • IMAGE:表示镜像名称。
  • COMMAND:表示启动容器时运行的命令。
  • CREATED:表示容器的创建时间。
  • STATUS:表示容器运行的状态。UP表示运行中, Exited表示已停止。
  • PORTS:表示容器对外的端口号。
  • NAMES:表示容器名称。该名称默认由 Docker自动生成,也可使用 docker run命令的--name选项自行指定。

列出所有容器,包含已停止的

docker ps -a
复制代码

停止容器

docker stop f0b1c8ab363

使用 docker stop <容器id>命令,即可停止容器

强制停止容器

docker kill f0b1c8ab3633

可使用 docker kill <容器id>命令发送 SIGKILL信号来强制停止容器

启动已停止的容器

docker start f0b1c8ab3633

使用docker run命令,即可新建并启动一个容器。对于已停止的容器,可使用 docker start <容器id>命令来启动

6、查看容器所有信息**

使用命令docker inspect <容器id>

# docker inspect f0b1c8ab3633
复制代码

7、查看容器日志

使用命令docker container logs <容器id>

# docker container logs f0b1c8ab3633
复制代码

8、查看容器里的进程

使用命令docker top <容器id>

# docker top f0b1c8ab3633
复制代码

9、进入容器

使用docker container exec -it <容器id> /bin/bash命令用于进入一个正在运行的docker容器。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了

# docker container exec -it f0b1c8ab3633 /bin/bash
复制代码

10、删除容器

使用 docker rm命令即可删除指定容器

# docker rm f0b1c8ab3633
复制代码

该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数

使用Dockerfile构建前端部署镜像

  1. 执行前端命令,把打包后的文件上传到服务器上/app/frontend 目录中
  2. 在当前目录创建 Dockerfile 文件
# 用ngin镜像
FROM nginx:latest
# 添加文件到目录
ADD ./dist/ /usr/share/nginx/html/

复制代码
  1. 构建镜像
 docker build -t zetc:0.0.1 .
复制代码

其中,-t指定镜像名字, : 后边是版本号,命令最后的点.表示Dockerfile文件所在路径 4. 用刚才创建的镜像启动我们的容器

docker run -d -p 8088:80 zetc:0.0.1
复制代码
  1. 这时候我们就可以访问 http://localhost:8088 看到我们部署的页面。

结束语

以上就是我们对docker的初步了解,后续我们说下部署的更新操作

如果你觉得该文章不错,不妨

1、点赞,让更多的人也能看到这篇内容

2、关注我,让我们成为长期关系

3、关注公众号「前端有话说」,里面已有多篇原创文章,和开发工具,欢迎各位的关注,第一时间阅读我的文章

おすすめ

転載: juejin.im/post/7031127143207829511