运维|Docker基础01--入门总结--(狂神说docker学习笔记)


文章目录

        • Docker学习笔记合集(持续更新)
        • 学习目录
    • 1.Docker概述
      • Docker为什么出现?
    • 2.Docker的历史
      • 聊聊Docker
    • 3.Docker的作用
        • 应用更快速的交付和部署
        • 更便捷的升级和扩缩容
        • 更简单的系统运维
        • 更高效的计算资源利用
    • 4.Docker的基本组成
        • 镜像(image):
        • 容器(container):
        • 仓库(repository):
    • 5.Dockers的安装
    • 6.Docker的卸载
    • 7.配置阿里云镜像加速
    • 8. Docker容器运行流程
    • 9. 底层原理
    • 10. Docker的常用命令
      • 10.1 基础命令
      • 10.2 镜像命令
      • 10.3 容器命令
      • 10.4 其他常用命令
    • 11. 常用容器部署
      • 11.1 Nginx部署
      • 11.2 Tomcat部署
      • 11.3 ElasticSearch部署
    • 12.Docker镜像详解
      • 12.1 什么是镜像
      • 12.2 Docker镜像加载原理
      • 12.3 分层理解
      • 12.4 提交镜像

Docker学习笔记合集(持续更新)
linux入门–服务器购买—宝塔部署环境说明
Nginx简单入门–学习笔记狂神说
Docker基础01–入门总结–(狂神说docker学习笔记)
Docker基础02–Docker容器数据卷详解–(狂神说docker学习笔记)
Docker基础03–Dockerfile详解与镜像发布–(狂神说docker学习笔记)
Docker基础04–Docker网络–(狂神说docker学习笔记)
Docker进阶01–Docker Compose–(狂神说docker学习笔记)
Docker知识点翻阅手册–Docker常用命令、Dockererfile、Compose、网络等整理合集
Docker实战:Mysql、Nginx、web的Docker化部署(安装、自定义镜像、compose管理容器、自定义网络、部署问题及解决)
学习目录
Docker概述
Docker安装
Docker命令–镜像命令 容器命令 操作命令
Docker镜像!
容器数据卷!
DockerFile
Docker网络原理
IDEA整合Docker
Docker Compose
Docker Swarm
CI\CD Jenkins
1.Docker概述 Docker为什么出现?
一款产品:开发–上线 两套环境!应用环境,应用配置!
开发 — 运维 问题:我在我的电脑上可以运行!版本更新,导致服务不可用!对于运维来说,考验就非常大!
环境配置是十分的麻烦,每一个机器都要部署环境(集群Redis、ES、Hadoop…)
发布一个项目(jar+(Redis、MySQL、jdk、ES))项目能不能都带上环境安装打包!
之前在服务器配置一个应用的环境 Redis、MySQL、jdk、ES、Hadoop,配置越麻烦了,不能够跨平台
windows,最后发布到linux!
传统:开发jar,运维来做
现在:开发打包部署上线,一套流程做完
java - apk --发布(应用商店 ) --张三使用apk --安装即可用!
java - jar(环境) —打包项目带上环境(镜像) --(Docker仓库:商店) —下载我们发布的镜像 --直接运行即可!
Docker给以上的问题,提出了解决方案!
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

Docker的思想就来自于集装箱!
JRE — 多个应用(端口冲突)—原来都是交叉的!
隔离:Docker核心思想!打包装箱!每个箱子之间是互相隔离的。
水果、生化武器
Docker通过隔离机制,可以将服务器利用到机制!
本质:所有的技术都是因为出现了一些问题,我们需要去解决,才去学习!
2.Docker的历史 2010年,几个搞IT的年轻人,在美国成立了一家公司 dotCloud
做一些pass的云计算服务!LXC有关的容器技术!
他们将自己的技术(容器化技术)命名 就是 Docker!
Docker刚刚诞生的时候,没有引起行业的注意!
2013年开源–开发源代码!
2014年4月9日,Docker1.0发布!
Docker为什么这么火?十分的轻巧!
在容器技术出来之前,我们都是使用虚拟机技术!
虚拟机:在window中装一个Vmware,通过这个软件我们可以虚拟出来一台或多台电脑!笨重!
虚拟机也是属于虚拟化技术,Docker容器技术,也是一种虚拟化技术!
vm,linux centos原生镜像(一个电脑!) 隔离,需要开启多个虚拟机! 几个G几分钟 docker,隔离,镜像(最核心的环境 4m+ jdk +mysql)十分小巧,运行镜像即可! 几个M KB 秒级

到现在,所有开发人员都必须要回Docker!
聊聊Docker
Docker是基于Go语言开发的!开源项目!
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

  • 官网
  • 官方文档Docker文档是超详细的
  • 仓库地址
3.Docker的作用 之前的虚拟机技术
【运维|Docker基础01--入门总结--(狂神说docker学习笔记)】运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

虚拟机技术缺点:
1.资源占用很多
2.冗余步骤多
3.启动很慢!
容器化技术
容器化技术不是模拟的一个完整的操作系统
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

比较Docker和虚拟机技术的不同:
  • 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
  • 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以轻便了
  • 每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响
DevOps(开发、运维)
应用更快速的交付和部署 传统:一堆帮助文档,安装程序
Docker:打包镜像、发布测试、一键运行
更便捷的升级和扩缩容 使用了Docker之后,我们部署应用就和搭积木一样!
(SpringBoot 1.5 Redis 5 tomcat8)打包成一个镜像,扩展 服务器A!服务器B
更简单的系统运维 在容器化之后,我们的开发,测试环境都是高度一致的。
更高效的计算资源利用 Docker是 内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致!
4.Docker的基本组成 Docker的基本组成图如下:
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

说明:
镜像(image): docker镜像好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像===》run==》tomcat01容器(提供服务器)通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
容器(container): Docker利用容器技术没独立运行一个或者一个组应用,通过镜像来创建的。
启动、停止、删除,基本命令
仓库(repository): 运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

5.Dockers的安装 查看系统的内核:
uname -r
系统内核版本为3.10.0
[root@zecan ~]# uname -r 3.10.0-1062.18.1.el7.x86_64

查看系统配置
cat /etc/os-release
[root@zecan ~]# cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0; 31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7"

Docker的安装步骤:
(1)卸载旧的版本
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

(2)下载需要的安装包
yum install -y yum-utils

(3)设置镜像的仓库
yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo#国外的地址# 设置阿里云的Docker镜像仓库 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#阿里云的地址

(4)更新yum软件包索引
yum makecache fast

(5)安装docker相关的配置
docker-ce 是社区版,docker-ee 企业版
yum install docker-ce docker-ce-cli containerd.io

出现了completed即安装成功。
(6)启动Docker
systemctl start docker # 查看当前版本号,是否启动成功 docker version # 设置开机自启动 systemctl enable docker

结果:
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

下载hello-world镜像进行测试
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

查看下载的hello world镜像
[root@zecan ~]# docker images REPOSITORYTAGIMAGE IDCREATEDSIZE hello-worldlatestfeb5d9fea6a57 weeks ago13.3kB

6.Docker的卸载
# 1. 卸载依赖 yum remove docker-ce docker-ce-cli containerd.io # 2. 删除资源. /var/lib/docker是docker的默认工作路径 rm -rf /var/lib/docker

7.配置阿里云镜像加速 1)进入阿里云官网,搜索容器镜像服务
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

(2)依次执行官方的这四条命令
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://axvfsf7e.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

8. Docker容器运行流程 启动一个容器,Docker的运行流程如下图:
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

9. 底层原理 Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socker从客户端访问!Docker Server接收到Docker-Client的指令,就会执行这个指令!
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

Docker为什么比VM Ware快?
1、Docker比虚拟机更少的抽象层
2、docker利用宿主机的内核,VM需要的是Guest OS
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

Docker新建一个容器的时候,不需要像虚拟机一样重新加载一个操作系统内核,直接利用宿主机的操作系统,而虚拟机是需要加载Guest OS。Docker和VM的对比如下:
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

注:现GuestOS已全部适用
[
](https://blog.csdn.net/huangjhai/article/details/118854733)
10. Docker的常用命令 10.1 基础命令
docker version# 显示dicker的版本信息 docker info# 显示docker的系统信息,包括镜像和容器的数量 docker 命令--help # 帮助命令

命令的帮助文档地址:https://docs.docker.com/engine/reference/commandline/docker/
10.2 镜像命令
1.docker images 查看本地主机的所有镜像
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker images REPOSITORYTAGIMAGE IDCREATEDSIZE hello-worldlatestbf756fb1ae6511 months ago13.3kB#解释: 1.REPOSITORY镜像的仓库源2.TAG镜像的标签3.IMAGE ID 镜像的id4.CREATED 镜像的创建时间5.SIZE 镜像的大小# 可选参数-a/--all 列出所有镜像-q/--quiet 只显示镜像的id

2.docker search 搜索镜像
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker search mysql NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED mysqlMySQL is a widely used, open-source relation…10308[OK] mariadbMariaDB is a community-developed fork of MyS…3819[OK] mysql/mysql-serverOptimized MySQL Server Docker images. Create…754[OK] perconaPercona Server is a fork of the MySQL relati…517[OK] centos/mysql-57-centos7MySQL 5.7 SQL database server86 mysql/mysql-clusterExperimental MySQL Cluster Docker images. Cr…79 centurylink/mysqlImage containing mysql. Optimized to be link…60[OK]#可选参数Search the Docker Hub for imagesOptions: -f, --filter filterFilter output based on conditions provided --format stringPretty-print search using a Go template --limit intMax number of search results (default 25) --no-truncDon't truncate output#搜索收藏数大于3000的镜像 [root@iZwz99sm8v95sckz8bd2c4Z ~]# docker search mysql --filter=STARS=3000 NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED mysqlMySQL is a widely used, open-source relation…10308[OK] mariadbMariaDB is a community-developed fordockerk of MyS…3819[OK]

3.docker pull 镜像名[:tag] 下载镜像
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker pull mysql Using default tag: latest#如果不写tag默认就是latest latest: Pulling from library/mysql 6ec7b7d162b2: Pull complete#分层下载,docker image的核心-联合文件系统 fedd960d3481: Pull complete 7ab947313861: Pull complete 64f92f19e638: Pull complete 3e80b17bff96: Pull complete 014e976799f9: Pull complete 59ae84fee1b3: Pull complete ffe10de703ea: Pull complete 657af6d90c83: Pull complete 98bfb480322c: Pull complete 6aa3859c4789: Pull complete 1ed875d851ef: Pull complete Digest: sha256:78800e6d3f1b230e35275145e657b82c3fb02a27b2d8e76aac2f5e90c1c30873 #签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest#下载来源的真实地址#docker pull mysql等价于docker pull docker.io/library/mysql:latest

指定版本下载
[root@zecan ~]# docker pull mysql:5.7 5.7: Pulling from library/mysql b380bbd43752: Already exists f23cbf2ecc5d: Already exists 30cfc6c29c0a: Already exists b38609286cbe: Already exists 8211d9e66cd6: Already exists 2313f9eeca4a: Already exists 7eb487d00da0: Already exists a71aacf913e7: Pull complete 393153c555df: Pull complete 06628e2290d7: Pull complete ff2ab8dac9ac: Pull complete Digest: sha256:2db8bfd2656b51ded5d938abcded8d32ec6181a9eae8dfc7ddf87a656ef97e97 Status: Downloaded newer image for mysql:5.7 docker.io/library/mysql:5.7

4.docker rmi 删除镜像
#1.删除指定的镜像id [root@iZwz99sm8v95sckz8bd2c4Z ~]# docker rmi -f镜像id #2.删除多个镜像id [root@iZwz99sm8v95sckz8bd2c4Z ~]# docker rmi -f镜像id 镜像id 镜像id #3.删除全部的镜像id [root@iZwz99sm8v95sckz8bd2c4Z ~]# docker rmi -f$(docker images -aq)

10.3 容器命令
说明:有了镜像才可以创建容器
docker pull centos

新建容器并启动
docker run [可选参数] image#参数说明 --name="名字"指定容器名字tomcat01 tomcat02,用来区分容器 -d后台方式运行 -it使用交互方式运行,进入容器查看内容 -p指定容器的端口 -p 8080:8080 ( -p ip:主机端口:容器端口配置主机端口映射到容器端口 -p 主机端口:容器端口 -p 容器端口 ) -P随机指定端口(大写的P)#测试,并启动 [root@zecan ~]# docker run -it centos /bin/bash [root@b3ac7a30eb8a /]# ls#查看容器内地centos,基础版本,很多命令都是不完善的! bindevetchomeliblib64lost+foundmediamntoptprocrootrunsbinsrvsystmpusrvar#从容器退回主机 [root@b3ac7a30eb8a /]# exit exit [root@zecan /]# ls binbootdevetchomeliblib64lost+foundmediamntoptpatchprocrootrunsbinsrvsystmpusrvarwww

列出所有的运行的容器
# docker ps 命令 # 列出当前正在运行的容器 -a# 列出当前正在运行的容器+带出历史运行过的容器 -n=? # 显示最近创建的容器 -q # 只显示容器的编号[root@zecan /]# docker ps CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES [root@zecan /]# docker ps -a CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES b3ac7a30eb8acentos"/bin/bash"5 minutes agoExited (0) 4 minutes agooptimistic_heyrovsky 332d452d5337hello-world"/hello"31 minutes agoExited (0) 31 minutes agosleepy_mendel 72d42c07133bhello-world"/hello"15 hours agoExited (0) 15 hours agopensive_germain [root@zecan /]#

删除容器
docker rm 容器id#删除指定的容器,不能删除正在运行的容器,强制删除使用 rm -f docker rm -f $(docker ps -aq)#删除所有的容器 docker ps -a -q|xargs docker rm #删除所有的容器

启动和停止容器
docker start 容器id#启动容器 docker restart 容器id#重启容器 docker stop 容器id#停止当前运行的容器 docker kill 容器id#强制停止当前容器

10.4 其他常用命令
后台启动容器
#命令 docker run -d 镜像名! [root@zecan /]# docker run -d centos#问题docker ps,发现centos停止了#常见的坑,docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止 #nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

1.查看日志
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker logs --helpUsage:docker logs [OPTIONS] CONTAINERFetch the logs of a containerOptions: --detailsShow extra details provided to logs -f, --followFollow log output --since stringShow logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes) -n, --tail stringNumber of lines to show from the end of the logs (default "all") -t, --timestampsShow timestamps --until stringShow logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)常用: docker logs -tf 容器id docker logs --tail number 容器id #num为要显示的日志条数#docker容器后台运行,必须要有一个前台的进程,否则会自动停止 #编写shell脚本循环执行,使得centos容器保持运行状态 [root@zecan /]# docker run -d centos /bin/sh -c "while true; do echo hi; sleep 5; done" 88947e8d3cf0fa5bdbd6e0577e77b74b8a53bf4dd6685bd00130829a8c7f2250 [root@zecan /]# docker ps CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 88947e8d3cf0centos"/bin/sh -c 'while t…"40 seconds agoUp 39 secondsloving_tesla [root@zecan /]# docker logs -tf --tail 10 88947e8d3cf0 2021-11-16T02:39:04.210788277Z hi 2021-11-16T02:39:09.212892789Z hi 2021-11-16T02:39:14.214927123Z hi 2021-11-16T02:39:19.217185096Z hi 2021-11-16T02:39:24.219168601Z hi 2021-11-16T02:39:29.221417267Z hi 2021-11-16T02:39:34.223160841Z hi 2021-11-16T02:39:39.225251841Z hi 2021-11-16T02:39:44.227213547Z hi 2021-11-16T02:39:49.229377746Z hi 2021-11-16T02:39:54.231320967Z hi

2.查看容器中进程信息
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker top c703b5b1911f UIDPIDPPIDCSTIMETTYTIMECMD root1115611135011:31?00:00:00/bin/sh -c while true; do echo hi; sleep 5; done root1188611156011:43?00:00:00/usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 5

3.查看容器的元数据
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker inspect 容器id

4.进入当前正在运行的容器
因为通常我们的容器都是使用后台方式来运行的,有时需要进入容器修改配置
方式一:
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker exec -it c703b5b1911f /bin/bash [root@c703b5b1911f /]# ls bindevetchomeliblib64lost+foundmediamntoptprocrootrunsbinsrvsystmpusrvar [root@c703b5b1911f /]# ps -ef UIDPIDPPIDC STIME TTYTIME CMD root100 03:31 ?00:00:00 /bin/sh -c while true; do echo hi; sleep 5; done root27900 03:54 pts/000:00:00 /bin/bash root31510 03:56 ?00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 5 root3162790 03:56 pts/000:00:00 ps -ef

方式二:
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker attach c703b5b1911f

docker exec 进入容器后开启一个新的终端,可以在里面操作
docker attach 进入容器正在执行的终端,不会启动新的进程
拷贝容器的文件到主机中
docker cp 容器id:容器内路径 目的主机路径
#启动容器 [root@zecan /]# docker run -it centos /bin/bash [root@a84d4273434f /]# [root@a84d4273434f /]# [root@zecan /]# [root@zecan /]# docker ps CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES a84d4273434fcentos"/bin/bash"2 minutes agoUp 2 minutesgreat_sammet#进入dockers容器内部 [root@zecan /]# docker attach a84d4273434f [root@a84d4273434f /]# cd/home [root@a84d4273434f home]# touch zecan.txt [root@a84d4273434f home]# ls zecan.txt [root@a84d4273434f home]# exit exit [root@zecan /]# docker ps -a CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES a84d4273434fcentos"/bin/bash"3 minutes agoExited (0) 12 seconds agogreat_sammet# 将文件拷贝出来到主机上 [root@zecan /]# docker cp a84d4273434f:/home/zecan.txt /home [root@zecan /]# cd /home [root@zecan home]# ls rediswwwzecan.txt# 拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现,自动同步

命令小节的图解如下:
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

可以把常用命令放进来

11. 常用容器部署 11.1 Nginx部署
(1)搜索并下载镜像
[root@zecan home]# docker search nginx NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED nginxOfficial build of Nginx.14207[OK] jwilder/nginx-proxyAutomated Nginx reverse proxy for docker con…1932[OK] richarvey/nginx-php-fpmContainer running Nginx + PHP-FPM capable of…797[OK] linuxserver/nginxAn Nginx container, brought to you by LinuxS…137 jc21/nginx-proxy-managerDocker container for managing Nginx proxy ho…123 tiangolo/nginx-rtmpDocker image with Nginx using the nginx-rtmp…107[OK][root@zecan home]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx 7d63c13d9b9b: Pull complete 15641ef07d80: Pull complete 392f7fc44052: Pull complete 8765c7b04ad8: Pull complete 8ddffa52b5c7: Pull complete 353f1054328a: Pull complete Digest: sha256:dfef797ddddfc01645503cef9036369f03ae920cac82d344d58b637ee861fda1 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest [root@zecan home]# docker images REPOSITORYTAGIMAGE IDCREATEDSIZE nginxlatest04661cdce5816 days ago141MB mysqllatestecac195d15af4 weeks ago516MB hello-worldlatestfeb5d9fea6a57 weeks ago13.3kB centoslatest5d0da3dc97642 months ago231MB

可以到dockerhub官网查看Nginx的详细版本信息 :https://hub.docker.com/_/nginx
(2)运行测试
-d 后台运行 --name 给容器命名 -p 3344:80 将宿主机的端口3344映射到该容器的80端口 [root@zecan home]# docker run -d --name nginx01 -p 3344:80 nginx b4ce6a638ddcf76ad1eb85fe9735a39174860e984bc4cea94beb0dd9ac614d47 [root@zecan home]# docker ps CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES b4ce6a638ddcnginx"/docker-entrypoint.…"7 seconds agoUp 6 seconds0.0.0.0:3344->80/tcpnginx01

端口暴露的概念:
运维|Docker基础01--入门总结--(狂神说docker学习笔记)
文章图片

外网\
思考问题:我们每次改动nginx配置文件,都需要进入容器内部?十分麻烦,要是可以在容器外部提供一个映射路径,达到在容器修改文件名,容器内部就可以自动修改? - v 数据卷技术!
(3)配置文件
进入容器,自定义配置文件
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker exec -it nginx01 /bin/bash root@20c896637ff5:/# whereis nginx nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx root@20c896637ff5:/# cd /etc/nginx root@20c896637ff5:/etc/nginx# ls conf.d fastcgi_params koi-utfkoi-winmime.typesmodulesnginx.confscgi_params uwsgi_paramswin-utf root@20c896637ff5:/# cd /etc/nginx root@20c896637ff5:/etc/nginx# ls conf.d fastcgi_params koi-utfkoi-winmime.typesmodulesnginx.confscgi_params uwsgi_paramswin-utf

(4)访问测试
本地主机访问测试,curl命令发起请求,如果使用阿里云服务器需要设置安全组。
[root@zecan home]# curl localhost:3344 Welcome to nginx!</ti html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; }<body> Welcome to nginx!If you see this page, the nginx web server is successfully installed and working. Further configuration is required.<br /> For online documentation and support please refer to nginx.org.<br/> Commercial support is available at nginx.com.<br /> <em>Thank you for using nginx.</em><br /> </body></code></blockquote><br /> <img alt="运维|Docker基础01--入门总结--(狂神说docker学习笔记)" onload="javascript:ImgReSize(this)" src="http://img.readke.com/220511/161500OZ-15.png"/> <br /> 文章图片 <br /> <br /> 11.2 Tomcat部署<br /> <blockquote><code># 官网的使用用完即删 docker run -it--rmtomcat:9.0 </code></blockquote><br /> (1)下载并运行<br /> <blockquote><code>docker pull tomcat docker run -d -p 3355:8080 --name tomcat01 tomcat </code></blockquote><br /> (2)访问测试<br /> 没有问题<br /> <img alt="运维|Docker基础01--入门总结--(狂神说docker学习笔记)" onload="javascript:ImgReSize(this)" src="http://img.readke.com/220511/1615002Q9-16.png"/> <br /> 文章图片 <br /> <br /> (3)进入容器<br /> docker exec -it tomcat01 /bin/bash<br /> 1.容器中的命令是少了<br /> 2.阿里云镜像默认下载的是最小的镜像,保证最小的运行环境。<br /> <blockquote><code>[root@zecan home]# docker exec -it tomcat01 /bin/bash root@7115b1d34558:/usr/local/tomcat# ls BUILDING.txtLICENSEREADME.mdRUNNING.txtconflogstempwebapps.dist CONTRIBUTING.mdNOTICERELEASE-NOTESbinlibnative-jni-libwebappswork root@7115b1d34558:/usr/local/tomcat# cd webapps root@7115b1d34558:/usr/local/tomcat/webapps# ls root@7115b1d34558:/usr/local/tomcat/webapps# cd.. bash: cd..: command not found root@7115b1d34558:/usr/local/tomcat/webapps# cd.. root@7115b1d34558:/usr/local/tomcat# cd webapps.dist root@7115b1d34558:/usr/local/tomcat/webapps.dist# ls ROOTdocsexampleshost-managermanager root@7115b1d34558:/usr/local/tomcat/webapps# cd.. root@7115b1d34558:/usr/local/tomcat# cp -r webapps.dist/*webapps root@7115b1d34558:/usr/local/tomcat# cd webapps root@7115b1d34558:/usr/local/tomcat/webapps# ls ROOTdocsexampleshost-managermanager </code></blockquote><br /> <img alt="运维|Docker基础01--入门总结--(狂神说docker学习笔记)" onload="javascript:ImgReSize(this)" src="http://img.readke.com/220511/161500I91-17.jpg"/> <br /> 文章图片 <br /> <br /> 思考问题:我们以后都要部署项目,如果每次都要进入而哦那个其是不是十分麻烦?我要是可以在容器外部提供一个映射路径,webapps,在外部放置项目,就自动同步到内部就好了!<br /> 11.3 ElasticSearch部署<br /> <ul> <li> es 暴露的端口很多!<br /> </li> <li> es 十分的耗内存<br /> </li> <li> es 的数据一般需要放置到安全目录!挂载<br /> </li> </ul> <blockquote><code># 启动 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2# 启动了 linux就卡死了 dockerstats 查看 cpu的状态# es是十分耗内存的,1.xG 1核2G# 测试一下es是否成功 [root@zecan ~]# curl localhost:9200 { "name" : "ebccbbe4becc", "cluster_name" : "docker-cluster", "cluster_uuid" : "voYT7LkXQhqtoz8PcDmUbg", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } </code></blockquote><br /> # 增加内存的限制<br /> <blockquote><code>#x修改配置文件 -e 环境配置修改 docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms128m -Xmx512m"elasticsearch:7.6.2添加 ’-e ES_JAVA_OPTS="-Xms128m -Xmx512m" ‘ 配置ElasticSearch的虚拟机占用的内存大小。 docker stats 查看资源占用情况 </code></blockquote><br /> <img alt="运维|Docker基础01--入门总结--(狂神说docker学习笔记)" onload="javascript:ImgReSize(this)" src="http://img.readke.com/220511/1615005c4-18.png"/> <br /> 文章图片 <br /> <br /> 作业:使用kibanna连接es?思考网络如何才能来连接过去。<br /> <img alt="运维|Docker基础01--入门总结--(狂神说docker学习笔记)" onload="javascript:ImgReSize(this)" src="http://img.readke.com/220511/1615005942-19.jpg"/> <br /> 文章图片 <br /> <br /> <ol> <li>图形化管理工具Portaniner安装<br> Portaniner是Docker的图形化管理工具,类似的工具还有Rancher(学到CI/CD再用)<br> 下载运行Portaniner镜像并运行,设置本机映射端口为8088<br> docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer<br> -v 挂载</li> </ol> 访问测试:外网(阿里云开通外网)<br> 安装教程:https://blog.csdn.net/weixin_44421461/article/details/109475411<br> 第一次登录设置admin用户的密码<br /> 我们建造的是单机版,直接选择Local,点击连接<br> 如果是阿里云服务器记得设置安全组,选择连接本地的Docker,整体界面预览如下图:<br /> 12.Docker镜像详解 12.1 什么是镜像<br /> 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需要的所有内容,包括代码,运行时(一个程序在运行或者在被执行的依赖)、库,环境变量和配置文件。<br /> 所有的应用,直接打包docker镜像,就可以直接跑起来<br> 镜像来源有三:<br> ● 仓库下载<br> ● 拷贝<br> ● 自己创造镜像<br /> 12.2 Docker镜像加载原理<br /> Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统是UnionFS联合文件系统。<br /> 12.3 分层理解<br /> 查看镜像分层的方式可以通过docker image inspect+镜像 命令!<br /> <blockquote><code>"RootFS": { "Type": "layers", "Layers": [ "sha256:e8b689711f21f9301c40bf2131ce1a1905c3aa09def1de5ec43cf0adf652576e", "sha256:b43651130521eb89ffc3234909373dc42557557b3a6609b9fed183abaa0c4085", "sha256:8b9770153666c1eef1bc685abfc407242d31e34f180ad0e36aff1a7feaeb3d9c", "sha256:6b01cc47a390133785a4dd0d161de0cb333fe72e541d1618829353410c4facef", "sha256:0bd13b42de4de0a0d0cc3f1f162cd0d4b8cb4ee20cbea7302164fdc6894955fd", "sha256:146262eb38412d6eb44be1710bfe0f05d3493831f82b1c2be8dc8d9558c9f033" ] </code></blockquote><br /> 12.4 提交镜像<br /> 使用docker commit 命令提交容器成为一个新的版本<br /> docker commit -m=“提交的描述信息” -a=“作者” 容器id 目标镜像名:[TAG]<br /> 由于默认的Tomcat镜像的webapps文件夹中没有任何内容,需要从webapps.dist中拷贝文件到webapps文件夹。下面自行制作镜像:就是从webapps.dist中拷贝文件到webapps文件夹下,并提交该镜像作为一个新的镜像。使得该镜像默认的webapps文件夹下就有文件。具体命令如下:<br> #1.复制文件夹<br /> <blockquote><code>[root@zecan~]# docker ps CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 0f8ea2f53e32tomcat"catalina.sh run"2 minutes agoUp 2 minutes0.0.0.0:8080->8080/tcpsharp_diffie [root@zecan~]# docker exec -it 0f8ea2f53e32 /bin/bash root@0f8ea2f53e32:/usr/local/tomcat# ls BUILDING.txtLICENSEREADME.mdRUNNING.txtconflogstempwebapps.dist CONTRIBUTING.mdNOTICERELEASE-NOTESbinlibnative-jni-libwebappswork root@0f8ea2f53e32:/usr/local/tomcat# cp -r webapps.dist/* webapps root@0f8ea2f53e32:/usr/local/tomcat# cd webapps root@0f8ea2f53e32:/usr/local/tomcat/webapps# ls ROOTdocsexampleshost-managermanager root@0f8ea2f53e32:/usr/local/tomcat/webapps# </code></blockquote><br /> #2.提交镜像作为一个新的镜像<br /> <blockquote><code>[root@zecan~]# docker commit -a="zecan" -m="add webapps app" 0f8ea2f53e32 tomcat02:1.0 sha256:ad1fdd24828b785a5d4abcb980d19178e1c30123b4ce588c4225a0fbfaf4ad40 [root@zecan~]# docker images REPOSITORYTAGIMAGE IDCREATEDSIZE tomcat021.0ad1fdd24828b15 seconds ago684MB tomcatlatest5db6fed793e912 hours ago680MB nginxlatest04661cdce5816 days ago141MB mysqllatestecac195d15af4 weeks ago516MB redislatest7faaec6832384 weeks ago113MB hello-worldlatestfeb5d9fea6a57 weeks ago13.3kB centoslatest5d0da3dc97642 months ago231MB portainer/portainerlatest580c0e4e98b08 months ago79.1MB elasticsearch7.6.2f29a1ee4103020 months ago791MB </code></blockquote><br /> #3.运行容器<br /> <blockquote><code>[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker run -it mytomcat:1.0 /bin/bash root@1645774d4605:/usr/local/tomcat# cd webapps root@1645774d4605:/usr/local/tomcat/webapps# ls ROOTdocsexampleshost-managermanager wz99sm8v95sckz8bd2c4Z ~]# docker images REPOSITORYTAGIMAGE IDCREATEDSIZE mytomcat1.0f189aac861de7 seconds ago653MB mysql5.7f07dfa83b5286 days ago448MB tomcatlatestfeba8d001e3f10 days ago649MB nginxlatestae2feff98a0c12 days ago133MB centoslatest300e315adb2f2 weeks ago209MB portainer/portainerlatest62771b0b9b095 months ago79.1MB elasticsearch7.6.2f29a1ee410309 months ago791MB </code></blockquote><br /> 学习过程搜索:<br> docker run容器的时候/bin/bash到底在表达什么<br> Linux下“/”和“~”的区别<br> 端口冲突(Address already in use)解决方法<br> linux如何查看端口占用情况<br /></p> <div class="dede_pages"><ul></ul></div> <div class="pcd_ad"> <center><div class="_ahwullr0ac"></div> <script type="text/javascript"> (window.slotbydup = window.slotbydup || []).push({ id: "u6834461", container: "_ahwullr0ac", async: true }); </script> <script type="text/javascript" src="//cpro.baidustatic.com/cpro/ui/cm.js" async="async" defer="defer" > </script></center> </div> <div class="mbd_ad"> <div style=margin-top:10px;margin-bottom:10px;> <div class="_i7aftr79jl"></div> <script type="text/javascript"> (window.slotbydup = window.slotbydup || []).push({ id: "u5950612", container: "_i7aftr79jl", async: true }); </script> <!-- ½űֻһ --> <script type="text/javascript" src="//cpro.baidustatic.com/cpro/ui/cm.js" async="async" defer="defer" > </script> </div> </div> <h3>推荐阅读</h3> <ul class="post-loop post-loop-default cols-0"> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/3322603.html" title="特别淘气的孩子怎么教育"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="特别淘气的孩子怎么教育" src="http://img.readke.com/231031/101335A14-0-lp.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/3322603.html"> <b>特别淘气的孩子怎么教育 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/1071709.html" title="怎么样在股市里买定投基金 如何购买基金定投"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="怎么样在股市里买定投基金 如何购买基金定投" src="/images/defaultpic.gif"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/1071709.html"> <b>怎么样在股市里买定投基金 如何购买基金定投 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/2804948.html" title="国足为什么输球不暴怒,却因为一句玩笑而暴怒呢?"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="国足为什么输球不暴怒,却因为一句玩笑而暴怒呢?" src="/images/defaultpic.gif"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/2804948.html"> <b>国足为什么输球不暴怒,却因为一句玩笑而暴怒呢? </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/2168957.html" title="山东省教育云服务平台官方入口 山东省教育云服务平台官网入口"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="山东省教育云服务平台官方入口 山东省教育云服务平台官网入口" src="http://img.readke.com/230521/0246291P1-0-lp.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/2168957.html"> <b>山东省教育云服务平台官方入口 山东省教育云服务平台官网入口 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/1152489.html" title="核酸检测igg阳性能转阴吗 核酸检测igg阳性是什么意思"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="核酸检测igg阳性能转阴吗 核酸检测igg阳性是什么意思" src="/images/defaultpic.gif"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/1152489.html"> <b>核酸检测igg阳性能转阴吗 核酸检测igg阳性是什么意思 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/1623480.html" title="小孩夏季适合吃什么鱼 小孩夏季适合吃什么鱼好"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="小孩夏季适合吃什么鱼 小孩夏季适合吃什么鱼好" src="http://img.readke.com/230417/21245Q450-0-lp.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/1623480.html"> <b>小孩夏季适合吃什么鱼 小孩夏季适合吃什么鱼好 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/1834202.html" title="2023年春运购票日历表图片 2023年春运购票日历表"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="2023年春运购票日历表图片 2023年春运购票日历表" src="http://img.readke.com/230428/205Z3I55-0-lp.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/1834202.html"> <b>2023年春运购票日历表图片 2023年春运购票日历表 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/1907804.html" title="男模特培训班大约多少钱 模特的风格包括几种类型"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="男模特培训班大约多少钱 模特的风格包括几种类型" src="/images/defaultpic.gif"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/1907804.html"> <b>男模特培训班大约多少钱 模特的风格包括几种类型 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/0R2935932021.html" title="小天才|小米米兔儿童手表5X测评:延续高配低价,挑战小天才“霸主”地位"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="小天才|小米米兔儿童手表5X测评:延续高配低价,挑战小天才“霸主”地位" src="https://p0.ssl.img.360kuai.com/t01aa2694cfd0b4645a.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/0R2935932021.html"> <b>小天才|小米米兔儿童手表5X测评:延续高配低价,挑战小天才“霸主”地位 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/0Z1124cH021.html" title="Day8(21天|Day8:21天 | 罗马巴黎在行动《见识》4)"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="Day8(21天|Day8:21天 | 罗马巴黎在行动《见识》4)" src="/images/defaultpic.gif"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/0Z1124cH021.html"> <b>Day8(21天|Day8:21天 | 罗马巴黎在行动《见识》4) </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/2732606.html" title="全球疫情8月份能结束吗?"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="全球疫情8月份能结束吗?" src="http://img.readke.com/230715/05011TI9-0-lp.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/2732606.html"> <b>全球疫情8月份能结束吗? </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/2856802.html" title="帅康热水器质量怎么样 帅康热水器服务24小时热线电话"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="帅康热水器质量怎么样 帅康热水器服务24小时热线电话" src="http://img.readke.com/230727/0F15431L-0-lp.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/2856802.html"> <b>帅康热水器质量怎么样 帅康热水器服务24小时热线电话 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/2361130.html" title="百身何赎是什么意思 百身难赎是什么意思"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="百身何赎是什么意思 百身难赎是什么意思" src="http://img.readke.com/230531/2222004302-0-lp.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/2361130.html"> <b>百身何赎是什么意思 百身难赎是什么意思 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/1993937.html" title="平安福主险和重疾共用保额吗"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="平安福主险和重疾共用保额吗" src="http://img.readke.com/230509/0129333025-0-lp.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/1993937.html"> <b>平安福主险和重疾共用保额吗 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/2981037.html" title="支付宝APP中将蚂蚁庄园关掉具体操作步骤"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="支付宝APP中将蚂蚁庄园关掉具体操作步骤" src="http://img.readke.com/230811/22231360W-0-lp.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/2981037.html"> <b>支付宝APP中将蚂蚁庄园关掉具体操作步骤 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/1670784.html" title="蜜蜂喜欢吃什么食物,蜜蜂喜欢吃什么食物啊"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="蜜蜂喜欢吃什么食物,蜜蜂喜欢吃什么食物啊" src="http://img.readke.com/230420/0643534G2-0-lp.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/1670784.html"> <b>蜜蜂喜欢吃什么食物,蜜蜂喜欢吃什么食物啊 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/2051017.html" title="舔狗是什么意思梗"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="舔狗是什么意思梗" src="http://img.readke.com/230512/2014214T4-0-lp.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/2051017.html"> <b>舔狗是什么意思梗 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/3002530.html" title="有哪些超级好听,时尚的纯音乐,英文曲,轻音乐?"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="有哪些超级好听,时尚的纯音乐,英文曲,轻音乐?" src="http://img.readke.com/230815/0AA63442-0-lp.jpg"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/3002530.html"> <b>有哪些超级好听,时尚的纯音乐,英文曲,轻音乐? </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/2203117.html" title="商品的概念及与产品的区别"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="商品的概念及与产品的区别" src="/images/defaultpic.gif"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/2203117.html"> <b>商品的概念及与产品的区别 </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/091H1bT2021.html" title="“银河补习班”是每位父母都得补上的“爱的必修课”"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="“银河补习班”是每位父母都得补上的“爱的必修课”" src="/images/defaultpic.gif"> </a> </div> <div class="item-content"> <h4 class="item-title"> <a href="/c/091H1bT2021.html"> <b>“银河补习班”是每位父母都得补上的“爱的必修课” </b></a></h4> <div class="item-meta"> <div class="item-meta-right"> </div> </div> </div> </li> </ul> <p><br /><ul class="post-loop post-loop-list cols-4"><li><a href="/c/686649.html" title="#|【Docker】<云原生>Linux安装Docker(无错完整)" target="_blank">#|【Docker】<云原生>Linux安装Docker(无错完整) </a></li> <li><a href="/c/686091.html" title="#|LeetCode 209. 长度最小的子数组(中等、数组)day23" target="_blank">#|LeetCode 209. 长度最小的子数组(中等、数组)day23 </a></li> <li><a href="/c/685881.html" title="案例分享|智慧广电的“宽带加速”之路,博睿数据来“私人定制”" target="_blank">案例分享|智慧广电的“宽带加速”之路,博睿数据来“私人定制” </a></li> <li><a href="/c/680224.html" title="docker with devicemapper storage driver" target="_blank">docker with devicemapper storage driver </a></li> <li><a href="/c/679074.html" title="#|基于节点导纳矩阵的三相配电系统建模(Matlab实现)" target="_blank">#|基于节点导纳矩阵的三相配电系统建模(Matlab实现) </a></li> <li><a href="/c/679072.html" title="#|送给她超浪漫的表白信——她感动哭了(.html)" target="_blank">#|送给她超浪漫的表白信——她感动哭了(.html) </a></li> <li><a href="/c/679071.html" title="#|超级炫酷的3D旋转美女图——Python实现" target="_blank">#|超级炫酷的3D旋转美女图——Python实现 </a></li> <li><a href="/c/679069.html" title="#|求解热电联产经济调度问题的改进遗传与粒子群算法" target="_blank">#|求解热电联产经济调度问题的改进遗传与粒子群算法 </a></li> <li><a href="/c/678145.html" title="docker|docker三剑客之docker-compose和搭建wordpress的博客" target="_blank">docker|docker三剑客之docker-compose和搭建wordpress的博客 </a></li> </ul></p> <div class=entry-copyright> <p></p> </div> </div> <div class="entry-footer"> <div class="prev-next sb br mb clearfix"> <p class="post-prev fl ellipsis">上一篇:<a href='/c/686647.html'>小程序|小程序云开发从入门到上线看这一篇就够了</a> </p> <p class="post-next fr ellipsis">下一篇:<a href='/c/686649.html'>#|【Docker】<云原生>Linux安装Docker(无错完整)</a> </p> </div> </div> </div> </article> </main> <aside class="sidebar"> <div class="widget widget_post_thumb"> <h3 class="widget-title"><span>更多...</span></h3> <ul> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/686649.html" title="#|【Docker】<云原生>Linux安装Docker(无错完整)"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="#|【Docker】<云原生>Linux安装Docker(无错完整)" src="http://img.readke.com/220511/1615154E6-0-lp.jpg"> </a></div> <div class="item-content"> <p class="item-title"><a href="/c/686649.html" title="#|【Docker】<云原生>Linux安装Docker(无错完整)">#|【Docker】<云原生>Linux安装Docker(无错完整)</a></p> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/686648.html" title="运维|Docker基础01--入门总结--(狂神说docker学习笔记)"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="运维|Docker基础01--入门总结--(狂神说docker学习笔记)" src="http://img.readke.com/220511/1615005619-0-lp.jpg"> </a></div> <div class="item-content"> <p class="item-title"><a href="/c/686648.html" title="运维|Docker基础01--入门总结--(狂神说docker学习笔记)">运维|Docker基础01--入门总结--(狂神说docker学习笔记)</a></p> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/686647.html" title="小程序|小程序云开发从入门到上线看这一篇就够了"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="小程序|小程序云开发从入门到上线看这一篇就够了" src="http://img.readke.com/220511/16144H352-0-lp.jpg"> </a></div> <div class="item-content"> <p class="item-title"><a href="/c/686647.html" title="小程序|小程序云开发从入门到上线看这一篇就够了">小程序|小程序云开发从入门到上线看这一篇就够了</a></p> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/686646.html" title="linux|前后端分离 -- Spring Boot + Vue实现视频管理系统 并部署阿里云服务器"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="linux|前后端分离 -- Spring Boot + Vue实现视频管理系统 并部署阿里云服务器" src="http://img.readke.com/220511/1614324337-0-lp.jpg"> </a></div> <div class="item-content"> <p class="item-title"><a href="/c/686646.html" title="linux|前后端分离 -- Spring Boot + Vue实现视频管理系统 并部署阿里云服务器">linux|前后端分离 -- Spring Boot + Vue实现视频管理系统 并部署阿里云服务器</a></p> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/686645.html" title="阿里云服务器相关|云原生Java架构师的第一课阿里云部署-KubeSphere平台安装"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="阿里云服务器相关|云原生Java架构师的第一课阿里云部署-KubeSphere平台安装" src="http://img.readke.com/220511/1614211E4-0-lp.jpg"> </a></div> <div class="item-content"> <p class="item-title"><a href="/c/686645.html" title="阿里云服务器相关|云原生Java架构师的第一课阿里云部署-KubeSphere平台安装">阿里云服务器相关|云原生Java架构师的第一课阿里云部署-KubeSphere平台安装</a></p> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/686607.html" title="投稿|特步,尴尬的行业老三"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="投稿|特步,尴尬的行业老三" src="http://img.readke.com/220511/1604051454-0-lp.jpg"> </a></div> <div class="item-content"> <p class="item-title"><a href="/c/686607.html" title="投稿|特步,尴尬的行业老三">投稿|特步,尴尬的行业老三</a></p> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/686557.html" title="Android学习-列表视图ListView"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="Android学习-列表视图ListView" src="/images/defaultpic.gif"> </a></div> <div class="item-content"> <p class="item-title"><a href="/c/686557.html" title="Android学习-列表视图ListView">Android学习-列表视图ListView</a></p> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/686556.html" title="android:targetSdkVersion更新引发的“惨案”"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="android:targetSdkVersion更新引发的“惨案”" src="/images/defaultpic.gif"> </a></div> <div class="item-content"> <p class="item-title"><a href="/c/686556.html" title="android:targetSdkVersion更新引发的“惨案”">android:targetSdkVersion更新引发的“惨案”</a></p> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/686555.html" title="Android部分知识点代码示例"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="Android部分知识点代码示例" src="/images/defaultpic.gif"> </a></div> <div class="item-content"> <p class="item-title"><a href="/c/686555.html" title="Android部分知识点代码示例">Android部分知识点代码示例</a></p> </div> </li> <li class="item"> <div class="item-img"> <a class="item-img-inner" href="/c/686554.html" title="Android 的基础知识点"> <img width="480" height="300" class="attachment-default size-default wp-post-image j-lazy" alt="Android 的基础知识点" src="/images/defaultpic.gif"> </a></div> <div class="item-content"> <p class="item-title"><a href="/c/686554.html" title="Android 的基础知识点">Android 的基础知识点</a></p> </div> </li> </ul> </div> </aside> </div> </div> <footer class="footer"> <div class="container"> <div class="clearfix"> <div class="footer-col footer-col-logo"> <!--<img src="/skin/images/logo-footer.png">--></div> <div class="footer-col footer-col-copy"> <ul class="footer-nav hidden-xs"> <li class="menu-item menu-item-706"><a href="/baike/">生活百科</a></li> <li class="menu-item menu-item-706"><a href="/it/">it技术</a></li> </ul> <div class="copyright"> <p>Copyright © 2017-2022 锐客网 <a href="http://beian.miit.gov.cn/" target="_blank" rel="nofollow">京ICP备11041112号-41</a> </p> </div> </div> <div class="footer-col footer-col-sns"> <div class="footer-sns"> </div> </div> </div> </div> </footer> <div class="action action-style-0 action-color-0 action-pos-1" style="bottom:15%;"> <div class="action-item gotop j-top"> <i class="web-icon wi action-item-icon"><svg aria-hidden="true"> <use xlink:href="#wi-arrow-up-2"></use> </svg></i></div> </div> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?79e4e485d34c6fc717489eaa10b314e3"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </div> <script>var _web_js={};</script> <script src="/skin/js/index.js"></script> </body> </html>