当前位置: 首页 > news >正文

建设家具网站百度医疗网站建设

建设家具网站,百度医疗网站建设,网站网页建设一般多少钱,网站推广工做计划范本Docker与微服务实战——基础篇 第一章 Docker 简介1.1 docker 理念1.2 容器与虚拟机比较 第二章 Docker 安装2.1 前提说明2.2 Docker的基本组成2.2.1 镜像#xff08;image#xff09;2.2.2 容器#xff08;container#xff09;2.2.3 仓库#xff08;repository#xff… Docker与微服务实战——基础篇 第一章 Docker 简介1.1 docker 理念1.2 容器与虚拟机比较 第二章 Docker 安装2.1 前提说明2.2 Docker的基本组成2.2.1 镜像image2.2.2 容器container2.2.3 仓库repository2.2.4 小结 2.3 Docker 工作原理2.4 Docker运行的基本流程2.5 CentOS 7 安装 Docker2.6 阿里云镜像加速 第三章 Docker 常用命令3.1 帮助启动类命令3.2 镜像命令3.2.1 docker images——列出本地主机上的镜像3.2.2 docker search——搜索镜像3.2.3 docker pull——下载镜像3.2.4 docker system df ——查看镜像/容器/数据卷所占的空间3.2.5 docker rmi —— 删除镜像 3.3 容器命令3.3.1 新建启动容器3.3.2 列出当前所有正在运行的容器3.3.3 退出容器3.3.4 启动已停止运行的容器3.3.5 停止容器3.3.6 强制停止容器3.3.7 删除已停止的容器3.3.8 启动守护式容器后台服务器***3.3.9 查看容器日志3.3.10 查看容器内运行的进程3.3.11 进入正在运行的容器并以命令行交互3.3.12 从容器内拷贝文件到主机上3.3.13 导入和导出容器 第四章 Docker 镜像4.1 镜像是什么4.2 分层的镜像4.3 UnionFS联合文件系统4.4 docker 镜像加载原理4.5 为什么 docker 镜像要采用这种分层结构4.6 Docker镜像commit操作命令 第五章 本地镜像发布到阿里云5.1 将本地镜像推送到阿里云5.2 将阿里云上的镜像下载到本地 第六章 本地镜像发布到私有库第七章 Docker容器数据卷7.1 容器数据卷的含义7.2 容器数据卷的功能7.3 数据卷的案例7.3.1 宿主和容器之间映射添加容器卷7.3.2 读写规则映射添加说明7.3.3 卷的继承和共享 第八章 Docker常规安装简介8.1 安装tomcat8.2 安装mysql8.3 安装redis 第一章 Docker 简介 1.1 docker 理念 Docker是内核级虚拟化。 Docker是基于Go语言实现的云开源项目。 Docker是一个C/S模式的架构后端是一个松耦合架构众多模块各司其职。 Docker解决了运行环境和配置问题的软件容器方便做持续集成并有助于整体发布的容器虚拟化技术。 1.2 容器与虚拟机比较 虚拟机VMDocker容器操作系统宿主机OS上运行虚拟机OS与宿主机共享OS存储大小镜像庞大vmdk、vid等镜像小便于存储与传输运行性能操作系统额外的CPU、内存消耗几乎无额外性能损失移植性笨重与虚拟化技术耦合度高轻便、灵活适应于Linux硬件亲和性面向硬件运维者面向软件开发者部署速度较慢10s以上快速秒级 第二章 Docker 安装 2.1 前提说明 Docker 必须部署在Linux内核的系统上。 前提条件 目前CentOS仅发行版本中的内核支持Docker。Docker运行在CentOS 764-bit要求系统为64位、Linux系统内核版本为3.8以上这里选用CentOS7.x 查看自己的内核 uname命令用于打印当前系统相关信息内核版本号、硬件架构、主机名称和操作系统类型等 2.2 Docker的基本组成 2.2.1 镜像image Docker 镜像image就是一个只读的模板。镜像可以用来创建Docker容器一个镜像可以创建很多容器。 它也相当于是一个root文件系统。比如官方镜像 centos:7 就包括了完整的一套 centos:7最小系统的root文件系统。 相当于容器的“源代码”docker镜像文件类似于Java的类模板而docker容器实例类似于Java中new出来的实例对象。 容器与镜像的关系类似于面向对象编程中的对象与类。 Docker面向对象容器对象镜像类 2.2.2 容器container 1从面向对象角度 Docker 利用容器Container独立运行的一个或一组应用应用程序或服务运行在容器里面容器就类似于一个虚拟化的环境容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样镜像是静态的定义容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。 2从镜像容器角度 可以把容器看做是一个简易版的Linux环境包括root用户权限、进程空间、用户空间和网络空间等和运行在其中的应用程序。 2.2.3 仓库repository 仓库Repository是集中存放镜像文件的场所。 类似于 Maven仓库存放各种jar包的地方 github仓库存放各种git项目的地方 Docker公司提供的官方registry被称为Docker Hub存放各种镜像模板的地方。 仓库分为公开仓库Public和私有仓库Private两种形式。最大的公开仓库是Docker Hubhttps://hub.docker.com/存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云、网易云等。 2.2.4 小结 Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器实例类似java中new出来一个对象 image文件可以看作是容器的模板。Docker 根据image文件生成容器的实例。同一个image 文件可以生成多个同时运行的容器实例。 镜像文件 image文件生成的容器实例本身也是一个文件称为镜像文件。 容器实例 一个容器运行一种服务当我们需要的时候就可以通过docker客户端创建一个对应的运行实例也就是我们的容器 仓库 就是放一堆镜像的地方我们可以把镜像发布到仓库中需要的时候再从仓库中拉下来就可以了。 2.3 Docker 工作原理 Docker是一个Client-Server结构的系统Docker守护进程运行在主机上然后通过Socket连接从客户端访问守护进程从客户端接受命令并管理运行在主机上的容器。容器是一个运行时环境。 2.4 Docker运行的基本流程 用户是使用 Docker Client命令行窗口与Docker Daemon后台守护进程建立通信并发送请求给后者。Docker Daemon 作为 Docker 架构中的主体部分首先提供 Docker Server 的功能使其可以接受 Docker Client 的请求。Docer Engine引擎执行 Docker 内部的一系列工作每一项工作都是以一个Job的形式的存在。Job 的运行过程中当需要容器镜像时则从Docker Registry 中下载镜像并通过镜像管理驱动 Graph driver 将下载镜像以Graph的形式存储。当需要为Docker创建网络环境时通过网络管理驱动 Network driver创建并配置 Docker 来完成。当需要限制 Docker 容器运行资源或执行用户指令等操作时则通过 Exec driver执行驱动来完成。Libcontainer是一项独立的容器管理包Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。 2.5 CentOS 7 安装 Docker 安装地址https://docs.docker.com/engine/install/centos 1确定你是CentOS7及以上版本 2卸载旧版本 3yum 安装 gcc相关 首先要保证CentOS7能上外网再执行以下操作 [rootlocalhost ~]# yum -y install gcc [rootlocalhost ~]# yum -y install gcc-c4安装需要的软件包 [rootlocalhost ~]# yum -y install yum-utils5设置 stable 镜像仓库 [rootlocalhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo6更新 yum 软件包索引 [rootlocalhost ~]# yum makecache fast7安装DOCKER CE [rootlocalhost ~]# yum -y install docker-ce docker-ce-cli containerd.io8启动 docker [rootlocalhost ~]# systemctl start docker [rootlocalhost ~]# ps -ef | grep docker root 83592 1 0 11:06 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock root 84314 2819 0 11:07 pts/0 00:00:00 grep --colorauto docker9测试 [rootlocalhost ~]# docker version Client: Docker Engine - CommunityVersion: 24.0.7API version: 1.43Go version: go1.20.10Git commit: afdd53bBuilt: Thu Oct 26 09:11:35 2023OS/Arch: linux/amd64Context: defaultServer: Docker Engine - CommunityEngine:Version: 24.0.7API version: 1.43 (minimum version 1.12)Go version: go1.20.10Git commit: 311b9ffBuilt: Thu Oct 26 09:10:36 2023OS/Arch: linux/amd64Experimental: falsecontainerd:Version: 1.6.24GitCommit: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523runc:Version: 1.1.9GitCommit: v1.1.9-0-gccaecfcdocker-init:Version: 0.19.0GitCommit: de40ad0[rootlocalhost ~]# docker run hello-world Unable to find image hello-world:latest locally latest: Pulling from library/hello-world 719385e32844: Pull complete Digest: sha256:88ec0acaa3ec199d3b7eaf73588f4518c25f9d34f58ce9a0df68429c5af48e8d Status: Downloaded newer image for hello-world:latestHello from Docker! // 如果能看见这句话就代表安装成功10卸载 [rootlocalhost ~]# systemcl stop docker [rootlocalhost ~]# yum remove docker-ce docker-ce-cli containerd.io [rootlocalhost ~]# rm -rf /var/lib/docker [rootlocalhost ~]# rm -rf /var/lib/containerd2.6 阿里云镜像加速 https://promotion.aliyun.com/ntms/act/kubernetes.html 注册一个属于自己的阿里云账户可复用淘宝账号登陆阿里云开发者平台点击控制台 选择容器镜像服务 获取加速器地址 粘贴脚本直接执行 [rootlocalhost ~]# mkdir -p /etc/docker [rootlocalhost ~]# tee /etc/docker/daemon.json -EOF{registry-mirrors: [https://axlh76es.mirror.aliyuncs.com]}EOF [rootlocalhost ~]# systemctl daemon-reload [rootlocalhost ~]# systemctl restart docker测试运行 hello-world [rootlocalhost ~]# docker run hello-worldHello from Docker! // 能打印出这句话证明运行成功第三章 Docker 常用命令 3.1 帮助启动类命令 1启动docker [rootlocalhost ~]# systemctl start docker2停止docker [rootlocalhost ~]# systemctl stop docker3重启docker [rootlocalhost ~]# systemctl restart docker4查看docker状态 [rootlocalhost ~]# systemctl status docker5开机启动 [rootlocalhost ~]# systemctl enable docker6查看docker概要信息 [rootlocalhost ~]# docker info 7查看docker总体帮助文档 [rootlocalhost ~]# docker --help 8查看docker命令帮助文档 [rootlocalhost ~]# docker cp --help3.2 镜像命令 3.2.1 docker images——列出本地主机上的镜像 1命令 docker images [参数]2显示说明 REPOSITORY表示镜像的仓库源 TAG镜像的标签版本号 IMAGE ID镜像ID CREATED镜像创建时间 SIZE镜像大小 3参数说明 参数功能-a列出本地所有的镜像含历史映像层-q只显示镜像ID 4案例实操 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest 9c7a54a9a43c 5 months ago 13.3kB3.2.2 docker search——搜索镜像 一般在dockerhub网站中搜索 1命令 docker search [options] 镜像名字2显示说明 NAME镜像名称 DESCRIPTION镜像说明 STARS点赞数量 OFFICIAL是否是官方的 AUTOMATED是否是自动构建的 3参数说明 选项功能- -limit只列出N个镜像默认25个 4案例实操 [rootlocalhost ~]# docker search redis NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source key-value store that… 12438 [OK] // 只显示用的最多的默认前五条命令 [rootlocalhost ~]# docker search --limit 5 redis3.2.3 docker pull——下载镜像 1命令 1. docker pull 镜像名字[:TAG] 2. docker pull 镜像名字没有TAG就是最新版 等价于 docker pull 镜像名字latest2案例实操 [rootlocalhost ~]# docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu 7b1a6ab2e44d: Pull complete Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322 Status: Downloaded newer image for ubuntu:latest docker.io/library/ubuntu:latest3.2.4 docker system df ——查看镜像/容器/数据卷所占的空间 1案例实操 [rootlocalhost ~]# docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 2 1 72.79MB 72.78MB (99%) Containers 2 0 0B 0B Local Volumes 0 0 0B 0B Build Cache 0 0 0B 0B3.2.5 docker rmi —— 删除镜像 1命令 docker rmi [options] 某个XXX镜像名字IDdocker rmi -f 镜像ID 删除单个 docker rmi -f 镜像名1:TAG 镜像名2:TAG 删除多个 docker rmi -f $(docker images -qa) 删除全部2案例实操 删除单个 [rootlocalhost ~]# docker rmi -f 9c7a54a9a43c 删除多个 [rootlocalhost ~]# docker rmi -f ubuntu hello-world3.3 容器命令 3.3.1 新建启动容器 1命令 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]2参数说明 参数功能–name“容器新名字”为容器指定一个名称-d后台运行容器并返回容器ID也即启动守护式容器后台运行-i以交互模式运行容器通常与-t同时使用-t为容器重新分配一个伪输入终端通常与 -i 同时使用也即启动交互式容器前台有伪终端等待交互-P随机端口映射大写P-p指定端口映射小写p 参数说明 -i交互式操作。 -t终端。 3启动交互式容器前台命令行 4指定容器名字 3.3.2 列出当前所有正在运行的容器 1命令 docker ps [OPTIONS]2参数说明 参数功能-a列出当前所有在正在运行的容器历史上运行过的-l显示最近创建的容器-n显示最近n个创建的容器-q静默模式只显示容器编号 3案例实操 [rootlocalhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9931fe1e7230 ubuntu /bin/bash 5 minutes ago Up 5 minutes sleepy_feistel[rootlocalhost ~]# docker ps -a3.3.3 退出容器 exit run进去容器exit退出容器停止 ctrlpq run进去容器ctrlpq退出容器不停止3.3.4 启动已停止运行的容器 1命令 docker start 容器ID或者容器名2案例实操 [rootlocalhost ~]# docker ps -n 2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4e0b5de73965 ubuntu /bin/bash 2 hours ago Up 2 hours dazzling_wilson 722e5fcce992 ubuntu bash 2 hours ago Exited (0) About an hour ago myu1 [rootlocalhost ~]# docker start 722e5fcce992 722e5fcce992 [rootlocalhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4e0b5de73965 ubuntu /bin/bash 2 hours ago Up 2 hours dazzling_wilson 722e5fcce992 ubuntu bash 2 hours ago Up 4 seconds myu13.3.5 停止容器 1命令 docker stop 容器ID 或者容器名3.3.6 强制停止容器 1命令 docker kill 容器ID或者容器名3.3.7 删除已停止的容器 1命令 docker rm 容器ID一次性删除多个容器实例 docker rm -f $(docker ps -a -q) docker ps -a -q | xargs docker rm3.3.8 启动守护式容器后台服务器*** 在大部分的场景下我们希望 docker 的服务是在后台运行的我们可以通过-d 指定容器的后台运行模式。 1命令 docker run -d 容器名docker 容器后台运行就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令就是会自动退出 2redis 前后台启动演示 1前台交互式启动 [rootlocalhost ~]# docker run -it redis:6.0.82后台守护式启动 [rootlocalhost ~]# docker run -d redis:6.0.83.3.9 查看容器日志 1命令 docker logs 容器ID3.3.10 查看容器内运行的进程 1命令 docker inspect 容器ID3.3.11 进入正在运行的容器并以命令行交互 1命令 docker exec -it 容器ID bin/bash docker attach 容器ID重新进入2两个命令的区别 attach 直接进入容器启动命令的终端不会启动新的进程 用exit退出会导致容器的停止。 exec 是在容器中打开新的终端并且可以启动新的进程 用exit退出不会导致容器的停止。 推荐使用 docker exec命令因为退出容器终端不会导致容器的停止。 3.3.12 从容器内拷贝文件到主机上 1命令 docker cp 容器ID:容器内路径 目的主机路径3.3.13 导入和导出容器 1命令 docker export 容器ID 文件名.tar cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号export 导出容器的内容流作为一个tar归档文件[对应 import 命令] import 从tar 包中的内容创建一个新的文件系统再导入镜像[对应 export] 2案例实操 [rootlocalhost ~]# docker cp 0176a29ea86d a.tar [rootlocalhost ~]# ls a.tar [rootlocalhost ~]# docker rm -f 0176a29ea86d 0176a29ea86d [rootlocalhost ~]# cat a.tar | docker import - ubuntu/ubuntu:6.3 sha256:fc49059e80ad15fca9852d26ce0ef4ee8d628a0e855802fde4c5a970910784c1 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu/ubuntu 6.3 fc49059e80ad About a minute ago 0B第四章 Docker 镜像 4.1 镜像是什么 镜像是一种轻量级、可执行的独立软件包它包含运行某个软件所需的所有内容我们把应用程序和配置依赖打包好形成一个可交付的运行环境包括代码、运行时需要的库、环境变量和配置文件等这个打包好的运行环境就是 image 镜像文件。 只有通过这个镜像文件才能生成 docker容器实例 4.2 分层的镜像 4.3 UnionFS联合文件系统 UnionFS联合文件系统Union文件系统UnionFS是一种分层、轻量级并且高性能的文件系统它支持对文件系统的修改作为一次提交来一层层的叠加同时可以将不同目录挂载到同一个虚拟文件系统下unite several directories into a single virtual filesystem。Union文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承基于基础镜像没有父镜像可以制作各种具体的应用镜像。 特性一次同时加载多个文件系统但从外面看起来只能看到一个文件系统联合加载会把各层文件系统叠加起来这样最终的文件系统会包含所有底层的文件和目录 4.4 docker 镜像加载原理 docker的镜像实际上由一层一层的文件系统组成这种层级的文件系统UnionFS。 booftsboot system主要包含bootloader和kernelbootloader主要是引导加载kernellinux刚启动会加载bootfs文件系统在docker镜像的最底层是引导文件系统bootfs。这一层与我们典型的Linux/Unix系统是一样的包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了此时内存的使用权已由bootfs转交给内核此时系统也会卸载bootfs。 rootfsroot system在bootfs之上。包含的就是典型Linux系统中的/dev/proc/bin/etx 等标准目录和文件。rootfs就是各种不同的操作系统发行版比如UbuntuCentOS等等。 4.5 为什么 docker 镜像要采用这种分层结构 镜像分层最大的一个好处就是共享资源方便复制迁移就是为了复用。 比如说有多个镜像都从相同的 base 镜像构建而来那么 Docker Host 只需在磁盘上保存一份 base 镜像 同时内存中也只需加载一份 base 镜像就可以为所有容器服务了。而且镜像的每一层都可以被共享。 Docker 镜像分层都是只读的容器层是可写的 当容器启动时一个新的可写层被加载到镜像的顶部。 这一层通常被称作“容器层”“容器层”之下的都叫“镜像层”。 4.6 Docker镜像commit操作命令 docker commit 提交容器副本使之成为一个新的镜像 1命令说明 docker commit -m提交的描述信息-a作者容器ID要创建的目标镜像名:[标签名]2案例演示ubuntu安装vim 1原始的默认ubuntu镜像是不带着vim命令的 [rootlocalhost ~]# docker run -it ubuntu roote6602cb72a30:/# vim a.txt bash: vim: command not found2外网连通的情况下安装vim # 先更新我们的包管理工具 roote6602cb72a30:/# apt-get update # 然后安装我们需要的vim roote6602cb72a30:/# apt-get -y install vim3安装完成后commit我们自己的新镜像 [rootlocalhost ~]# docker commit -mvim cmd add ok -aabc e6602cb72a30 root/ubuntu:1.3 sha256:8b0e2010528a276b0fa0309b07d7bad3425b9e8c1fc5dc9e570c92791208dc80 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE root/ubuntu 1.3 8b0e2010528a About a minute ago 162MB4启动我们的新镜像并和原来的对比 [rootlocalhost ~]# docker run -it ubuntu /bin/bash root10209ad51630:/# vim a.txt bash: vim: command not found root10209ad51630:/# exit exit [rootlocalhost ~]# docker run -it 8b0e2010528a /bin/bash rootc98544b2ae0c:/# vim a.txt rootc98544b2ae0c:/# cat a.txt hello dockerdocker中的镜像分层支持通过扩展现有镜像创建新的镜像。类似java继承于一个base基础类自己再按需扩展。 新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件就在现有镜像的基础上增加一层。 第五章 本地镜像发布到阿里云 本地镜像发布到阿里云流程如下图 5.1 将本地镜像推送到阿里云 1本地镜像素材原型 2阿里云开发者平台 https://promotion.aliyun.com/ntms/act/kubernetes.html 3创建仓库镜像 1选择控制台进入容器镜像服务 2选择个人实例 3命名空间 4仓库名称 5进入管理界面获得脚本 4将镜像推送到阿里云 将镜像推送到阿里云registry 1管理脚本界面 2脚本实例 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE root/ubuntu 1.3 8b0e2010528a 44 minutes ago 162MB tomcat latest fb5657adc892 22 months ago 680MB ubuntu latest ba6acccedd29 2 years ago 72.8MB hello-world latest feb5d9fea6a5 2 years ago 13.3kB redis 6.0.8 16ecd2772934 3 years ago 104MB[rootlocalhost ~]# docker login --usernamealiyun5432219780 registry.cn-hangzhou.aliyuncs.com Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded[rootlocalhost ~]# docker tag 8b0e2010528a registry.cn-hangzhou.aliyuncs.com/aafd/myubuntu:1.3[rootlocalhost ~]# docker push registry.cn-hangzhou.aliyuncs.com/aafd/myubuntu:1.3 The push refers to repository [registry.cn-hangzhou.aliyuncs.com/aafd/myubuntu] bfa7aa9aef0f: Pushed 9f54eef41275: Pushed 1.3: digest: sha256:e12d91342719d1593beeb7d76db23bd44cf17911db2ebb9b0e0503695fd0fae8 size: 741[rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-hangzhou.aliyuncs.com/aafd/myubuntu 1.3 8b0e2010528a 54 minutes ago 162MB root/ubuntu 1.3 8b0e2010528a 54 minutes ago 162MB tomcat latest fb5657adc892 22 months ago 680MB ubuntu latest ba6acccedd29 2 years ago 72.8MB hello-world latest feb5d9fea6a5 2 years ago 13.3kB redis 6.0.8 16ecd2772934 3 years ago 104MB 5.2 将阿里云上的镜像下载到本地 1登录阿里云docker registry [rootlocalhost ~]# docker login --usernamealiyun5432219780 registry.cn-hangzhou.aliyuncs.com Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded2从registry中拉取镜像 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-hangzhou.aliyuncs.com/aafd/myubuntu 1.3 8b0e2010528a 54 minutes ago 162MB root/ubuntu 1.3 8b0e2010528a 54 minutes ago 162MB tomcat latest fb5657adc892 22 months ago 680MB ubuntu latest ba6acccedd29 2 years ago 72.8MB hello-world latest feb5d9fea6a5 2 years ago 13.3kB redis 6.0.8 16ecd2772934 3 years ago 104MB[rootlocalhost ~]# docker rmi -f 8b0e2010528a Untagged: root/ubuntu:1.3 Untagged: registry.cn-hangzhou.aliyuncs.com/aafd/myubuntu:1.3 Untagged: registry.cn-hangzhou.aliyuncs.com/aafd/myubuntusha256:e12d91342719d1593beeb7d76db23bd44cf17911db2ebb9b0e0503695fd0fae8 Deleted: sha256:8b0e2010528a276b0fa0309b07d7bad3425b9e8c1fc5dc9e570c92791208dc80 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest fb5657adc892 22 months ago 680MB ubuntu latest ba6acccedd29 2 years ago 72.8MB hello-world latest feb5d9fea6a5 2 years ago 13.3kB redis 6.0.8 16ecd2772934 3 years ago 104MB[rootlocalhost ~]# docker pull registry.cn-hangzhou.aliyuncs.com/aafd/myubuntu:1.3 1.3: Pulling from aafd/myubuntu 7b1a6ab2e44d: Already exists 09ba0e50a073: Already exists Digest: sha256:e12d91342719d1593beeb7d76db23bd44cf17911db2ebb9b0e0503695fd0fae8 Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/aafd/myubuntu:1.3 registry.cn-hangzhou.aliyuncs.com/aafd/myubuntu:1.3 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-hangzhou.aliyuncs.com/aafd/myubuntu 1.3 8b0e2010528a 57 minutes ago 162MB tomcat latest fb5657adc892 22 months ago 680MB ubuntu latest ba6acccedd29 2 years ago 72.8MB hello-world latest feb5d9fea6a5 2 years ago 13.3kB redis 6.0.8 16ecd2772934 3 years ago 104MB[rootlocalhost ~]# docker run -it 8b0e2010528a /bin/bash root0d8aeb3b883a:/# vim a.txt root0d8aeb3b883a:/# exit exit第六章 本地镜像发布到私有库 docker registry是官方提供的工具可以用于构建私有镜像仓库。 1下载镜像docker registry [rootlocalhost ~]# docker pull registry Using default tag: latest latest: Pulling from library/registry 79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df4a2: Pull complete e2ead8259a04: Pull complete 3790aef225b9: Pull complete Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375 Status: Downloaded newer image for registry:latest docker.io/library/registry:latest [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry latest b8604a3fe854 23 months ago 26.2MB2运行私有库registry相当于本地有个私有docker hub [rootlocalhost ~]# docker run -d -p 5000:5000 registry fd0fa916bf1ff9677fd60f3e85e44cb319bdb43aa1e03d0936361c74edc2cdb4 [rootlocalhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fd0fa916bf1f registry /entrypoint.sh /etc… 8 seconds ago Up 7 seconds 0.0.0.0:5000-5000/tcp, :::5000-5000/tcp cranky_archimedes3案例演示创建一个新镜像ubuntu安装ifconfig命令 1原始的ubuntu镜像是不带着ifconfig命令的 [rootlocalhost ~]# docker run -it ubuntu /bin/bash root6f49d88a0556:/# ifconfig bash: ifconfig: command not found2外网连通的情况下安装ifconfig命令并测试通过 root6f49d88a0556:/# apt-get update root6f49d88a0556:/# apt-get install net-tools root6f49d88a0556:/# ifconfig eth0: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255ether 02:42:ac:11:00:03 txqueuelen 0 (Ethernet)RX packets 1995 bytes 21100770 (21.1 MB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 1393 bytes 78212 (78.2 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags73UP,LOOPBACK,RUNNING mtu 65536inet 127.0.0.1 netmask 255.0.0.0loop txqueuelen 1000 (Local Loopback)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 03安装完成后commit我们自己的新镜像 [rootlocalhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6f49d88a0556 ubuntu /bin/bash 6 minutes ago Up 6 minutes pensive_turing fd0fa916bf1f registry /entrypoint.sh /etc… 8 minutes ago Up 8 minutes 0.0.0.0:5000-5000/tcp, :::5000-5000/tcp cranky_archimedes [rootlocalhost ~]# docker commit -mifconfig cmd add -aahx 6f49d88a0556 myubuntu:1.2 sha256:b35d6629da55eb92acc004e17bba9b8563108c55dbd1737941214e7deb28cef0 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE myubuntu 1.2 b35d6629da55 5 seconds ago 108MB registry latest b8604a3fe854 24 months ago 26.2MB ubuntu latest ba6acccedd29 2 years ago 72.8MB hello-world latest feb5d9fea6a5 2 years ago 13.3kB redis 6.0.8 16ecd2772934 3 years ago 104MB4启动我们的新镜像并和原来的对比 [rootlocalhost ~]# docker stop 6f49d88a0556 6f49d88a0556 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE myubuntu 1.2 b35d6629da55 About a minute ago 108MB registry latest b8604a3fe854 24 months ago 26.2MB ubuntu latest ba6acccedd29 2 years ago 72.8MB hello-world latest feb5d9fea6a5 2 years ago 13.3kB redis 6.0.8 16ecd2772934 3 years ago 104MB [rootlocalhost ~]# docker run -it b35d6629da55 /bin/bash root331eb9b604a9:/# ifconfig eth0: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255ether 02:42:ac:11:00:03 txqueuelen 0 (Ethernet)RX packets 6 bytes 508 (508.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags73UP,LOOPBACK,RUNNING mtu 65536inet 127.0.0.1 netmask 255.0.0.0loop txqueuelen 1000 (Local Loopback)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0root331eb9b604a9:/# exit exit4curl验证私服库上有什么镜像 [rootlocalhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fd0fa916bf1f registry /entrypoint.sh /etc… 25 hours ago Up 25 hours 0.0.0.0:5000-5000/tcp, :::5000-5000/tcp cranky_archimedes [rootlocalhost ~]# curl -XGET http://192.168.47.199:5000/v2/_catalog {repositories:[]}5将新镜像myubuntu:1.2修改符合私服规范的Tag [rootlocalhost ~]# docker tag myubuntu:1.2 192.168.47.199:5000/myubuntu:1.2 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.47.199:5000/myubuntu 1.2 b35d6629da55 25 hours ago 108MB myubuntu 1.2 b35d6629da55 25 hours ago 108MB6修改配置文件使之支持http 2个配置中间有个逗号‘,’别漏了这个配置是json格式的。 [rootlocalhost ~]# vim /etc/docker/daemon.json {registry-mirrors: [https://axlh76es.mirror.aliyuncs.com],insecure-registries:[192.168.47.199:5000] } 修改完后如果不生效建议重启docker服务。 [rootlocalhost ~]# systemctl restart docker重启成功之后再运行一下私有库 [rootlocalhost ~]# docker run -d -p 5000:5000 registry a82ffb8bee06ad2b63fb615e1a55c2bb8e1776c44573a64be3ff63f6b14729387push推送到私服库 [rootlocalhost ~]# docker push 192.168.47.199:5000/myubuntu:1.2 The push refers to repository [192.168.47.199:5000/myubuntu] c97b0ab9299d: Pushed 9f54eef41275: Pushed 1.2: digest: sha256:7a01caa8f3614e982bd2571866ec100eee2b265c9ed579fb66042dfbc0076d11 size: 7418curl验证私服库上有什么镜像 [rootlocalhost ~]# curl -XGET http://192.168.47.199:5000/v2/_catalog {repositories:[myubuntu]}9pull到本地并运行 [rootlocalhost ~]# docker rmi -f 192.168.47.199:5000/myubuntu:1.2 [rootlocalhost ~]# docker rmi -f myubuntu:1.2 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry latest b8604a3fe854 24 months ago 26.2MB ubuntu latest ba6acccedd29 2 years ago 72.8MB hello-world latest feb5d9fea6a5 2 years ago 13.3kB redis 6.0.8 16ecd2772934 3 years ago 104MB [rootlocalhost ~]# curl -XGET http://192.168.47.199:5000/v2/_catalog {repositories:[myubuntu]} [rootlocalhost ~]# docker pull 192.168.47.199:5000/myubuntu:1.2 1.2: Pulling from myubuntu 7b1a6ab2e44d: Already exists e0855fb5fc2d: Already exists Digest: sha256:7a01caa8f3614e982bd2571866ec100eee2b265c9ed579fb66042dfbc0076d11 Status: Downloaded newer image for 192.168.47.199:5000/myubuntu:1.2 192.168.47.199:5000/myubuntu:1.2 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.47.199:5000/myubuntu 1.2 b35d6629da55 26 hours ago 108MB [rootlocalhost ~]# docker run -it 192.168.47.199:5000/myubuntu:1.2 /bin/bash root90b582e9b77a:/# ifconfig eth0: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255ether 02:42:ac:11:00:03 txqueuelen 0 (Ethernet)RX packets 7 bytes 578 (578.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags73UP,LOOPBACK,RUNNING mtu 65536inet 127.0.0.1 netmask 255.0.0.0loop txqueuelen 1000 (Local Loopback)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0第七章 Docker容器数据卷 7.1 容器数据卷的含义 卷就是目录或文件存在于一个或多个容器中有docker挂载到容器但不属于联合文件系统因此能够绕过Union File System提供一些用于持续存储或共享数据的特性。 卷的设计目的就是数据的持久化完全独立于容器的生存周期因此Docker不会在容器删除时删除其挂载的数据卷。 将docker容器内的数据保存进宿主机的磁盘中以达到数据持久化和敏感重要的数据备份。 1命令 --privilegedtrueDocker挂载主机目录访问如果出现cannot open directory .:Permission denied 解决方法在挂载目录后多加一个–privilegedtrue参数即可。 2参数说明 参数功能-v添加自定义的容器卷 3运行一个带有容器卷存储功能的容器实例 docker run -it --privilegedtrue -v /宿主机绝对路径目录:/容器内目录 镜像名7.2 容器数据卷的功能 将运用与运行的环境打包镜像run后形成容器实例运行但是我们对数据的要求希望是持久化的 特点 数据卷可在容器之间共享或重用数据卷中的更改可以直接实时生效数据卷中的更改不会包含在镜像的更新中数据卷的生命周期一直持续到没有容器使用它为止 7.3 数据卷的案例 7.3.1 宿主和容器之间映射添加容器卷 1命令 docker run -it --privilegedtrue -v /宿主机绝对路径目录:/容器内目录 镜像名# 将docker容器内的数据保存进宿主机的磁盘中 [rootlocalhost ~]# docker run -it --privilegedtrue -v /tmp/host_data:/tmp/docker_data --nameu1 ubuntu //这里的host_data和docker_data目录是自动创建的 root037178ca7174:/# cd /tmp/docker_data/ root037178ca7174:/tmp/docker_data# ls root037178ca7174:/tmp/docker_data# touch dockerin.txt root037178ca7174:/tmp/docker_data# ls dockerin.txt# 在主机上去查看并创建一个新的文件 [rootlocalhost ~]# cd /tmp/host_data/ [rootlocalhost host_data]# ls dockerin.txt [rootlocalhost host_data]# touch hostin.txt# docker上查看是否有新建的文件 root037178ca7174:/tmp/docker_data# ls dockerin.txt hostin.txt2查看数据卷是否挂载成功 [rootlocalhost ~]# docker inspect 037178ca7174 ......Mounts: [{Type: bind,Source: /tmp/host_data,Destination: /tmp/docker_data,Mode: ,RW: true,Propagation: rprivate}], .......3容器和宿主机之间数据共享 docker修改主机同步获得主机修改docker同步获得docker容器stop主机修改docker容器重启看数据是否同步。 [rootlocalhost host_data]# touch c.txt[rootlocalhost ~]# docker stop 037178ca7174 037178ca7174 [rootlocalhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [rootlocalhost ~]# docker start 037178ca7174 037178ca7174 [rootlocalhost ~]# docker exec -it 037178ca7174 /bin/bash root037178ca7174:/# cd /tmp/docker_data/ root037178ca7174:/tmp/docker_data# ls c.txt dockerin.txt hostin.txt7.3.2 读写规则映射添加说明 1读写默认 docker run -it --privilegedtrue -v /宿主机绝对路径目录:/容器内目录:rw 镜像名 默认同上案例默认就是rw2只读 容器实例内部被限制只能读取不能写 docker run -it --privilegedtrue -v /宿主机绝对路径目录:/容器内目录:ro 镜像名[rootlocalhost ~]# docker run -it --privilegedtrue -v /mydocker/u:/tmp/u:ro --name u2 ubuntu rootb4ecac69f23a:/# cd /tmp/u/ rootb4ecac69f23a:/tmp/u# ls rootb4ecac69f23a:/tmp/u# pwd /tmp/u# 在主机的/mydocker/u/目录下创建a.txt并写入内容 [rootlocalhost ~]# cd /mydocker/u/ [rootlocalhost u]# touch a.txt [rootlocalhost u]# vim a.txt # 在u2容器实例内部去查看 rootb4ecac69f23a:/tmp/u# ls a.txt rootb4ecac69f23a:/tmp/u# cat a.txt dabs cdb# 容器自己只能读取不能写 rootb4ecac69f23a:/tmp/u# touch b.txt touch: cannot touch b.txt: Read-only file system # 如果宿主机写入内容可以同步给容器内容器可以读取到。7.3.3 卷的继承和共享 1容器1完成和宿主机的映射 # 容器实例 [rootlocalhost ~]# docker run -it --privilegedtrue -v /mydocker/u:/tmp/u --name u1 ubuntu /bin/bash rootcd788caa15dc:/# cd /tmp/u rootcd788caa15dc:/tmp/u# ll total 4 drwxr-xr-x. 2 root root 19 Nov 4 08:36 ./ drwxrwxrwt. 1 root root 15 Nov 4 08:44 ../ -rw-r--r--. 1 root root 9 Nov 4 08:36 a.txt rootcd788caa15dc:/tmp/u# touch u1data.txt rootcd788caa15dc:/tmp/u# ls u1data.txt# 主机 [rootlocalhost u]# touch host.txt# 容器实例 rootcd788caa15dc:/tmp/u# ls host.txt u1data.txt2容器2继承容器1的卷规则 [rootlocalhost ~]# docker run -it --privilegedtrue --volumes-from u1 --name u3 ubuntu root2ba4fdfc72c4:/# cd /tmp/u/ root2ba4fdfc72c4:/tmp/u# ll total 0 drwxr-xr-x. 2 root root 40 Nov 4 08:45 ./ drwxrwxrwt. 1 root root 15 Nov 4 08:49 ../ -rw-r--r--. 1 root root 0 Nov 4 08:45 host.txt -rw-r--r--. 1 root root 0 Nov 4 08:44 u1data.txt root2ba4fdfc72c4:/tmp/u# touch u2data.txt root2ba4fdfc72c4:/tmp/u# ls host.txt u1data.txt u2data.txt root2ba4fdfc72c4:/tmp/u# ll total 0 drwxr-xr-x. 2 root root 58 Nov 4 08:50 ./ drwxrwxrwt. 1 root root 15 Nov 4 08:49 ../ -rw-r--r--. 1 root root 0 Nov 4 08:45 host.txt -rw-r--r--. 1 root root 0 Nov 4 08:44 u1data.txt -rw-r--r--. 1 root root 0 Nov 4 08:50 u2data.txt第八章 Docker常规安装简介 总体步骤搜索镜像→拉取镜像→查看镜像→启动镜像服务端口映射→停止容器→移除容器 8.1 安装tomcat 1docker hub上面查找tomcat镜像 2从docker hub上拉取tomcat镜像到本地 3docker images查看是否有拉取到的tomcat 4使用tomcat镜像创建容器实例也叫运行镜像 [rootlocalhost ~]# docker run -d -p 8080:8080 --name ti tomcat 712f1fd1edc9bbddad1db1e23f9eb7f3b9b6c6ee4a6e86da41527a58482a08dc[rootlocalhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 712f1fd1edc9 tomcat catalina.sh run 33 seconds ago Up 32 seconds 0.0.0.0:8080-8080/tcp, :::8080-8080/tcp ti5访问猫首页 [rootlocalhost ~]# docker exec -it 712f1fd1edc9 /bin/bash root712f1fd1edc9:/usr/local/tomcat# ls -l total 132 -rw-r--r--. 1 root root 18994 Dec 2 2021 BUILDING.txt -rw-r--r--. 1 root root 6210 Dec 2 2021 CONTRIBUTING.md -rw-r--r--. 1 root root 60269 Dec 2 2021 LICENSE -rw-r--r--. 1 root root 2333 Dec 2 2021 NOTICE -rw-r--r--. 1 root root 3378 Dec 2 2021 README.md -rw-r--r--. 1 root root 6905 Dec 2 2021 RELEASE-NOTES -rw-r--r--. 1 root root 16517 Dec 2 2021 RUNNING.txt drwxr-xr-x. 2 root root 4096 Dec 22 2021 bin drwxr-xr-x. 1 root root 22 Nov 4 09:29 conf drwxr-xr-x. 2 root root 4096 Dec 22 2021 lib drwxrwxrwx. 1 root root 80 Nov 4 09:29 logs drwxr-xr-x. 2 root root 159 Dec 22 2021 native-jni-lib drwxrwxrwx. 2 root root 30 Dec 22 2021 temp drwxr-xr-x. 2 root root 6 Dec 22 2021 webapps drwxr-xr-x. 7 root root 81 Dec 2 2021 webapps.dist drwxrwxrwx. 2 root root 6 Dec 2 2021 work root712f1fd1edc9:/usr/local/tomcat# rm -r webapps root712f1fd1edc9:/usr/local/tomcat# ls -l total 132 -rw-r--r--. 1 root root 18994 Dec 2 2021 BUILDING.txt -rw-r--r--. 1 root root 6210 Dec 2 2021 CONTRIBUTING.md -rw-r--r--. 1 root root 60269 Dec 2 2021 LICENSE -rw-r--r--. 1 root root 2333 Dec 2 2021 NOTICE -rw-r--r--. 1 root root 3378 Dec 2 2021 README.md -rw-r--r--. 1 root root 6905 Dec 2 2021 RELEASE-NOTES -rw-r--r--. 1 root root 16517 Dec 2 2021 RUNNING.txt drwxr-xr-x. 2 root root 4096 Dec 22 2021 bin drwxr-xr-x. 1 root root 22 Nov 4 09:29 conf drwxr-xr-x. 2 root root 4096 Dec 22 2021 lib drwxrwxrwx. 1 root root 80 Nov 4 09:29 logs drwxr-xr-x. 2 root root 159 Dec 22 2021 native-jni-lib drwxrwxrwx. 2 root root 30 Dec 22 2021 temp drwxr-xr-x. 7 root root 81 Dec 2 2021 webapps.dist drwxrwxrwx. 2 root root 6 Dec 2 2021 work root712f1fd1edc9:/usr/local/tomcat# mv webapps.dist webapps root712f1fd1edc9:/usr/local/tomcat# ls -l total 132 -rw-r--r--. 1 root root 18994 Dec 2 2021 BUILDING.txt -rw-r--r--. 1 root root 6210 Dec 2 2021 CONTRIBUTING.md -rw-r--r--. 1 root root 60269 Dec 2 2021 LICENSE -rw-r--r--. 1 root root 2333 Dec 2 2021 NOTICE -rw-r--r--. 1 root root 3378 Dec 2 2021 README.md -rw-r--r--. 1 root root 6905 Dec 2 2021 RELEASE-NOTES -rw-r--r--. 1 root root 16517 Dec 2 2021 RUNNING.txt drwxr-xr-x. 2 root root 4096 Dec 22 2021 bin drwxr-xr-x. 1 root root 22 Nov 4 09:29 conf drwxr-xr-x. 2 root root 4096 Dec 22 2021 lib drwxrwxrwx. 1 root root 80 Nov 4 09:29 logs drwxr-xr-x. 2 root root 159 Dec 22 2021 native-jni-lib drwxrwxrwx. 2 root root 30 Dec 22 2021 temp drwxr-xr-x. 7 root root 81 Dec 2 2021 webapps drwxrwxrwx. 1 root root 22 Nov 4 09:35 work6免修改版说明 [rootlocalhost ~]# docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8 Unable to find image billygoo/tomcat8-jdk8:latest locally latest: Pulling from billygoo/tomcat8-jdk8 55cbf04beb70: Pull complete 1607093a898c: Pull complete 9a8ea045c926: Pull complete 1290813abd9d: Pull complete 8a6b982ad6d7: Pull complete abb029e68402: Pull complete 8cd067dc06dc: Pull complete 1b9ce2097b98: Pull complete d6db5874b692: Pull complete 25b4aa3d52c5: Pull complete d26b86f009c9: Pull complete e54998e5e699: Pull complete 4a1e415a3c2e: Pull complete Digest: sha256:4e21f52d29e3a0baafc18979da2f9725449b54652db69d4cdaef9ba807097e11 Status: Downloaded newer image for billygoo/tomcat8-jdk8:latest 9e448debe4178455e46efe60300c866476907b31a91804e9c28d005952c453f4[rootlocalhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9e448debe417 billygoo/tomcat8-jdk8 catalina.sh run 32 seconds ago Up 30 seconds 0.0.0.0:8080-8080/tcp, :::8080-8080/tcp mytomcat88.2 安装mysql 1docker hub上面查找mysql镜像 2从docker hub上阿里云加速器拉取mysql镜像到本地标签为5.7 3使用mysql5.7镜像创建容器也叫运行镜像 1简单版 [rootlocalhost ~]# docker images mysql:5.7 REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7 c20987f18b13 22 months ago 448MB# 确保linux服务器上没有mysql端口被启用以免被占用 [rootlocalhost ~]# ps -ef |grep mysql root 71326 3018 0 14:54 pts/0 00:00:00 grep --colorauto mysql# 使用mysql镜像 [rootlocalhost ~]# docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql:5.7 46b5cc68b471e280d3ea10d52034b4f19e282ee0237b6ef69991c571ce1bc2b8 [rootlocalhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 46b5cc68b471 mysql:5.7 docker-entrypoint.s… 2 seconds ago Up 1 second 0.0.0.0:3306-3306/tcp, :::3306-3306/tcp, 33060/tcp modest_hamilton [rootlocalhost ~]# docker exec -it 46b5cc68b471 /bin/bash root46b5cc68b471:/# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.36 MySQL Community Server (GPL)Copyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type help; or \h for help. Type \c to clear the current input statement.mysql show databases; -------------------- | Database | -------------------- | information_schema | | mysql | | performance_schema | | sys | -------------------- 4 rows in set (0.00 sec)# 建库建表插数据 mysql create database db01; Query OK, 1 row affected (0.00 sec)mysql use db01; Database changed mysql create table t1(id int,name varchar(20)); Query OK, 0 rows affected (0.01 sec)mysql insert into t1 values(1,xx); Query OK, 1 row affected (0.01 sec)mysql select * from t1; ------------ | id | name | ------------ | 1 | xx | ------------ 1 row in set (0.00 sec)2实战版 # 新建mysql容器实例 [rootlocalhost ~]# docker run -d -p 3306:3306 --privilegedtrue -v /mydocker/mysql/log:/var/log/mysql -v /mydocker/mysql/data:/var/lib/mysql -v /mydocker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD123456 --name mysql mysql:5.7 2f65e6007e58d5fc61a89a7581c5c3b5a662c360eb406c3b4de4b1c0a1768d0f [rootlocalhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2f65e6007e58 mysql:5.7 docker-entrypoint.s… 6 seconds ago Up 5 seconds 0.0.0.0:3306-3306/tcp, :::3306-3306/tcp, 33060/tcp mysql# 新建my.cnf [rootlocalhost ~]# cd /mydocker/mysql/conf/ [rootlocalhost conf]# ls [rootlocalhost conf]# vim my.cnf [rootlocalhost conf]# cat my.cnf [client] default_character_setutf8 [mysqld] collation_server utf8_general_ci character_set_server utf8# 重新启动mysql容器实例再重新进入并查看字符编码 [rootlocalhost ~]# docker restart mysql mysql [rootlocalhost ~]# docker exec -it mysql /bin/bash root2f65e6007e58:/# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.36 MySQL Community Server (GPL)Copyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type help; or \h for help. Type \c to clear the current input statement.mysql SHOW VARIABLES LIKE character%; ------------------------------------------------------ | Variable_name | Value | ------------------------------------------------------ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | ------------------------------------------------------ 8 rows in set (0.01 sec)# 再新建库新建表再插入中文测试 mysql show databases; -------------------- | Database | -------------------- | information_schema | | mysql | | performance_schema | | sys | -------------------- 4 rows in set (0.00 sec)mysql create database db01; Query OK, 1 row affected (0.00 sec)mysql use db01; Database changed mysql create table t1(id int,name varchar(20)); Query OK, 0 rows affected (0.00 sec)mysql insert into t1 values(1,sson); Query OK, 1 row affected (0.00 sec)mysql select * from t1; ------------ | id | name | ------------ | 1 | sson | ------------ 1 row in set (0.00 sec)3结论 docker安装完mysql并run出容器后建议请先修改完字符集编码后再新建mysql库-表-插数据。 8.3 安装redis 1从docker hub上阿里云加速器拉取redis镜像到本地标签为6.0.8 [rootlocalhost ~]# docker pull redis:6.0.8 6.0.8: Pulling from library/redis Digest: sha256:21db12e5ab3cc343e9376d655e8eabbdbe5516801373e95a8a9e66010c5b8819 Status: Image is up to date for redis:6.0.8 docker.io/library/redis:6.0.8 [rootlocalhost ~]# docker images redis:6.0.8 REPOSITORY TAG IMAGE ID CREATED SIZE redis 6.0.8 16ecd2772934 3 years ago 104MB2在centos宿主机下新建目录/app/redis [rootlocalhost ~]# mkdir -p /app/redis3先在宿主机上下载一个redis再将redis.conf文件模板拷贝进/app/redis目录下 [rootlocalhost myrides]# wget https://download.redis.io/releases/redis-6.0.8.tar.gz [rootlocalhost myrides]# tar -zxvf redis-6.0.8.tar.gz [rootlocalhost myrides]# cd redis-6.0.8/ [rootlocalhost redis-6.0.8]# make [rootlocalhost ~]# cp /myrides/redis-6.0.8/redis.conf /app/redis/ [rootlocalhost ~]# cd /app/redis/ [rootlocalhost redis]# ll 总用量 84 drwxr-xr-x. 2 polkitd root 6 11月 5 16:08 data -rw-r--r--. 1 root root 84642 11月 5 16:15 redis.conf4/app/redis目录下修改redis.conf文件 [rootlocalhost redis]# vim redis.conf // 允许redis外地连接必须注释掉bind 127.0.0.1 # bind 127.0.0.1 // 将daemonize yes注释起来或者daemonize no设置因为该配置和docker run中-d参数冲突会导致容器一直启动失败 # When Redis is supervised by upstart or systemd, this parameter has no impact. daemonize no5使用redis6.0.8镜像创建容器也叫运行镜像 [rootlocalhost redis]# docker run -d -p 6379:6379 --name myr2 --privilegedtrue -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf 1299c3a046e1ecb6837655ee856e77f6af2757e775acd6a5e2eddc03ade7ee5a [rootlocalhost redis]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1299c3a046e1 redis:6.0.8 docker-entrypoint.s… 4 seconds ago Up 3 seconds 0.0.0.0:6379-6379/tcp, :::6379-6379/tcp myr26测试redis-cli连接上来 [rootlocalhost redis]# docker exec -it myr2 /bin/bash root1299c3a046e1:/data# redis-cli 127.0.0.1:6379 set k1 v1 OK 127.0.0.1:6379 get k1 v17请证明docker启动使用了我们自己指定的配置文件 // 修改配置文件前 [rootlocalhost redis]# docker exec -it myr2 /bin/bash root1299c3a046e1:/data# redis-cli 127.0.0.1:6379 set k1 v1 OK 127.0.0.1:6379 get k1 v1 127.0.0.1:6379 select 15 OK 127.0.0.1:6379[15] select 18 (error) ERR DB index is out of range 127.0.0.1:6379[15] exit8测试redis-cli连接上来第2次 // 修改配置文件后 [rootlocalhost redis]# vim redis.conf ...... # dbid is a number between 0 and databases-1 databases 10 ......// 重启服务 [rootlocalhost redis]# docker restart myr2 myr2[rootlocalhost redis]# docker exec -it myr2 /bin/bash root1299c3a046e1:/data# redis-cli 127.0.0.1:6379 get k1 v1 127.0.0.1:6379 select 3 OK 127.0.0.1:6379[3] select 15 (error) ERR DB index is out of range
http://www.w-s-a.com/news/708953/

相关文章:

  • 网站建设活动计划做网站意义
  • 莱芜新闻主持人名单seo sem 外贸建站 网站建设 文化墙设计
  • 易语言可以做网站嘛赣州网站建设开发
  • 网站建设规范布局网站建设费往什么科目
  • 乐清手机网站设计哪个汽车网站汽贸店免费做
  • 网站建设课程总结报告推广软文
  • 企业网站哪里可以做烟台seo网站推广
  • 怎样建设网站优化珠海网站建设开发
  • 泰兴住房和城乡建设厅网站福州app开发
  • 免费制作公司网站seo前线
  • 导购网站怎么推广有网站源码怎么搭建网站
  • 网站开发问题杭州制作公司网站
  • 网站推广seo是什么wordpress 去除顶部
  • 建筑学不会画画影响大吗电子商务沙盘seo关键词
  • 重庆网站建设找承越上海建设工程招投标网
  • 网站建设四个步骤下单的网站建设教程
  • 网站建设合同的验收表响应式网站建设哪家好
  • 手机网站建设视频长沙百家号seo
  • 网站未备案怎么访问网站开发前端需要学什么
  • 正黄集团博弘建设官方网站wordpress设置固定链接和伪静态
  • wordpress 建网站视频如何实现网站生成网页
  • 杭州品牌网站建设推广个人的网站建设目标
  • 济南有哪些网站是做家具团购的贸易公司自建免费网站
  • wap网站psd成立公司在什么网站
  • 网站建设婚恋交友聊城网站建设费用
  • 沈阳网站建设联系方式尉氏县金星网架公司
  • 医院网站建设实施方案基础微网站开发信息
  • 网站建设开发服务费记账百度指数搜索
  • 网站建设备案流程windows优化大师有必要安装吗
  • 怎么网站定制自己做网站卖视频