首页 > 数据库 >Docker第二章:Docker镜像、容器卷、单机tomcat、mysql、redis安装

Docker第二章:Docker镜像、容器卷、单机tomcat、mysql、redis安装

时间:2023-02-04 15:47:37浏览次数:31  
标签:容器 tomcat -- redis zyt 镜像 Docker docker

镜像

一种轻量级、可执行的独立软件包,我们把应用程序和配置依赖打包形成一个可交付的运行环境(包括代码、运行时所需的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件

 

整体流程

搜索镜像——>拉取镜像——>查看镜像——>启动容器——>停止容器——>移除容器 

 

镜像分层

UnionFS(联合文件系统):是一种分层、轻量级且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统是Docker镜像的基础,镜像可以通过分层来进行继承。

 

系统启动引导加载过程

bootfs(boot file system)主要包含bootloader(加载器)和kernel(内核), bootloader(加载器)主要是引导加载kernel(内核), Linux刚启动时会加载bootfs文件系统,Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含bootloader(加载器)和kernel(内核)。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs(平时开机即启动系统时需要用到bootloader(加载器),开机的速度非常的久,但Docker的容器的内核用的是主机的内核,主机已经启动内核,容器不需要再用到bootloader(加载器)来启动内核,所以Docker容器的启动速度非常的快)

rootfs
rootfs (root file system),在bootfs之上。包含的就是典型Linux系统中的/dev, /proc, /bin, /etc等标准目录和文件,简单来说rootfs就是各种不同的操作系统发行版,比如Ubuntu , Centos等等。


Docker commit 命令——以commit centos(添加vim)为例

docker commit -m="提交内容" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

 

1:pull下一个原生的ubuntu

2:docker run -it ubuntu

3:apt-get update

4:apt-get -y install vim 

5:docker commit -m="add vim cmd" -a="zyt" 38c41cc5c04e zyt/myubuntu:1.3

6:docker images

7:docker run -it 57f3713ff043 /bin/bash

 

镜像推送

 

推送镜像上阿里云、拉取镜像

1:创建阿里云上公开仓库

2:参考https://cr.console.aliyun.com/repository/cn-hangzhou/zhuyitian8/myubuntu/details

3:docker login --username=xxxx registry.cn-hangzhou.aliyuncs.com

4:docker tag 57f3713ff043 registry.cn-hangzhou.aliyuncs.com/zhuyitian8/myubuntu:1.3

5:docker push registry.cn-hangzhou.aliyuncs.com/zhuyitian8/myubuntu:1.3

6:docker rmi -f 57f3713ff043

7:docker pull registry.cn-hangzhou.aliyuncs.com/zhuyitian8/myubuntu:1.3

 

私有云

Docker Registry是官方提供的工具,可以用于构建私有镜像仓库

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录  --name=容器名 镜像名

 

1:docker pull registry

2:docker run -d -p 5000:5000 -v /zyt/myregistry/:/tmp/registry --privileged=true registry

3:docker ps,确认本地私有库已运行

4:docker run -it ubuntu /bin/bash(id:377f336bd157)

5:apt-get update

6:apt-get install net-tools

7:ifconfig——确认上述安装成功

8:docker commit -m "ifconfig add cmd" -a="zyt" 377f336bd157 zytubuntu:1.2

9:docker images——确认镜像commit成功

10:docker stop 377f336bd157

11:curl -XGET http://10.0.16.8:5000/v2/_catalog——中间的10.0.16.8为本机的ip,确认仓库为空

12:docker tag zytubuntu:1.2 10.0.16.8:5000/zytubuntu:1.2——docker tag 镜像:Tag Host:Port/Repository:Tag

13:修改配置文件使之支持http

  1:cat /etc/docker/daemon.json

  2:添加以下语句——"insecure-registries": ["10.0.16.8:5000"]

14:systemctl restart docker——重启docker

15:systemctl status docker——查看状态

16:docker run -d -p 5000:5000 -v /zyt/myregistry/:/tmp/registry --privileged=true registry

17:docker push 10.0.16.8:5000/zytubuntu:1.2

18:curl -XGET http://10.0.16.8:5000/v2/_catalog——发现多出了一个镜像

19:docker rmi -f 10.0.16.8:5000/zytubuntu:1.2

20:docker rmi -f zytubuntu:1.2

21:docker pull 10.0.16.8:5000/zytubuntu:1.2

22:docker run -it 10.0.16.8:5000/zytubuntu:1.2 /bin/bash

23:docker ps

 

注意事项

 

容器卷

宿主机绝对路径目录与容器内目录好比链接,在其中一个新建文件等,另一个也会有

以下-v代表整容器卷,:rw代表宿主机目录可读可写,容器卷目录可读可写;:ro代表容器卷内只可读

docker run -it --privileged=true -v 宿主机目录:容器内目录:rw --name=容器名 镜像名

 

1:docker run -it --privileged=true -v /zyt/links:/tmp/links:rw ubuntu /bin/bash

2:docker inspect 容器ID

3:touch /tmp/links/aa.txt——执行过后,主目录的/zyt/links也会生成aa.txt文件

 

容器继承

docker run -it --privileged=true -v 宿主机目录:容器内目录:rw --volumes-from 父类名 --name=容器名 镜像名

 

安装tomcat

1:查找tomcat镜像

2:docker pull tomcat

3:docker images确认镜像是否拉取成功

4:docker run -it -p 8080:8080 --name=t1 tomcat

5:rm -r webapps

6:mv webapps.dist/ webapps

7:以上为拉取最新版tomcat

8:docker pull billygoo/tomcat8-jdk8——免修改版拉取

9:docker run -d -p 8080:8080 --name=mytomcat8 billygoo/tomcat8-jdk8——返回a2c7f61d5408c486f389ae40cc1d2c5589505721ee2a9ec164768decc

10:docker exec -it a2c7f61d5408c486f389ae40cc1d2c5589505721ee2a9ec164768decc13ef5be /bin/bash

11:网页打开IP:8080,确认tomcat8启动成功

 

安装mysql(以安装5.7为例)

1:docker pull mysql:5.7

2:mysqld stop service

3:netstat -tanlp——确认3306端口进程是否完毕

4:kill 1124

5:docker run -p 3306:3306 --privileged=true -v /zyt/mysql/log:/var/log/mysql -v /zyt/mysql/data:/var/lib/mysql -v /zyt/mysql/conf:/etc/mysql/conf.d  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7——返回be36d59410db

6:vim /zyt/mysql/conf/my.cnf,输入以下内容,为此解决中文乱码问题

[client]
default_character_set = utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

7:docker restart mysql容器名

 

安装Redis(版本6.2.7,因本机redis版本为6.2.7,与redis.conf有关,需保持双方版本一致)

1:docker pull redis:6.2.7

2:cp /export/server/redis-6.2.7/redis.conf /zyt/redis/——拷贝现有机器redis.conf到宿主机数据卷目录

3:拷贝过来的redis.conf文件需要做以下操作

  1:注释掉bind 127.0.0.1

  2:设置daemonize no——>将yes改为no

  3:protected-mode no——>将yes改为no(非本机连接redis需关)

4:若6379本地redis在用,则使用ps -ef | grep redis、kill -9 xxx杀掉对应端口进程

5:docker run -p 6379:6379 --name myr3  --privileged=true -v /zyt/redis/redis.conf:/etc/redis/redis.conf -v  /zyt/redis/data:/data redis:6.2.7 redis-server /etc/redis/redis.conf

6:docker exec -it myr3 /bin/bash

7:redis-cli 

 

标签:容器,tomcat,--,redis,zyt,镜像,Docker,docker
From: https://www.cnblogs.com/tianshu/p/17079855.html

相关文章

  • 【Redis场景拓展】秒杀问题-全局唯一ID生成策略
    全局唯一ID为什么要使用全局唯一ID:当用户抢购时,就会生成订单并保存到订单表中,而订单表如果使用数据库自增ID就存在一些问题:受单表数据量的限制id的规律性太明显场景......
  • Docker搭建本地私有仓库
    一、搭建本地私有仓库有时候使用DockerHub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似。使用私有仓库有......
  • Redis 面试题
    1持久化1.1RDBfork一个子线程来将数据进行持久化,使用写时复制的技术,如果主线程要对数据进行修改,那么就复制一份,交给主线程修改,原来的那一份交给子线程来复制到RDB文......
  • 什么是Docker、Docker架构 及 Docker 安装卸载
    (目录)初识Docker1.什么是Docker微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生......
  • Docker的基本镜像操作、容器操作 及 数据卷挂载管理
    (目录)Docker的基本操作1.镜像操作1.1.镜像名称首先来看下镜像的名称组成:镜像名称一般分两部分组成:[repository]:[tag]。在没有指定tag时,默认是latest,代表最新版本......
  • 隆重介绍:Buddy全新Docker CLI操作
    自2013年推出以来,Docker一直是软件开发人员的福音。一个隔离独立的测试环境,一个在整个团队中共享工具和依赖项的独立运行时且快速与易用,有保证的Kubernetes可扩展性——所有......
  • Redis缓存穿透、击穿、雪崩
    文章目录​​缓存穿透​​​​缓存雪崩​​​​缓存击穿​​​​代码实战部分​​​​缓存击穿实战代码封装​​​​缓存穿透解决​​Redis目前是非常流行的缓存数据库,缓存......
  • Docker面试题
    常规题:1.  Docker 和虚拟机有啥不同?答:Docker 是轻量级的沙盒,在其中运行的只是应用,虚拟机里面还有额外的系统。2.    Docker安全么?答:Docker 利用了Linux  内......
  • 如何正确使用docker run -i -t -d 参数
    如何正确使用dockerrun-i-t-d参数在使用dockerrun命令时,我们经常会使用到-i、-t和-d参数,那么这几个参数的作用究竟是什么呢,这篇文章简单讲一下。选项说明官方文档......
  • docker 启动 jenkins 挂载目录权限问题 Permission denied
    通过docker挂载目录的jenkins,查看jenkins日志发现存在一些文件无法写入或者​​Permissiondenied​​这样的异常错误,基本可以判定是文件所有权问题。比如你宿主机挂......