Docker 基础

news2024/11/15 23:05:02

一、快速入门:

1.Docker的安装

安装docker引擎

官方网址:Install Docker Engine on CentOS | Docker Docs

朋友们,有坑,千万不要用官方的仓库,就是下面这一步

记得用国内的镜像源:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

下图是官方的步骤,第二行代码应换成国内的镜像源

如果,不小心用了国外的镜像源,记得按下面步骤

1.进入  /etc/yum.repos.d  目录

2. 删除与docker相关的文件

3.配置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.然后再按官方的步骤安装

2.部署MySql

docker run -d \
  --name myFirst \
  -p 3000:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql


-d    是让容器在后台运行,一般与run是配套的。


--name    给容器命名,必须唯一
--p       设置端口映射,访问主机的3000端口 映射到 访问容器的3306端口

--e        暂时不清楚?设置时区?

--e       也不太清楚?得给mysql设置个初始化密码



我懂了  
-e  KEY=VALUE          意思是设置环境变量

不同的镜像 -e不同 ,看docker hub 上镜像的说明

通过docker ps 可以看到,myFirst这个容器正在运行

此时你就可以 进入容器中 ,去登录mysql客户端

docker exec -it myFirst bash

我们也可以在linux虚拟机上去访问容器里的数据库,因为我们设置了端口映射,当访问本机的3000端口时,回去访问容器的3306端口。但记得 在连接,记得加 -h ip地址  ,虽然是在本机上操作,但还是要用上本机的ip地址。

 

3.镜像和容器

4.命令解读

一般docker run 和 -d 选项是配套的。

下面是真正的命名规范

5.案例 拉取nginx

docker的容器给我们准备的是 所必备的最小运行资源,因此进入容器内后,并不能使用vi 进入vim编辑器。

1.运行容器

2.查看容器

当使用 docker inspect 容器name   是查看某个容器的详细信息

当使用 docker volume inspect   是查看数据卷的详细信息,可以取看它本机上的挂载点在哪里。

3. 查看数据卷详细信息( 当不指定路径时,本机挂载点 默认是在  /var/lib/docker/volumes/    这个路径下)

4.当修改挂载点下的文件后,容器内相应的文件也被修改。

数据卷就像是一个桥梁

当我测试  docker volume prune 这个指令时,它会把 被删除容器的 数据卷清除 ,释放磁盘空间。

6.mysql 容器的数据挂载

遇到的问题:

1.final shell无法正常上传文件 。因为我使用的是普通用户,普通用户只能在自己的home/用户名/目录下进行上传,是无法去 其他路径,即root用户的范围来上传文件。

解决:使用root 用户去连接。

7.Dockerfile 语法

分层,可以让我们去共享某一个层。

copy时,docker会为我们去创建目录

下面这段代码,让我回忆了很多,我重新回顾了环境变量,软链接。

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录、容器内时区
ENV JAVA_DIR=/usr/local
ENV TZ=Asia/Shanghai
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 设定时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 指定项目监听的端口
EXPOSE 8080
# 入口,java项目的启动命令
ENTRYPOINT ["java", "-jar", "/app.jar"]

下面来回顾软连接:

我忘记 -s -f  的含义, 但我从来不知道 -n是什么意思 

我的理解:解引用时,会指向确切的文件。即$TZ 会被解析成  具体的文件 ,然后修改$TZ 的值后,软链接仍然指向原来的值,可以看看下面第3张图。

8.自定义镜像

这个 句点 不能缺

实践:

在创建并运行容器时,需要指定其 名字:版本

9. 网络

使用自定义网络,才可以通过 容器名 ping通

当将容器连接到 自定义网络上时 ,有两种方式。

1.将运行时的容器连接到指定网络。使用docker  network create

2.在创建容器时连接到指定网络。使用 --network 关键字

 

10.项目部署

一个容器可以配置多个端口映射

番外篇:硬啃英语文档

1.Docker overview 

  :响应式部署和扩展

Docker Architecture

守护进程

客户端

Docker registries: Docker 注册表

A Docker registry stores Docker images. Docker Hub is a public registry that anyone can use, and Docker looks for images on Docker Hub by default. You can even run your own private registry.

When you use the docker pull or docker run commands, Docker pulls the required images from your configured registry. When you use the docker push command, Docker pushes your image to your configured registry.

Docker Objects

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sectigo有便宜的泛域名SSL证书吗

Sectigo是国际性的CA认证机构,在多个国家设有分支机构和办事处,为了提高SSL证书的审核速度,Sectigo成立了亚太审核中心,快速审核国内的SSL证书申请,为客户提供全方位的数字证书和网络安全解决方案。Sectigo的使命是通过…

纸巾餐盒经营配送小程序商城的作用是什么

对餐饮行业来说,纸巾餐盒消耗非常快,需求比较旺盛,对普通家庭/食堂来讲也有较高的需求,可以说是必需品。也因此,市场中纸巾餐盒厂家及经销商不少: 1、拓客难、品牌传播难 纸巾餐盒可以零售也可以批发&…

linux安装java环境(jdk安装,java安装,通过安装包方式)

1:官网下载jdk-8u381-linux-x64.tar.gz安装包https://www.oracle.com/java/technologies/downloads/#java8 2:复制安装包到/opt目录下,使用命令解压安装包 tar -xvf jdk-8u341-linux-x64.tar.gz3:要在 /usr 目录下创建一个软链接…

@MultipartConfig注解

前言: 在学习Javaweb的Servlet文件上传和下载的过程中,我们会遇到一个特殊的注解---MultipartConfig。 MultipartConfig的适用情况: 1.文件上传: 当您的应用程序需要接收用户上传的文件时,可以在相应的 Servlet 上使用 Multipart…

一种超轻量级神经网络加速器实现

一 目标 针对资源受限,SWaP敏感的边缘计算应用场景,探索稳健而高效的计算架构,算法和应用。 并完成超轻量级神经网络加速器设计和验证。 1、实时性能:30~50FPS 2、超低功耗:mW级别 3、资源受限:包括…

学习记忆——数学篇——案例——代数——方程——一元二次方程

重点记忆法 a x 2 b x c 0 ax^2bxc0 ax2bxc0 整体可以由: 根 ⟹ \Longrightarrow ⟹ △ △ △ ⟹ \Longrightarrow ⟹ 求根公式 x 1 , 2 x_{1,2} x1,2​ − b △ 2 a \frac{-b\sqrt{△}}{2a} 2a−b△ ​​ ⟹ \Longrightarrow ⟹ 韦达定理 ⟹ \Longrightarr…

Acwing.4742 电(动态规划)

题目 某城市有 N 个电力节点,编号 1∼N。 这些电力节点形成的电力网络,可以看作一个 N 个节点 N−1 条边的连通图。 每个电力节点都有一个固定的电容,其中第 i 个节点的电容为 Ai。 现在,可以选择其中一个节点进行供电&#x…

婚礼避坑指南(tips分享)

1️⃣自己买婚纱很可能比租的更省钱,更时髦。我是先去婚纱店看,玲琅满目的婚纱让我看花了眼,试穿了几件重工的婚纱感觉并不是自己喜欢的款式,穿着也不舒服,而且租金都要几千。自己在京东上400买的反倒特别满意。 2️…

apipost测试工具的基本使用

目录 什么是 API Post? 步骤1:下载 步骤2:登录 步骤3:新建目录 步骤4:新建接口 步骤5:参数 步骤6:参数的导入导出 一.先找一个有参数的接口进行测试 二.新建一个接口 步骤7&#xff1…

2023年【司钻(钻井)】考试报名及司钻(钻井)试题及解析

题库来源:安全生产模拟考试一点通公众号小程序 司钻(钻井)考试报名考前必练!安全生产模拟考试一点通每个月更新司钻(钻井)试题及解析题目及答案!多做几遍,其实通过司钻(…

活动预告|DeFi和zkLogin专题Workshop AMA

Sui流动性质押黑客松于10月初落下帷幕,但随着Sui网络TVL的不断增加,大家对Sui生态DeFi的讨论持续增加。据DeFiLlama统计,截止10月10日Sui网络TVL突破4000万USD,不断创历史新高!zklogin于9月底正式上线,用户…

C++ - 包装器

包装器 在 C 当中可能会有各种各样的可调用类型,比如 函数指针,仿函数,lambda 等等,那么这么多的可调用类型,我们在使用的时候就会犯迷糊,那可不可以统一控制一下呢? function包装器&#xff…

FaceFusion:探索无限创意,创造独一无二的面孔融合艺术!

FaceFusion:探索无限创意,创造独一无二的面孔融合艺术! 它使用先进的图像处理技术,允许用户将不同的面部特征融合在一起,创造有趣和令人印象深刻的效果。这个项目的潜在应用包括娱乐、虚拟化妆和艺术创作,…

GIS 算法原理记录总结二:距离、方位角、沿线上的点的扩展算法及其使用(一)

GIS 算法原理记录总结二:距离、方位角、沿线上的点的扩展算法及其使用(一) 在了解了距离算法、方位角算法之后,就可以根据距离、方位角进行一些扩展应用。这里罗列如下: 一、计算线段中点(turf.midpoint&…

❋JQuery的快速入门2 jq动画与案例

目录 jq自定义动画【animate,stop】 案例1:大小图标 案例2:动态增加删除数据 案例3:动态留言与删除 案例4:动态进度条 案例5:点击三个相同的图片进行消除 jq自定义动画【animate,stop】 a…

艺术字画雕刻经营配送商城小程序的作用是什么

一副传神且精致的绘画/雕塑品不仅具有很好的观赏性,更具备售卖属性,当然由于产品本身本身的局限性,无论开店还是线上朋友圈推广,都难有效果。 通过【雨科】平台搭建字画雕刻经营商城,将所有产品线上售卖,电…

内网渗透面试问题

文章目录 1、熟悉哪些域渗透的手段2、详细说明哈希传递的攻击原理NTLM认证流程哈希传递 3、聊一下黄金票据和白银票据4、shiro反序列化漏洞的形成原因,尝试使用burp抓包查看返回包内容安装环境漏洞验证 5、log4j组件的命令执行漏洞是如何造成的6、画图描述Kerberos协…

vue 组件拖拽vue-slicksort应用

1.引入 import { SlickList, SlickItem, HandleDirective } from vue-slicksort 2.注册组件 components: {SlickList,SlickItem}, 3.应用<slick-listv-model"formData.goods"axis"xy":use-drag-handle"true"input"slickListSort"so…

vue3 添加水印效果

效果图 水印组件 <template><div class"elementdiv" ref"waterMarkRef"><slot></slot></div> </template><script setup> import { ref, onMounted, nextTick } from "vue"; import Watermark from …

Mock工具之Moco使用

一、什么是Mock mock英文单词有愚弄、嘲笑、模拟的意思&#xff0c;这里主要是模拟的意思 二、什么是Moco 开源的、基于java开发的一个mock框架支持http、https、socket等协议 三、Mock的特点 只需要简单的配置request、response等即可满足要求 支持在request 中设置headers、…