0
点赞
收藏
分享

微信扫一扫

kubeasz在线安装K8S集群单master集群(kubeasz安装之二)

Resin_Wu 2023-08-21 阅读 43

基于业务开发使用Docker

  1. Docker是一个开源的容器引擎,它有助于更快地交付应用。
  2. Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。
  3. 使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。

Docker安装

  1. docker内核要求在3.1以上
    命令 : uname -r
  2. 安装
    命令: yum -y install docker-io
  3. 启动
    命令: service docker start
  4. 查看是否安装成功,查看版本
    命令: docker version
  5. 入门例子 安装nginx
    docker run -p 80:80 -d nginx

docker version结果

Docker架构

Docker架构

  • Docker daemon
    Docker守护进程、用来接收客户端的命令,拉取镜像、运行镜像为容器;
  • Client
    发送docker命令的客户端;
  • Images
    Docker镜像是一个只读模板,它包含创建 Docker容器的说明。它和系统安装光盘有点像,使用系统安装光盘可以安装系统,同理,使用Docker镜像可以运行 Docker镜像中的程序
  • Container
    容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。
  • Registry
    远程镜像仓库、用来存储镜像;如果需要与他人合作、则需要将镜像放入远程镜像中心,让他人拉取; 类似远程Meven库、本地Maven库;

阿里云配置镜像加速

由于DockerHub是外国网站、很容易访问失败、可配置加速器;

  1. 我们可以借助阿里云的镜像加速器,登录阿里云(https://cr.console.aliyun.com/#/accelerator)
    在这里插入图片描述
  2. 进入/etc/docker
  3. 创建或者更新daemon.json
  1. 重启服务

Docker常用命令

镜像常用命令

  1. 查看本地镜像
  1. 搜索镜像

Search命令

  1. 拉取镜像

在这里插入图片描述
4. 查看本地所有镜像

在这里插入图片描述
5. 删除镜像

在这里插入图片描述
6. 删除所有镜像

容器常用命令

通过docker run创建容器;

  1. 运行容器

在这里插入图片描述
2. 查看容器

[root@centos-7 docker]# docker ps -s
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES                 SIZE
1294465aa995        nginx               "/docker-entrypoin..."   2 minutes ago       Up 2 minutes        0.0.0.0:90->80/tcp   suspicious_brattain   1.09 kB (virtual 141 MB)
b3f28f833918        nginx               "/docker-entrypoin..."   17 hours ago        Up 17 hours         0.0.0.0:91->80/tcp   loving_swanson        1.09 kB (virtual 141 MB)
[root@centos-7 docker]# docker ps -q
1294465aa995
b3f28f833918
[root@centos-7 docker]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
1294465aa995        nginx               "/docker-entrypoin..."   3 minutes ago       Up 3 minutes        0.0.0.0:90->80/tcp   suspicious_brattain
[root@centos-7 docker]# docker ps -1
unknown shorthand flag: '1' in -1
See 'docker ps --help'.
[root@centos-7 docker]# docker ps -n 1
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
1294465aa995        nginx               "/docker-entrypoin..."   3 minutes ago       Up 3 minutes        0.0.0.0:90->80/tcp   suspicious_brattain
[root@centos-7 docker]# docker ps -n 2
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
1294465aa995        nginx               "/docker-entrypoin..."   3 minutes ago       Up 3 minutes        0.0.0.0:90->80/tcp   suspicious_brattain
b3f28f833918        nginx               "/docker-entrypoin..."   17 hours ago        Up 17 hours         0.0.0.0:91->80/tcp   loving_swanson

[root@centos-7 docker]# docker ps -f name=tomcat
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@centos-7 docker]# docker ps -f name=nginx
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@centos-7 docker]# docker ps -a 
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                     PORTS                NAMES
1294465aa995        nginx                     "/docker-entrypoin..."   6 minutes ago       Up 6 minutes               0.0.0.0:90->80/tcp   suspicious_brattain
b3f28f833918        nginx                     "/docker-entrypoin..."   17 hours ago        Up 17 hours                0.0.0.0:91->80/tcp   loving_swanson
8a20491ddf14        nginx                     "/docker-entrypoin..."   17 hours ago        Exited (0) 17 hours ago                         fervent_bhaskara
7a2f2b98ab37        registry-zqh/tiku:1.1.0   "java -jar /data/a..."   20 months ago       Exited (1) 20 months ago    
  1. 停止容器

在这里插入图片描述
4. 启动/重启

在这里插入图片描述

  1. 删除容器

在这里插入图片描述
6. 查看容器日志

  • 拉取hello-world镜像
    在这里插入图片描述

  • 运行镜像
    在这里插入图片描述

  • 查看日志;
    在这里插入图片描述

  1. 进入容器

在这里插入图片描述

  • 容器内安装vim、ping、ifconfig等指令
  1. 查看容器所有信息

在这里插入图片描述

Dockerfile

使用Dockerfile构建Docker镜像

Dockerfile是一个文本文件,其中包含了若干条指令,指令描述了构建镜像的细节
先来编写一个最简单的Dockerfile,以前文下载的Nginx镜像为例,来编写一个Dockerfile修改该Nginx镜像的首页

  1. 创建空文件夹、在里面创建Dockerfile文件;
FROM nginx
RUN echo '<h1>This is zqh Nginx!!!</h1>' > /usr/share/nginx/html/index.html
  1. 构建镜像
docker build -t zqh:tuling .

在这里插入图片描述

  1. 运行镜像
docker run -d -p 101:80 nginx:zqh

在这里插入图片描述

Dockerfile常用指令

  • FROM
    基础镜像的来源
  • RUN
    构建镜像阶段执行命令,可以有多个RUN命令,执行结果会放入Image文件
  • ADD 源文件 目标文件
    • 将源文件复制到容器中的目标目录
    • src可以是 Dockerfile所在目录的相对路径,也可以是一个 URL,还可以是一个压缩包
ADD <src> <dest> 
  • COPY
    拷贝文件,和ADD命令类似,但不支持URL和压缩包

  • CMD

    • 容器启动后执行命令;
    • 指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否则它会覆盖CMD命令。
  • EXPOSE
    声明容器在运行时对外提供的服务端口

  • WORKDIR
    指定容器工作路径

  • ENV
    指定容器环境变量

  • ENTRYPINT
    容器入口, ENTRYPOINT和 CMD指令的目的一样,都是指定 Docker容器启动时执行的命令,可多次设置,但只有最后一个有效。

  • USER
    该指令用于设置启动镜像时的用户或者 UID,写在该指令后的 RUN、 CMD以及 ENTRYPOINT指令都将使用该用户执行命令

  • VOLUME
    指定挂载点,该指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可共享给其他容器。当容器中的应用有持久化数据的需求时可以在 Dockerfile中使用该指令。格式为: VOLUME[“/data”]。

构建微服务镜像

基于Eureka构建一个镜像、也可以自己打包一个SpringBoot应用;

  1. 创建空文件夹、在创建Dockerfile文件;
# 基于哪个镜像
From java:8
# 复制文件到容器
ADD microservice-eureka-server-0.0.1-SNAPSHOT.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8761
# 配置容器启动后执行的命令
ENTRYPOINT java ${JAVA_OPTS} -jar /app.jar
  1. 将jar包放入空文件夹下;

  2. 使用docker build构建镜像;
    在这里插入图片描述

  3. 使用docker run运行容器;
    在这里插入图片描述

镜像卷

有很多应用的数据是不可丢失的、例如Mysql、Redis;若是不设置挂载点、当容器关机后、数据就丢失了、导致生产事故; 而Docker通过设置挂载点、将容器的数据同步到宿主机的目录下、当容器重启时、可宿主机数据同步会容器中;

docker run -d -p 8761:8761 -v /log:/container-log microservice-eureka-server:0.0.1

JAVA_OPTS

Dockerfile中设置了${JAVA_OPTS}参数、即运行时、执行JAVA_OPTS参数可指定服务运行参数

# --cap-add=SYS_PTRACE 这个参数是让docker能支持在容器里能执行jdk自带类似jinfo,jmap这些命令,如果不需要在容器里执行这些命令可以不加
docker run -e JAVA_OPTS='-Xms1028M -Xmx1028M -Xmn512M -Xss512K -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M' --cap-add=SYS_PTRACE -d -p 8761:8761 microservice-eureka-server:0.0.1

将微服务镜像发布到远程镜像仓库

我们制作好了微服务镜像,一般需要发布到镜像仓库供别人使用,我们可以选择自建镜像仓库,也可以直接使用docker官方镜像仓库,这里我们选择docker官方镜像仓库:https://hub.docker.com/

  1. 登录
    需要在docke官方镜像仓库注册一个账号, 输入用户名、密码;
[root@centos-7 myapp]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username (yaoyaochengxian): 
Password: 
Login Succeeded

  1. 使用docker tag 给镜像前面加个分组名(一般就是docker hub的账户名)
docker tag microservice-eureka-server:0.0.1 yaoyaochengxian/microservice-eureka-server
  1. 使用docker push 推送到docker hub
docker push yaoyaochengxian/microservice-eureka-server

在这里插入图片描述
这样就推送成功了、可以去dockerhub中查看;
由于dockerhub进不去、先贴个图;
在这里插入图片描述

举报

相关推荐

0 条评论