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

镜像

一种轻量级、可执行的独立软件包,我们把应用程序和配置依赖打包形成一个可交付的运行环境(包括代码、运行时所需的库、环境变量和配置文件等),这个打包好的运行环境就是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(mysql8中注意要更改/etc/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 

 

posted @ 2023-02-04 15:28  天叔  阅读(86)  评论(0编辑  收藏  举报