Docker 基础

一、快速入门:

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.repo4.然后再按官方的步骤安装

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.hqwc.cn/news/130295.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ffmpeg给视频添加时间字幕

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,我们可以基于ffmpeg对视频进行各种操作。本文主要介绍基于ffmpeg给视频添加字幕,字幕的内容为视频所播放的时间(故需要安装ffmpeg,具…

多项目并行管理:优化协调策略提高效率

多项目同时进行已然是大部分项目管理者面临的现状了。相比于单项目管理,多项目管理可能会出现项目资源分配不均,项目进度监控难以及沟通协作复杂等问题。 可以通过一款灵活高效得项目管理工具,来帮助您进行多项目管理,比如 Zoho …

C#(Csharp)我的基础教程(二)(我的菜鸟教程笔记)-属性和字段的探究与学习

目录 1、字段字段特点:2、属性属性的特点 1、字段 字段是定义在方法外面的变量,是成员变量,主要是为了类的内部数据交换使用,字段一般是用private修饰,也可以用readonly修饰,表示只读字段,其它…

Bytebase 2.9.0 - 支持在工单创建前执行 SQL 审核

🚀 新功能 在工单创建前即可执行 SQL 审核。支持预定义表模板,可在变更或设计 Schema 时应用这些模板。 🎄 改进 增强工单搜索功能,支持通过「实例/数据库/工单类型/创建日期/创建人/发布人/订阅人」搜索。改进了分支功能的交…

flutter开发实战-video_player插件播放抖音直播实现(仅限Android端)

flutter开发实战-video_player插件播放抖音直播实现(仅限Android端) 在之前的开发过程中,遇到video_player播放视频,通过查看video_player插件描述,可以看到video_player在Android端使用exoplayer,在iOS端…

防止SQL注入攻击的综合解决方案

文章目录 摘要背景和危害性防御措施示例代码(Java)示例代码(PHP)示例MySQL命令示例代码(Python)示例代码(C#,使用Entity Framework) 进一步防御SQL注入攻击的措施使用ORM…

链表(2)——带头双向循环链表

🍁一、链表的分类 🌕1.单向或者双向 🌕2.带头或者不带头(有无哨兵) 🌕3.循环或者不循环 🌕4.无头单向非循环链表(常用) 🌕5.带头双向循环链表(常用…

粘性文本整页滚动效果

效果展示 CSS 知识点 background 相关属性综合运用position 属性的 sticky 值运用scroll-behavior 属性运用scroll-snap-type 属性运用scroll-snap-align 属性运用 整体页面效果实现 <div class"container"><!-- 第一屏 --><div class"sec&qu…

Flink之Watermark源码解析

1. WaterMark源码分析 在Flink官网中介绍watermark和数据是异步处理的,通过分析源码得知这个说法不够准确或者说不够详细,这个异步处理要分为两种情况: watermark源头watermark下游 这两种情况的处理方式并不相同,在watermark的源头确实是异步处理的,但是在下游只是做的判断,这…

TypeScript 笔记:基础类型

1 any类型&#xff08;任意值类型&#xff09; 声明为 any 的变量可以赋予任意类型的值。 any类型是Typescript 针对编程时类型不明确的变量使用的一种数据类型&#xff0c;常用于: 变量的值会动态改变 ——>任意值类型可以让这些变量跳过编译阶段的类型检查 let x: any …

12.2 实现键盘模拟按键

本节将向读者介绍如何使用键盘鼠标操控模拟技术&#xff0c;键盘鼠标操控模拟技术是一种非常实用的技术&#xff0c;可以自动化执行一些重复性的任务&#xff0c;提高工作效率&#xff0c;在Windows系统下&#xff0c;通过使用各种键盘鼠标控制函数实现动态捕捉和模拟特定功能的…

爬取微博热榜并将其存储为csv文件

&#x1f64c;秋名山码民的主页 &#x1f602;oi退役选手&#xff0c;Java、大数据、单片机、IoT均有所涉猎&#xff0c;热爱技术&#xff0c;技术无罪 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 获取源码&#xff0c;添加WX 目录 前言1.…