Docker(一)-安装、架构、业务开发常用命令、Dockerile、镜像卷、镜像仓库

基于业务开发使用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库;

当client 通过pull命令去Docker daemon拉取镜像image时,首先查看images中存不存在对应的镜像, 如果服务端没有, 那么就会去Docker REgistry镜像仓库中拉取一个image镜像到本地(如果仓库中没有,那么通过命令buid创建一个镜像),然后通过run命令创建容器


先有镜像、再有容器、一个镜像可以运行为多个容器;

阿里云配置镜像加速

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

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

vim daemon.json
{
“registry-mirrors”: [“https://m9r2r2uj.mirror.aliyuncs.com”]
}

  1. 重启服务

systemctl daemon-reload
systemctl restart docker

Docker常用命令

镜像常用命令

  1. 查看本地镜像

docker images

  1. 搜索镜像

docker search java

Search命令

index : 仓库地址
name: 仓库名+ 名称
starts : 用户点赞数量
official: 是否为官方,ok则代表官方, 放心使用;
UTOMATED : 基于公开的dockerfile支撑的。

  1. 拉取镜像

docker pull java:8

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

docker images

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

docker rmi repository:tag

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

docker rmi $(docker images -q);

容器常用命令

通过docker run创建容器;

  1. 运行容器

docker run -d -p 81:80 nginx

-d选项:表示后台运行
-P选项:随机端口映射
-p选项:指定端口映射,有以下四种格式。
– ip:hostPort:containerPort
– ip::containerPort
– hostPort:containerPort
– containerPort
–net选项:指定网络模式,该选项有以下可选参数:
–net=bridge:默认选项,表示连接到默认的网桥。
–net=host:容器使用宿主机的网络。
–net=container:NAME-or-ID:告诉 Docker让新建的容器使用已有容器的网络配置。
–net=none:不配置该容器的网络,用户可自定义网络配置。

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

docker ps
参数
-a 查出所有镜像、包括停止的
-f, 用于过滤条件、key-val形式查询
-n, 查出最近几个运行的容器
-l, 查出所有最新版本的容器
-q, 只显示容器ID
-s, 多显示容器大小

[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. 停止容器

普通停止: docker stop 容器ID
强制停止: docker kill 容器ID

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

启动: docker start 容器ID
重启: docker restart 容器ID

在这里插入图片描述

  1. 删除容器

删除已经停止的容器: docker rm 容器ID
删除正在运行的容器: docker rm -f 容器ID

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

docker logs IMAGE_ID

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

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

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

  1. 进入容器

docker exec -it IMAGE_ID /bin/bash

在这里插入图片描述

  • 容器内安装vim、ping、ifconfig等指令

apt-get update
apt-get install vim #安装vim
apt-get install iputils-ping #安装ping
apt-get install net-tools #安装ifconfig

  1. 查看容器所有信息

docker inspect IMAGE_ID

在这里插入图片描述

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进不去、先贴个图;
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/88770.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

App Inventor 2 开发 ChatGPT 对话App

ChatGPT大家应该不会陌生&#xff0c;它的回答内容非常的专业及深入&#xff0c;具有实际的可指导性。我们通过App Inventor 2开发一个简单的对话App&#xff0c;先看效果&#xff1a; App Inventor 2 ChatGPT教育领域对话演示 代码块如下&#xff1a; 用到的核心组件“ChatBot…

kafka--技术文档--spring-boot集成基础简单使用

阿丹&#xff1a; 查阅了很多资料了解到&#xff0c;使用了spring-boot中整合的kafka的使用是被封装好的。也就是说这些使用其实和在linux中的使用kafka代码的使用其实没有太大关系。但是逻辑是一样的。这点要注意&#xff01; 使用spring-boot整合kafka 1、导入依赖 核心配…

Web3和去中心化:互联网的下一个演化阶段

文章目录 Web3和去中心化的定义Web3&#xff1a;去中心化&#xff1a; 为什么Web3和去中心化如此重要&#xff1f;数据隐私和安全&#xff1a;去中心化的创新&#xff1a;去除中间商&#xff1a; Web3和去中心化的应用领域去中心化金融&#xff08;DeFi&#xff09;&#xff1a…

掌握AI助手的魔法工具:解密Prompt(提示)在AIGC时代的应用「上篇」

在当今的AIGC时代&#xff0c;我们面临着越来越多的人工智能技术和应用。其中一个引人注目的工具就是Prompt&#xff08;提示&#xff09;。它就像是一种魔法&#xff0c;可以让我们与AI助手进行更加互动和有针对性的对话。那么&#xff0c;让我们一起来了解一下Prompt&#xf…

长胜证券:货币政策什么意思?

钱银政策是指国家钱银当局经过调控钱银供给量和利率等手法&#xff0c;以到达操控通货膨胀、坚持经济稳定、促进经济增长等目的的一种宏观经济政策。简而言之&#xff0c;钱银政策便是国家中央银行对钱银供给和利率进行调控的政策。那么具体来说&#xff0c;钱银政策到底有哪些…

windwos系统如何创建typecho个人博客并通过内网穿透实现无公网IP访问

文章目录 前言1. 环境安装2.安装Typecho3.安装cpolar内网穿透4. 固定公网地址5.配置Typecho 前言 Typecho是一款PHP语言编写的开源博客程序&#xff0c;它是一个轻量级的内容管理系统&#xff0c;专注于博客领域。支持多用户、多站点、多语言等功能&#xff0c;可以满足不同用…

水库大坝安全监测的主要内容包括哪些?

在水库大坝的实时监测中&#xff0c;主要任务是通过无线传感网络监测各个监测点的水位、水压、渗流、流量、扬压力等数据&#xff0c;并在计算机上用数据模式或图形模式进行实时反映&#xff0c;以掌握整个水库大坝的各项变化情况。大坝安全监测系统能实现全天候远程自动监测&a…

CSS中的vertical-align属性

vertical-align 1.CSS属性 - vertical-align 2.深入理解vertical-align – line boxes This property affects the vertical positioning inside a line box of the boxes generated by an inline-levelelement. 官方文档的翻译&#xff1a;vertical-align会影响 行内块级元素…

Python“牵手”速卖通商品列表数据,关键词搜索速卖通API接口数据,速卖通API接口申请指南

速卖通平台API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范&#xff0c;速卖通API接口是指通过编程的方式&#xff0c;让开发者能够通过HTTP协议直接访问速卖通平台的数据&#xff0c;包括商品信息、店铺信息、物流信息等&#xff0c;从而实现速…

Unity 之transform.LookAt() 调整一个物体的旋转,使其朝向指定的位置

文章目录 总的介绍补充&#xff08;用于摄像机跟随的场景&#xff09; 总的介绍 transform.LookAt 是 Unity 引擎中 Transform 组件的一个方法&#xff0c;用于调整一个物体的旋转&#xff0c;使其朝向指定的位置。通常情况下&#xff0c;它被用来使一个物体&#xff08;如摄像…

HarmonyOS开发:超详细了解项目的工程结构

前言 系列文章目录&#xff1a; HarmonyOS开发第一步&#xff0c;熟知开发工具DevEco Studio 当我们熟练的掌握了DevEco Studio之后&#xff0c;就可以创建项目进行练习了&#xff0c;和市场上大多数IDE一样&#xff0c;DevEco Studio也给我们提供了很多的实例模板&#xff0c…

如何远程管理服务器详解

文章目录 前言一、远程管理类型二、远程桌面三、telnet 命令行远程四、查看本地开放端口 前言 很多公司是有自己的机房的&#xff0c;机房里面会有若干个服务器为员工和用户提供服务。大家可以想想&#xff1a;假设这家公司有上百台服务器&#xff0c;我们作为网络工程师&…

行业追踪,2023-08-24

自动复盘 2023-08-24 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

流媒体服务器SRS的搭建及QT下RTMP推流客户端的编写

一、前言 目前市面上有很多开源的流媒体服务器解决方案&#xff0c;常见的有SRS、EasyDarwin、ZLMediaKit和Monibuca。这几种的对比如下&#xff1a; &#xff08;本图来源&#xff1a;https://www.ngui.cc/zz/1781086.html?actiononClick&#xff09; 二、SRS的介绍 SRS&am…

十一、hadoop应用

1.上传数据集 27.19.74.143,2015/3/30 17:38,/static/image/common/faq.gif 110.52.250.126,2015/3/30 17:38,/data/cache/style_1_widthauto.css?y7a 27.19.74.143,2015/3/30 17:38,/static/image/common/hot_1.gif 27.19.74.143,2015/3/30 17:38,/static/image/common/hot_2…

MyBatid动态语句且模糊查询

目录 什么是MyBtais动态语句&#xff1f;&#xff1f;&#xff1f; MyBatis常用的动态标签和表达式 if标签 Choose标签 where标签 MyBatis模糊查询 #与$的区别 ​编辑 MyBatis映射 resultType resultMap 什么是MyBtais动态语句&#xff1f;&#xff1f;&#xff1f;…

云LIS云实验室信息管理系统源码,支持IIS独立部署,Docker部署

云LIS技术架构&#xff1a;Asp.NET CORE 3.1 MVC SQLserver Redis等。 云LIS系统是医院信息管理的重要组成部分之一&#xff0c;它是一个基于B/S架构开发的实验室信息管理系统。整个系统的运行基于WEB层面&#xff0c;只需要在对应的工作台安装一个浏览器软件&#xff0c;有外…

Codeforces Round #894 (Div.3)

文章目录 前言A. Gift Carpet题目&#xff1a;输入&#xff1a;输出&#xff1a;思路&#xff1a;代码&#xff1a; B. Sequence Game题目&#xff1a;输入&#xff1a;输出&#xff1a;思路&#xff1a;代码&#xff1a; C. Flower City Fence题目&#xff1a;输入&#xff1a…

如何开发智慧农牧软件

【引言】随着科技的不断进步&#xff0c;智慧农牧软件在农业和畜牧业领域发挥着重要作用&#xff0c;帮助农牧业提高生产效率、降低成本、提升农产品质量。本文将深入探讨智慧农牧软件的开发&#xff0c;结合专业性和创新之处&#xff0c;为读者提供一份全面的开发方案。 【…

微服务 Nacos配置热部署

在nacos中添加配置文件 在配置列表中添加配置&#xff0c; 注意&#xff1a;项目的核心配置&#xff0c;需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。 从微服务拉取配置 微服务要拉取nacos中管理的配置&#xff0c;并且与…