大数据之Docker学习笔记

这篇具有很好参考价值的文章主要介绍了大数据之Docker学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装Docker

1.先卸载旧版

 yum remove docker \
     docker-client \
     docker-client-latest \
     docker-common \
     docker-latest \
     docker-latest-logrotate \
     docker-logrotate \
     docker-engine

2.配置Docker的yum库

首先要安装一个yum工具

 yum install -y yum-utils

安装成功后,执行命令,配置Docker的yum源:

 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

最后,执行命令,安装Docker

 yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

配置开机自启和启动Docker

 # 设置开机自启 
 systemctl enable docker
 # 启动Docker 
 systemctl start docker

命名别名

Docker的有些命令特别复杂,我们可以给它设置别名简化输入,就不用每次都输入那么多了.

1.进入 .bashrc 中修改配置( .bashrc 是 root 下的隐藏文件)

 vim ~/.bashrc

大数据之Docker学习笔记,大数据,docker,学习

2.source一下,让这个文件生效.

 source ~/.bashrc

常用命令

新建容器并启动

注意: docker,容器使用后台运行,就必须有一个前台进程,docker发现没有应用,就会自动停止

 docker run [可选参数] image
 ​
 # 参数说明
 --name="Name"       容器名字
 -d                  后台方式运行
 -it                 使用交互方式运行,进入容器查看内容
 -p                  指定容器的端口 
     -p  ip:主机端口:容器端口
     -p  主机端口:容器端口(常用)
     -p  容器端口
 -P                  随机指定端口
查看容器中的进程信息
 docker top 容器id

大数据之Docker学习笔记,大数据,docker,学习

查看镜像的元数据
 docker inspect 容器id

大数据之Docker学习笔记,大数据,docker,学习

进入当前正在运行的容器

方法1:

进入容器后开启一个新的终端,可以在里面操作(常用)

 docker exec -it 容器id /bin/bash

大数据之Docker学习笔记,大数据,docker,学习

方法2:

进入容器正在执行的终端,不会启动新的进程.

 docker attach 容器id

大数据之Docker学习笔记,大数据,docker,学习

从容器内拷贝文件到主机上
 docker cp 容器id:/容器中的文件路径 /主机的路径

大数据之Docker学习笔记,大数据,docker,学习

容器数据卷

数据卷是一个可供一个或多个容器使用的特殊目录,Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来, 那么当容器删除后,数据自然也就没有了。 为了能保存数据在Docker中使用卷。

卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。

使用数据卷

直接使用命令来挂载 -v,这样之后主机的这个目录跟容器内的这个目录是绑定的,文件不管是容器内的还是主机上的进行修改后,对应的容器或者是主机目录的目录也会改变.

 docker run -it -v 主机目录:容器内目录
查看容器对应元数据

可以在Mounts节点查看建立的数据卷信息。

 docker inspect 容器id

安装MySQL

即使最后我们将docker rm mysql,删除了mysql的这个images,本地绑定的数据也不会丢失.

1.获取镜像

 docker pull mysql:5.7

2.运行容器进行挂载

安装启动mysql,需要配置密码.启动

-d 后台运行 -p 端口映射 -v 卷挂载 –name 容器名字

 [root@hadoop102 ~]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

大数据之Docker学习笔记,大数据,docker,学习

具名和匿名挂载

匿名挂载

-v 容器内路径

 [root@hadoop102 data]# docker run -d -P --name nginx02 -v /etc/nginx nginx
查看本地所有的镜像
 [root@hadoop102 data]# docker volume ls

这里查看到一长串的就是匿名挂载,因为我们在-v的时候只写了容器内的路径,没有写容器外的路径.

大数据之Docker学习笔记,大数据,docker,学习
具名挂载

通过-v, 卷名:容器内路径,大多数情况下使用具名挂载.

所有没有指定目录的情况下都是在/var/lib/docker/volume/xxx/_data目录下

 [root@hadoop102 data]# docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx nginx
如何确定是具名挂载还是匿名挂载,还是指定路径挂载
 -v  容器内路径               # 匿名挂载
 -v  卷名:容器内路径           # 具名挂载
 -v  /宿主机路径::容器内路径    # 指定路径挂载

Dockerfile

Dockerfile就是构建docker镜像的构建文件,命令脚本.

1.创建一个dockerfile文件

名字可以随机,建议Dockerfile

这个挂载了两个目录.这里的每一个命令就是镜像的一层.

文件中的内容:

大数据之Docker学习笔记,大数据,docker,学习

构建docker镜像
 docker build -f /home/docker-test-volume/doc

大数据之Docker学习笔记,大数据,docker,学习

数据卷容器

容器数据共享

docker02是继承docker01的数据的,docker01创建的内容会同步到docker02上.

—volumes-from相当于Java中的继承,继承了docker01,只要通过这个就可以实现容器间的数据共享.

容器之间配置信息的传递,容器卷容器的生命周期一直持续到没有容器使用就结束了.

但是如果持久化本地,本地的数据是不会删除的.

 [root@hadoop102 ~]# docker run -it --name docker01 hcq/centos:1.0
 [root@hadoop102 ~]# docker run -it --name docker02 --volumes-from docker01 hcq/centos:1.0


大数据之Docker学习笔记,大数据,docker,学习

DockerFile

Dockerfile就是构建docker镜像的构建文件,命令脚本.

构建步骤:
  1. 编写一个dockerfile文件

  2. Docker build构建成为一个镜像

  3. docker run 运行镜像

  4. docker push 发布镜像(DockerHub,阿里云镜像仓库)

Dockerfile的指令
 FROM            # 基础镜像,一切都是从这里开始
 MAINTAINER      # 镜像是谁写的,姓名+邮箱
 RUN             # 镜像构建的时候需要运行的指令
 ADD             # 步骤:tomcat镜像,这个tomcat压缩包,添加内容
 WORKDIR         # 镜像的工作目录
 VOLUME          # 挂载的目录
 EXPOSE          # 保留端口配置
 CMD             # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
 ENTRYPOINT      # 指定这个容器启动的时候要运行的命令,可以追加命令
 ONBUUILD        # 当构建一个被继承 DockerFile 这个时候就会运行ONBUILD 的指令,触发指令
 COPY            # 类似ADD,将我们文件拷贝到镜像中
 ENV             # 构建的时候设置环境变量
创建一个自己的centos

1.编写Dockerfile文件

大数据之Docker学习笔记,大数据,docker,学习

2.通过这个文件构建镜像

命令 docker build -f dockerfile文件路径 -t 镜像名:[tag]

大数据之Docker学习笔记,大数据,docker,学习

CMD 和 ENTRYPOINT 的区别

docker run后面的参数会将CMD指定的参数进行覆盖。

ENTRYPOINT与CMD的区别是不可以被docker run 后的参数覆盖,会把docker run后面的参数传递给ENTRYPOINT指定的参数。

 CMD             # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
 ENTRYPOINT      # 指定这个容器启动的时候要运行的命令,可以追加命令

发布自己的镜像

1.在服务器上登录

 [root@hadoop102 hcq]# docker login -u sooso

大数据之Docker学习笔记,大数据,docker,学习

2.登录完毕后就可以提交镜像了docker push

注意:这里需要先将这里的文件使用tag打一个标签,然后再使用push推送,否则会出现权限不够的情况.

大数据之Docker学习笔记,大数据,docker,学习

遇到的问题

CentOS 执行yum命令报错【错误:为仓库 ‘appstream‘ 下载元数据失败: ...】

CentOS 执行yum命令报错【错误:为仓库 ‘appstream‘ 下载元数据失败: ...】-CSDN博客

原因: 是因为centos版本是centos8,所以yum在线安装这些的时候需要配置yum源.

大数据之Docker学习笔记,大数据,docker,学习

解决方法:

将源文件FROM 后面的基础centos系统的标签tag加上7

 FROM centos:7

大数据之Docker学习笔记,大数据,docker,学习

Docker网络

清空环境

删除所有容器和镜像

 [root@hadoop102 ~]# docker rm -f $(docker ps -aq)
 [root@hadoop102 ~]# docker rmi -f $(docker images -aq)

大数据之Docker学习笔记,大数据,docker,学习

原理

我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡 docker0桥接模式,使用的技术是evth-pair技术.每次启动一个docker容器都会就会多一对网卡.

大数据之Docker学习笔记,大数据,docker,学习

- -link

这里无法识别这里的tomcat01或者是服务名不认识.但是已经开始不建议使用–link了而是使用自定义网络.

大数据之Docker学习笔记,大数据,docker,学习

这里使用–link进行绑定tomcat02的网络

这里的原理是因为在/etc/hosts中tomcat03后面绑定转发的是tomcat02

大数据之Docker学习笔记,大数据,docker,学习

自定义网络

查看所有的docker网络
 [root@hadoop102 ~]# docker network ls
创建一个自定义网络

--driver bridge 桥接网络

--subnet 192.168.0.0/16 子网地址

--gateway 192.168.0.1 网关地址

 [root@hadoop102 ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

大数据之Docker学习笔记,大数据,docker,学习

connect网络连通

让mynet网络连接上tomcat01,联通之后就是将tomcat01网络放在mynet网络下.

 [root@hadoop102 ~]# docker network connect mynet tomcat01

使用[root@hadoop102 ~]# docker network inspect mynet 命令查看mynet网络发现下面多了一个tomcat01.

大数据之Docker学习笔记,大数据,docker,学习

遇到的问题

OCI runtime exec failed: exec failed: unable to start container process: exec: "ip": executable file not found in $PATH: unknown

大数据之Docker学习笔记,大数据,docker,学习

先进入容器内

 [root@hadoop102 ~]# docker exec -it tomcat01 /bin/bash

更新apt并安装iproute2

 root@97ac2452db22:/usr/local/tomcat# apt update && apt install -y iproute2

退出容器重新执行

 docker exec -it ip addr

大数据之Docker学习笔记,大数据,docker,学习文章来源地址https://www.toymoban.com/news/detail-769116.html

到了这里,关于大数据之Docker学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Docker 学习笔记】Docker架构及三要素

    Docker 是一个开源的应用容器引擎,基于Go语言 并遵从Apache2.0协议开源; Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 1. Docker 客户端和服务器 Docker 是客户-服务器( C/S )架构的程序。

    2024年02月15日
    浏览(35)
  • Docker Dockerfile Docker-compose学习笔记

    Docker目前支持Centos7及以后的版本。64位操作系统,内核版本至少为3.10 安装软件源,以及devicemapper存储类型 添加Docker yum源 安装Docker 启动Docker 测试是否能获取镜像 查看获取的镜像 生效配置信息 安装Docker需要保证你的电脑开启虚拟化 进入任务管理器→点击性能→看一下CPU是

    2024年02月12日
    浏览(45)
  • Docker学习笔记23

    Docker Swarm架构:         Swarm中以集群(Cluster)为单位进行管理,支持服务层面的操作。         集群是Swarm所管理的对象。 基本概念: 节点(Node)为Swarm集群中的一个Docker Engine实例。其中管理节点(Manage Node)负责Swarm集群管理并向工作节点分配任务。工作节点(Work No

    2024年02月12日
    浏览(37)
  • Docker学习笔记17

    跨主机容器间网络: 实现跨主机容器间通信的工具: 1)Pipework 2)Flannel 3)Weave 4)Open V Switch (OVS) 5)Calico 1. Weave: 在每个宿主机上布置一个特殊的route的容器,不同宿主机的route容器连接起来,route拦截所有普通容器的ip请求,并通过 udp包 发送到其它宿主机上的普通容器

    2024年02月12日
    浏览(29)
  • Docker学习笔记12

    Docker Build创建指定应用容器镜像: docker build: Build an image from a Dockerfile. 从Dockerfile文件创建构建一个镜像。 定义: 按照Dockerfile文件所定义内容创建新的临时性容器,把Dockerfile中所定义的每行命令在临时容器中执行,然后生成镜像分层,所有命令执行结束后,生成一个新的

    2024年04月12日
    浏览(29)
  • Docker 容器学习笔记

    容器的由来 早先,虚拟机通过操作系统实现相互隔离,保证应用程序在运行时相互独立,避免相互干扰。但是操作系统又笨又重,耗费资源严重: 容器技术只隔离应用程序的运行时环境但容器之间共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配

    2024年02月11日
    浏览(42)
  • Docker学习笔记21

    案例三:使用容器运行一个wordpress应用:         语言开发环境(PHP)         数据库 第一步:创建一个工程目录: 第二步:创建一个docker-compose.yaml文件: 我们再理解下depends_on: 这个是依赖的意思。 --links:容器的互联,是一种让多个容器中的应用进行快速交互的方式,

    2024年02月13日
    浏览(47)
  • Docker学习笔记22

    Docker swarm:         Docker swarm 是Docker Host(Docker主机)集群管理工具                 其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也比Kubernetes更少一些。

    2024年02月13日
    浏览(31)
  • 狂神docker学习笔记

    在学习 Docker 前先把 Linux 基本命令复习一下:狂神 Linux 学习笔记 1.Docker 为什么会出现? 一款产品:开发上线两套环境!应用环境,应用配置! 开发一运维。问题:我在我的电脑上可以运行!版本更新,导致服务不可用!对于运维来说,考验就十分大? 环境配置是十分的麻

    2024年02月07日
    浏览(44)
  • Docker学习笔记19

    Docker Compose 作用: 在一个文件中定义复杂的容器应用之间的关系,用一个命令即可执行。 YAML:类似html、xml、标记语言。 YAML格式文件,资源清单文件 docker compose 命令使用yaml文件来启动容器。         start stop         down up (关闭删除容器和启动新容器) docker compose 定义

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包