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

Docker技术入门与实战【2.2】

11.6 CMS内容管理系统Content Management SystemCMS指的是提供内容编辑服务的平台程序。CMS可以让不懂编程的普通人方便又轻松地发布、更改和管理各类数字内容主要以文本和图像为主。下面笔者将以WordPress为例介绍如何使用Docker运行CMS。WordPress简介WordPress是风靡全球的免费开源的内容管理系统。WordPress是博客、企业官网、产品首页等内容相关平台的主流实现方案之一除WordPress之外还有Drupal、Joomla、Typo3等CMS系统。WordPress基于PHP和MySQL架构设计简单明了可以方便地制作主题、插件和各种功能模块。更重要的是WordPress的社区非常庞大在线资源非常丰富并且在各大网络空间商和云平台中受到广泛的支持。根据2013年8月的统计数据流量排名前一千万的网站中有22%使用了WordPress系统。使用官方镜像首先通过Docker Hub下载官方WordPress镜像$ sudo docker pull wordpress然后就可以创建并运行一个WordPress容器并连接到mysql容器$ sudo docker run --name some-wordpress --link some-mysql:mysql -d wordpress启动容器时可以带以下环境参数·-e WORDPRESS_DB_USERhttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... 设置WrodPress的数据库用户名默认是“root”。·-e WORDPRESS_DB_PASSWORDhttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... 设置WordPress的数据库密码默认值是连接至此WordPress容器的MySQL容器的MYSQL_ROOT_PASSWORD环境变量的值。-e WORDPRESS_DB_NAMEhttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... 设置WordPress所使用的数据库的名称默认 是“wordpress”。 ·-e WORDPRESS_AUTH_KEYhttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/...-e WORDPRESS_SECURE_AUTH_KEYhttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/...-e WORDPRESS_LOGGED_IN_KEYhttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/...-e WORDPRESS_NONCE_KEYhttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/...-e WORDPRESS_AUTH_SALThttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/...-e WORDPRESS_SECURE_AUTH_SALThttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/...-e WORDPRESS_LOGGED_IN_SALThttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/...-e WORDPRESS_NONCE_SALThttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... 加密盐和随机串默认值是随机的SHA1值。如果WORDPRESS_DB_NAME指定的数据库在MySQL容器中不存在那么此镜像会使用WORDPRESS_DB_USER用户自动创建一个同名数据库。同样用户可以使用-p参数来进行端口映射$ sudo docker run --name some-wordpress --link some-mysql:mysql -p 8080:80 -d wordpress此时可在浏览器中访问http://localhost:8080来打开WordPress页面。WordPress官方镜像的更多信息可以参考https://registry.hub.docker.com/_/wordpress/。11.7 本章小结本章首先介绍了Apache和Ningx两种比较流行的Web服务器镜像的创建其中Nginx还介绍了淘宝的衍生版本。但是我们介绍的安装、配置、编译的方法都是依据一些比较常见的需求如果读者有其他需求比如Apache、Nginx需要编译新的功能模块应该根据自己需求来重新定制镜像特别是在生产环境中一些细微的参数配置可能带来性能上巨大的变化。本章的2.3.3和2.3.4小节介绍了目前比较流行的Java中间件服务器Tomcat和Weblogic的镜像创建。笔者一直认为中间件服务器是Docker容器应用的最佳实践原因如下·中间件服务器是除数据库服务器外的主要计算节点很容易成为性能瓶颈所以通常需要大批量部署而Docker对于批量部署有着许多先天的优势详见本书第一部分内容。·中间件服务器结构清晰在剥离了配置文件、日志、代码目录之后容器几乎可以处于零增长状态这使得容器的迁移和批量部署更加方便。·中间件服务器很容易实现集群在使用硬件的F5软件的Nginx等负载均衡后中间件服务器集群变得非常容易。值得注意的是由于目前Docker暂不支持修改运行中的容器的一些配置比如无法为运行中的容器映射更多的宿主主机目录无法为运行中的主机映射更多宿主主机的网络等等读者在使用中间件容器的时候需要事先规划好容器的用途和可能开放的网络端口等资源。本章的最后两个小节介绍了比较常见的LAMP套件和WordPress镜像的创建。其在开发环境中使用非常方便但是生产环境中因为性能和其他方面的一些考虑通常会有专门的Web和数据库服务器。需要特别注意的是对于程序代码、程序的资源目录、日志、数据库文件等需要实时更新的数据一定要通过-v参数映射到宿主主机的目录中来使用Docker的AUFS文件格式会产生较大的性能问题原理部分请参考本书的第一部分和第三部分。IBM研究院也针对Docker的各项性能做了比较详细的测试可以从这里下载报告http://domino.research.ibm.com/library/cyberdig.nsf/papers/0929052195DD819C85257D2300681E7B/$File/rc25482.pdf。第12章 数据库应用主流数据库方案包括关系数据库SQL和非关系数据库NoSQL方案。关系数据库是建立在关系模型基础上的数据库借助于集合代数等数学概念和方法来处理数据库中的数据支持复杂的事物处理和结构化查询。目前流行的关系型数据库有MySQL、Oracle、PostGreSQL、MariaDB、SQLServer等等。非关系数据库是新兴的数据库技术它放弃了传统关系型数据库的部分强一致性限制使其更适用于需要大规模的并行处理的生产环境并能在这些场景下发挥出优异的性能。NoSQL是关系型数据库的良好补充代表产品有MongoDB、Redis、CouchDB等。本章选取了最具代表性的MySQL、Oracle、MongoDB三款数据库来展示基于Docker创建相关镜像并进行应用的过程。12.1 MySQLMySQL是流行的开源关系数据库实现因为其高性能、可靠性和适应性而得到广泛应用和关注。1.下载文件从GitHub Dockerpool社区下载mySQL镜像项目$ git clone https://github.com/DockerPool/mysql.git Cloning into mysqlhttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... remote: Counting objects: 13 done. remote: Compressing objects: 100% (13/13) done. remote: Total 13 (delta 1) reused 8 (delta 0) Unpacking objects: 100% (13/13) done. Checking connectivityhttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... done. 查看内容包括已经写好的Dockerfile和若干脚本 $ cd mysql $ ls create_db.sh Dockerfile import_sql.sh LICENSE my.cnf mysqld_charset.cnf README.md run.sh 其中Dockerfile内容为 #本文件参考了tutum的Dockerfile FROM sshd MAINTAINER Waitfish dwj_zz163.com #安装软件 ENV DEBIAN_FRONTEND noninteractive RUN apt-get update \ apt-get -yq install mysql-server-5.6 pwgen \ rm -rf /var/lib/apt/lists/* # 删除预安装的数据库文件 RUN rm -rf /var/lib/mysql/* # 添加文件夹下的MYSQL配置文件 ADD my.cnf /etc/mysql/conf.d/my.cnf ADD mysqld_charset.cnf /etc/mysql/conf.d/mysqld_charset.cnf # 添加MYSQL的脚本 ADD import_sql.sh /import_sql.sh ADD run.sh /run.sh RUN chmod 755 /*.sh # 设置环境变量 用户名以及秘密 ENV MYSQL_USER admin ENV MYSQL_PASS **Random** # 设置主从复制模式下的环境变量 ENV REPLICATION_MASTER **False** ENV REPLICATION_SLAVE **False** ENV REPLICATION_USER replica ENV REPLICATION_PASS replica # 设置可以允许挂载的卷 可以用来备份数据库和配置文件 VOLUME [/etc/mysql /var/lib/mysql] # 设置可以映射的端口 如果是从我们的sshd镜像继承的话 默认还会开启22端口 EXPOSE 3306 CMD [/run.sh] 2.创建镜像 使用docker build命令来创建镜像mysqllatest $ sudo docker build -t mysql:latest . Sending build context to Docker daemon 95.23 kB Sending build context to Docker daemon Step 0 : FROM sshd --- 312c93647dc3 Step 1 : MAINTAINER Waitfish dwj_zz163.com --- Running in a149f8a7933f --- edbbfe8b4895 Removing intermediate container a149f8a7933f Step 2 : ENV DEBIAN_FRONTEND noninteractive --- Running in e80cbb29cadb --- 81fc6101a236 Removing intermediate container e80cbb29cadb Step 3 : RUN apt-get update apt-get -yq install mysql-server-5.6 pwgen rm -rf /var/lib/apt/lists/* --- Running in 5d220fe833c2 http://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... Removing intermediate container 3c3254e8cc1e Successfully built f008f97bdc14 dwjiZ23pznlje4Z:~/mysql$ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mysql latest f008f97bdc14 About a minute ago 539.1 MB 3.使用镜像 使用默认方式启动后台容器不添加环境变量并使用-P参数自动映射容器的22和3306端口。 $ sudo docker run -d -P mysql 检查容器进程启动情况和端口映射情况可见容器的22端口被映射到本地的49153端口。 $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES eef1632ccd4e mysql:latest /run.sh 8 seconds ago Up 8 seconds 0.0.0.0:49153-22/tcp, 0.0.0.0:49154-3306/tcp angry_einstein 通过映射的本地49153端口SSH登录容器并查看运行的进程。 $ ssh 127.0.0.1 -p 49153 The authenticity of host [127.0.0.1]:49153 ([127.0.0.1]:49153) cant be established. ECDSA key fingerprint is db:35:7a:60:2d:11:d5:97:5a:e6:84:a6:95:f0:4f:32. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added [127.0.0.1]:49153 (ECDSA) to the list of known hosts. Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.2.0-54-generic x86_64) * Documentation: https://help.ubuntu.com/ The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY to the extent permitted by applicable law. rooteef1632ccd4e:~# ps -ef |grep mysql root 1 0 0 20:14 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe mysql 1974 1 0 20:14 ? 00:00:00 /usr/sbin/mysqld --basedir/usr --datadir/var/lib/mysql --plugin-dir/usr/lib/mysql/plugin --usermysql --log-error/var/log/mysql/error root 2022 2010 0 20:15 pts/0 00:00:00 grep --colorauto mysql 默认情况下容器内的MySQL提供了root账号和admin账号其中root账号无需密码但只允许本地访问。 mysql select host user password from mysql.user; ---------------------------------------------------------------- | host | user | password | ---------------------------------------------------------------- | localhost | root | | | eef1632ccd4e | root | | | 127.0.0.1 | root | || ::1 | root | | | localhost | | | | eef1632ccd4e | | | | % | admin | *ADDD6793DD97A040C9B039F72682E5AA31A92C35 | ---------------------------------------------------------------- 7 rows in set (0.00 sec) admin账号拥有远程访问权限。其密码可以使用docker logs命令来查看获取 $ sudo docker logs eef An empty or uninitialized MySQL volume is detected in /var/lib/mysql Installing MySQL http://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... Done! Creating admin user http://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... Waiting for confirmation of MySQL service startup trying 0/13 http://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... Creating MySQL user admin with random password Done! You can now connect to this MySQL Server using: mysql -uadmin -pt1FWuDCgQicT -hhost -Pport Please remember to change the above password as soon as possible! MySQL user root has no password but only allows local connections 141106 20:14:21 mysqld_safe Cant log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect. 141106 20:14:21 mysqld_safe Logging to /var/log/mysql/error.log. 141106 20:14:21 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql上面的t1FWuDCgQicT就是admin的密码。4.指定admin账号用户名和密码用户也可以在启动容器时指定admin账号的用户名和密码例如$ sudo docker run -d -P -e MYSQL_PASSmypass mysql 1b32444ebb7232f885961faa15fb1a052ca93b81c308cc41d16bd3d276c77d755.挂载目录到容器默认情况数据库的数据库文件和日志文件都会存在容器的AUFS文件层这不仅会使得容器变得越来越臃肿不便于迁移、备份等管理而且数据库的性能也会受到影响。因此建议挂载本地主机的目录到容器内例如$ docker run -d -P -v /opt/mysqldb:/var/lib/mysql mysql这样容器就会将数据文件和日志文件都放到指定的本地主机目录下面$ tree /opt/mysqldb/ /opt/mysqldb/ |-- auto.cnf |-- ib_logfile0 |-- ib_logfile1 |-- ibdata1 |-- mysql | |-- columns_priv.MYD | |-- columns_priv.MYI | |-- columns_priv.frm | |-- db.MYD | |-- db.MYI | |-- db.frm | |-- event.MYD | |-- event.MYI | |-- event.frm | |-- func.MYD | |-- func.MYI | |-- func.frm | |-- general_log.CSM http://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... 6.启用主从模式 利用主从模式可以为数据库提供更好的可靠性。 首先创建一个名称为mysql的主容器 $ sudo docker run -d -e REPLICATION_MASTERtrue -P --name mysql mysql 创建从容器并连接到刚刚创建的主容器 $ sudo docker run -d -e REPLICATION_SLAVEtrue -P --link mysql:mysql mysql 注意这里的主mysql服务器的名字必须为mysql否则会收到错误提示Cannotconfigure slaveplease link it to another MySQL container with alias as mysql。 查看容器互联信息 # sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a781d1c74024 mysql:latest /run.sh About a minute ago Up About a minute 0.0.0.0:49167-22/tcp, 0.0.0.0:49168-3306/tcp romantic_fermi 38c73b5555aa mysql:latest /run.sh About a minute ago Up About a minute 0.0.0.0:49165-22/tcp, 0.0.0.0:49166-3306/tcp mysql 现在就可以通过相应的端口来直接连接主或者从MySQL服务器了。12.2 Oracle XEOracle快捷版Oracle XE是一款基于Oracle 11g第2版代码库的小型入门级数据库它具备以下优点·免费开发、部署和分发。·下载速度快。·管理简单。作为一款优秀的入门级数据库它适合以下用户使用·致力于PHP、Java、.NET、XML和开源应用程序的开发人员。·需要免费的入门级数据库进行培训和部署的DBA。·需要入门级数据库进行免费分发的独立软件供应商ISV和硬件供应商。·需要在课程中使用免费数据库的教育机构和学生。Oracle Database XE对安装主机的规模和CPU数量不作限制每台计算机一个数据库但XE将最多存储11GB的用户数据同时最多使用1GB内存和主机上的一个CPU。1.搜索Oracle镜像直接在DockerHub上搜索镜像并下载wnameless/oracle-xe-11g镜像$ sudo docker search -s 10 oracleNAME DESCRIPTION STARS OFFICIAL AUTOMATEDwnameless/oracle-xe-11g SYS SYSTEM password: oracle https://indehttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... 24 [OK]alexeiled/docker-oracle-xe-11g This is a spin off from wnameless/docker-ohttp://www.hzcourse.com/resource/readBook?path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/... 21$ sudo docker pull wnameless/oracle-xe-11g2.启动和使用容器启动容器并分别映射22和1521端口到本地的49160和49161端口。$ sudo docker run -d -p 49160:22 -p 49161:1521 wnameless/oracle-xe-11g使用下列参数可以连接oracle数据库hostname: localhost port: 49161sid: xeusername: system password: oracle Password for SYS使用SSH登录容器默认的用户名为root密码为admin。$ ssh rootlocalhost -p 49160 password: admin12.3 MongoDBMongoDB是一款可扩展、高性能的开源文档Document-Oriented数据库。它采用C开发支持复杂的数据类型和强大的查询语言提供了关系数据库的绝大部分功能。MongoDB由于其高性能、易部署、易使用等特点已经在各种领域都得到了广泛的应用。1.下载文件从GitHub Dockerpool社区帐户下载Mongodb镜像项目$ git clone https://github.com/DockerPool/Mongodb.git查看内容包括写好的Dockerfile和若干脚本等$ cd Mongodb$ lsDockerfile LICENSE README.md run.sh set_mongodb_password.sh其中Dockerfile内容为#设置从我们之前创建的sshd镜像继承。 FROM sshd MAINTAINER waitfish from dockerpool.com(dwj_zz163.com) RUN apt-get update \ apt-get install -y mongodb pwgen \ apt-get clean \ rm -rf /var/lib/apt/lists/* # 创建mongodb存放数据文件的文件夹 RUN mkdir -p /data/db VOLUME /data/db ENV AUTH yes # 添加脚本 ADD run.sh /run.sh ADD set_mongodb_password.sh /set_mongodb_password.sh RUN chmod 755 ./*.sh EXPOSE 27017 EXPOSE 28017 CMD [/run.sh] set_mongodb_password.sh脚本主要负责配置数据库的用户名和密码内容为 #!/bin/bash # 这个脚本主要是用来设置数据库的用户名和密码。 # 判断是否已经设置过密码。 if [ -f /.mongodb_password_set ]; then echo MongoDB password already set! exit 0fi /usr/bin/mongod --smallfiles --nojournal PASS${MONGODB_PASS:-$(pwgen -s 12 1)} _w ord$( [ ${MONGODB_PASS} ] echo preset || echo random ) RET1 while [[ RET -ne 0 ]]; do echo Waiting for confirmation of MongoDB service startup sleep 5 mongo admin --eval help /dev/null 21 RET$? done # 通过docker logs id可以看到下面的输出。 echo Creating an admin user with a ${_word} password in MongoDB mongo admin --eval db.addUser({user: admin pwd: $PASS roles: [ userAdminAnyDatabase, dbAdminAnyDatabase ]}); mongo admin --eval db.shutdownServer(); echo Done! touch /.mongodb_password_set echo echo You can now connect to this MongoDB server using: echo echo mongo admin -u admin -p $PASS --host host --port port echo echo Please remember to change the above password as soon as possible! echo run.sh脚本是主要的启动脚本内容为 #!/bin/bash if [ ! -f /.mongodb_password_set ]; then /set_mongodb_password.sh fi if [ $AUTH yes ]; then # 这里读者可以自己设定Mongodb的启动参数。 export mongodb/usr/bin/mongod --nojournal --auth --httpinterface --rest else export mongodb/usr/bin/mongod --nojournal --httpinterface --rest fi if [ ! -f /data/db/mongod.lock ]; then eval $mongodb else export mongodb$mongodb --dbpath /data/db rm /data/db/mongod.lock mongod --dbpath /data/db --repair eval $mongodb fi 2.创建镜像 根据Dockerfile创建镜像mongodblatest $ sudo docker build -t mongodb . $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mongodb latest e3200a24cf28 3 hours ago 256 MB 3.使用示范 启动后台容器并分别映射27017和28017端口到本地 $ sudo docker run -d -p 27017:27017 -p 28017:28017 mongodb 通过docker logs来查看默认的admin帐户密码 $ sudo docker logs sa9 You can now connect to this MongoDB server using: mongo admin -u admin -p 5elsT6KtjrqV --host host --port port Please remember to change the above password as soon as possible! 输出中的5elsT6KtjrqV就是admin用户的密码 还可以利用环境变量在容器启动时指定密码 $ sudo docker run -d -p 27017:27017 -p 28017:28017 -e MONGODB_PASSmypass mongodb 甚至设定不需要密码 $ sudo docker run -d -p 27017:27017 -p 28017:28017 -e AUTHno mongodb 同样读者也可以使用-v参数来映射本地目录到容器。 4.详细启动参数 Mongodb的启动参数有很多包括 --quiet # 安静输出 --port arg # 指定服务端口号 默认端口27017 --bind_ip arg # 绑定服务IP 若绑定127.0.0.1 则只能本机访问 不指定默认本地所有IP --logpath arg # 指定MongoDB日志文件 注意是指定文件不是目录 --logappend # 使用追加的方式写日志 --pidfilepath arg # PID File的完整路径 如果没有设置 则没有PID文件 --keyFile arg # 集群的私钥的完整路径 只对于Replica Set架构有效 --unixSocketPrefix arg # UNIX域套接字替代目录 默认为/tmp --fork # 以守护进程的方式运行MongoDB 创建服务器进程 --auth # 启用验证 --cpu # 定期显示CPU的CPU利用率和iowait --dbpath arg # 指定数据库路径 --diaglog arg # diaglog选项 0off 1W 2R 3both 7Wsome reads --directoryperdb # 设置每个数据库将被保存在一个单独的目录 --journal # 启用日志选项 MongoDB的数据操作将会写入到journal文件夹的文件里 --journalOptions arg # 启用日志诊断选项 --ipv6 # 启用IPv6选项 --jsonp # 允许JSONP形式通过HTTP访问有安全影响 --maxConns arg # 最大同时连接数默认2000 --noauth # 不启用验证 --nohttpinterface # 关闭http接口 默认关闭27018端口访问 --noprealloc # 禁用数据文件预分配(往往影响性能) --noscripting # 禁用脚本引擎--notablescan # 不允许表扫描 --nounixsocket # 禁用Unix套接字监听 --nssize arg (16) # 设置信数据库.ns文件大小(MB) --objcheck # 在收到客户数据 检查的有效性 --profile arg # 档案参数 0off 1slow 2all --quota # 限制每个数据库的文件数 设置默认为8 --quotaFiles arg # number of files allower per db requires --quota --rest # 开启简单的rest API --repair # 修复所有数据库run repair on all dbs --repairpath arg # 修复库生成的文件的目录 默认为目录名称dbpath --slowms arg (100) # value of slow for profile and console log --smallfiles # 使用较小的默认文件 --syncdelay arg (60) # 数据写入磁盘的时间秒数(0never 不推荐) --sysinfo # 打印一些诊断系统信息 --upgrade # 如果需要升级数据库 * Replicaton 参数 ------------------------------------------------------------------------------- --fastsync # 从一个dbpath里启用从库复制服务 该dbpath的数据库是主库的快照 可用于快速启用同步 --autoresync # 如果从库与主库同步数据差得多 自动重新同步 --oplogSize arg # 设置oplog的大小(MB) * 主/从参数 ------------------------------------------------------------------------------- --master # 主库模式 --slave # 从库模式 --source arg # 从库 端口号 --only arg # 指定单一的数据库复制 --slavedelay arg # 设置从库同步主库的延迟时间 * Replica set副本集 选项 ------------------------------------------------------------------------------- --replSet arg # 设置副本集名称 * Sharding(分片)选项 ------------------------------------------------------------------------------- --configsvr # 声明这是一个集群的config服务 默认端口27019 默认目录/data/configdb --shardsvr # 声明这是一个集群的分片 默认端口27018 --noMoveParanoia # 关闭偏执为moveChunk数据保存 上述参数也可以直接在mongod.conf配置文件中配置例如 dbpath /data/mongodb logpath /data/mongodb/mongodb.log logappend true port 27017 fork true auth true12.4 本章小结本章MySQL小节介绍了标准镜像的创建过程以及如何将数据库文件映射到宿主主机来减少AUFS系统的性能损耗还介绍了MySQL数据库的主从复制模式读者通过阅读该小节应该能够进一步了解如何在生产环境中部署和使用MySQL的Docker容器。Oracle小节主要以Oracle express版本为主。笔者认为在Docker容器中来运行生产的Oracle数据库不是十分合适主要有如下几个方面的原因·Oracle作为一个大型的企业级数据库对运行环境的要求十分苛刻需要在操作系统内核、网络等多方面进行调整来达到最优化的性能而这些方面都不是Docker的强项。·Oracle数据库拥有自己非常完善的集群软件包括Clusterware、ASM、Dataguard等组件来保证性能和可用性这方面目前还没有比较好的Docker支持。·购买Oracle软件需要昂贵的授权许可而且Docker技术目前不在Oracle公司支持的操作系统列表里面无法得到Oracle公司的完善的技术支持。虽然如此经过笔者的验证Oracle Express版本可以在Docker中正常运行读者可以用它来快速搭建个人开发、学习Oracle数据库的环境。本章最后还介绍了非关系型数据库MongoDB镜像的创建跟MySQL镜像一样根据该小节介绍创建的镜像拥有许多可以供读者自定义的选项来创建符合自己需求的MongoDB应用。阅读本章需要对特定数据库的配置和结构有一定的基础知识由于篇幅所限无法一一介绍。读者可以通过各大数据库的官方网站查阅相关资料。

相关文章:

Docker技术入门与实战【2.2】

11.6 CMS内容管理系统(Content Management System,CMS)指的是提供内容编辑服务的平台程序。CMS可以让不懂编程的普通人方便又轻松地发布、更改和管理各类数字内容(主要以文本和图像为主)。下面,笔者将以Wor…...

Docker技术入门与实战【2.1】

4.配置Weblogic 首先,修改Weblogic的一些环境变量: root185546d00925:/opt/Middleware/user_projects/domains/base_domain# vi bin/setDomainEnv.sh 使用用户名和密码启动一次Webogic之后,会在/opt/Middleware/user_projects/domains/bas…...

视频即坐标:室内人员高精度无感定位技术白皮书——构建位置、轨迹、预警一体化的空间智能体系

一、白皮书摘要本白皮书由镜像视界(浙江)科技有限公司(以下简称“镜像视界”)独家研发并发布,聚焦室内人员管理的核心痛点,以“视频即坐标”为核心理念,系统阐述镜像视界多视角视觉三维无感定位…...

Phi-mini-MoE-instruct企业应用:代码辅助+数学推理+多语言支持三合一落地

Phi-mini-MoE-instruct企业应用:代码辅助数学推理多语言支持三合一落地 1. 项目概述 Phi-mini-MoE-instruct是一款轻量级混合专家(MoE)指令型小语言模型,专为企业级应用场景设计。这款模型在保持轻量化的同时,通过创…...

AI 流式响应压垮 Spring Boot?SSE 背压控制、客户端断线重连与内存防泄漏实战

AI 流式响应压垮 Spring Boot?SSE 背压控制、客户端断线重连与内存防泄漏实战导读:大模型流式输出(SSE)在 Demo 中丝滑流畅,但一旦接入真实网络环境与高并发场景,极易成为 JVM 的“内存黑洞”。本文不聊 Pr…...

3分钟快速上手:PotPlayer百度翻译插件终极使用指南

3分钟快速上手:PotPlayer百度翻译插件终极使用指南 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 想要观看外语视频却苦于…...

LabVIEW波形图多层图像叠加

LabVIEW 的Plot Images属性支持在波形图、XY 图、数字波形图控件中,于绘图区域设置三层图像分层叠加展示,分别为 Front 顶层、Middle 中层、Back 底层。顶层图像会置于所有图表内容最上方,中层位于曲线与网格线之间,底层放置于网格…...

Phi-4-mini-reasoning教育落地案例:在线考试系统自动阅卷与评分

Phi-4-mini-reasoning教育落地案例:在线考试系统自动阅卷与评分 1. 项目背景与挑战 在线教育平台面临的最大痛点之一就是大规模考试的阅卷工作。传统人工阅卷方式存在几个明显问题: 效率低下:一位老师每天最多批改200-300份试卷成本高昂&a…...

保姆级教程:手把手教你用R语言和CIBERSORT分析肿瘤免疫浸润(附代码和避坑指南)

肿瘤免疫浸润分析实战:R语言与CIBERSORT全流程解析 在肿瘤微环境研究中,免疫细胞浸润分析已成为揭示疾病机制和治疗反应的关键技术。CIBERSORT作为计算免疫细胞组成的金标准工具,通过反卷积算法从批量转录组数据中解析出22种免疫细胞的比例。…...

Qianfan-OCR代码实例:基于requests的带Layout分析OCR封装类

Qianfan-OCR代码实例:基于requests的带Layout分析OCR封装类 1. 项目概述 Qianfan-OCR是百度千帆推出的开源端到端文档智能多模态模型,基于4B参数的Qwen3-4B语言模型构建。这个多模态视觉语言模型(VLM)采用Apache 2.0协议,完全开源且可商用&…...

Phi-mini-MoE-instruct真实生成效果:MATH竞赛题分步推导+LaTeX公式渲染效果展示

Phi-mini-MoE-instruct真实生成效果:MATH竞赛题分步推导LaTeX公式渲染效果展示 1. 模型能力概览 Phi-mini-MoE-instruct是一款轻量级混合专家(MoE)指令型小语言模型,在多个基准测试中展现出卓越性能: 代码能力&…...

Real-Anime-Z效果增强:ChatGPT辅助生成高质量动漫剧情与角色设定

Real-Anime-Z效果增强:ChatGPT辅助生成高质量动漫剧情与角色设定 1. 创作流程的革命性突破 传统的动漫创作往往需要经历剧本构思、角色设定、分镜绘制等多个独立环节,每个环节都需要专业人才投入大量时间。而现在,通过ChatGPT与Real-Anime-…...

百度网盘直链解析:三步告别龟速下载的完整指南

百度网盘直链解析:三步告别龟速下载的完整指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾面对百度网盘几十KB的下载速度感到绝望?当别人都…...

Flux2-Klein-9B-True-V2多场景应用:设计师灵感辅助、内容创作者视觉素材库构建

Flux2-Klein-9B-True-V2多场景应用:设计师灵感辅助、内容创作者视觉素材库构建 1. 模型介绍与核心功能 Flux2-Klein-9B-True-V2是基于官方FLUX.2 [klein] 9B改进的文生图/图生图模型,为设计师和内容创作者提供了强大的视觉内容生成能力。这个模型经过专…...

别再滥用EventBus了!盘点Vue项目中那些更适合用Pinia/Vuex的场景

为什么你的Vue项目应该减少EventBus使用?Pinia/Vuex的精准选型指南 在Vue生态中,EventBus常被开发者当作解决组件通信问题的"万能钥匙"。但当项目复杂度上升时,这把钥匙可能会打开潘多拉魔盒——内存泄漏、事件命名冲突、调试困难等…...

real-anime-z风格强化技巧:LoRA强度1.05 vs 1.1对比+cel shading提示词组合效果

real-anime-z风格强化技巧:LoRA强度1.05 vs 1.1对比cel shading提示词组合效果 1. 动漫风格生成的核心要素 real-anime-z作为一款专注于二次元创作的文生图工具,其风格表现力主要取决于三个关键因素: LoRA强度设置:控制动漫风格…...

如何快速检索SQL中的隐藏字符_使用转义与函数处理

SQL中查不到的“空格”常为u00A0、等不可见字符,需用HEX()/DUMP()诊断,MySQL用嵌套REPLACE()或REGEXP_REPLACE()清洗,PostgreSQL推荐translate()或REGEXP_REPLACE()。SQL里查不到的空格,很可能是u00A0或这类不可见字符肉眼看着是“…...

GitHub多领域资源大揭秘:AI、开发技能、工程技术等应有尽有!

【GitHub资源导航】这里有GitHub的相关链接,如GitHub主页、博客、更新日志、文档、客户案例等,还可试用GitHub Copilot和查看最新动态。【人工智能与机器学习】可了解GitHub生态系统及更广泛行业中的人工智能和机器学习知识,包括生成式AI、Gi…...

Anything to RealCharacters 2.5D转真人引擎:个性化AI写真服务开发入门

Anything to RealCharacters 2.5D转真人引擎:个性化AI写真服务开发入门 你有没有想过,把心爱的动漫头像、游戏角色或者二次元插画,一键变成一张以假乱真的真人照片?这听起来像是电影里的黑科技,但现在,借助…...

告别原生Toast!手把手教你封装一个uni-app全局弹窗组件(支持H5/小程序)

告别原生Toast!手把手教你封装一个uni-app全局弹窗组件(支持H5/小程序) 在uni-app开发中,Toast作为最常见的用户反馈组件之一,其原生实现往往难以满足复杂业务场景的需求。想象一下这样的场景:当用户完成支…...

NVIDIA Jetson AGX Orin边缘AI开发套件深度解析与实战指南

1. NVIDIA Jetson AGX Orin开发者套件深度解析NVIDIA最新发布的Jetson AGX Orin开发者套件标志着边缘AI计算进入了一个新的时代。作为一名长期从事嵌入式AI开发的工程师,我认为这套系统最令人兴奋的地方在于它将服务器级的计算能力压缩到了一个手掌大小的模块中。1.…...

线性注意力机制Kimi Linear架构解析与优化实践

1. 线性注意力机制的技术背景与核心挑战Transformer架构在自然语言处理领域取得了革命性成功,但其核心组件self-attention的O(n)计算复杂度成为处理长序列的瓶颈。当序列长度达到百万token级别时,传统注意力机制面临三大核心挑战:计算复杂度爆…...

nli-MiniLM2-L6-H768基础教程:从BERT到MiniLM2的NLI模型演进

nli-MiniLM2-L6-H768基础教程:从BERT到MiniLM2的NLI模型演进 1. 认识自然语言推理(NLI) 自然语言推理(Natural Language Inference)是自然语言处理中的一项基础任务,它需要判断两个句子之间的逻辑关系。想象一下,这就像老师在批改作业时&am…...

Rust async trait 的性能优化实践

Rust异步trait性能优化实践 Rust作为一门注重性能的系统级编程语言,其异步编程模型在近年来得到了广泛应用。async trait作为异步编程的重要工具,其性能优化一直是开发者关注的焦点。本文将深入探讨Rust async trait的性能优化实践,帮助开发…...

LFM2-2.6B-GGUF实战案例:DevOps团队CI/CD日志智能归因分析应用

LFM2-2.6B-GGUF实战案例:DevOps团队CI/CD日志智能归因分析应用 1. 项目背景与价值 在DevOps实践中,CI/CD流水线的日志分析一直是个痛点。当构建失败或测试不通过时,工程师往往需要花费大量时间在冗长的日志中寻找问题根源。LFM2-2.6B-GGUF模…...

Qwen3-4B-Thinking-2507-Gemini-2.5-Flash-Distill效果对比:在健康问答中医学术语准确性专项评测

Qwen3-4B-Thinking-2507-Gemini-2.5-Flash-Distill效果对比:在健康问答中医学术语准确性专项评测 1. 评测背景与模型介绍 在医疗健康领域,AI模型的术语准确性和专业度至关重要。本次评测聚焦Qwen3-4B-Thinking-2507-Gemini-2.5-Flash-Distill模型&…...

AquaPing开源水漏检测模块技术解析与应用

1. AquaPing开源水漏检测模块深度解析在家庭和工业环境中,水管漏水是一个常见但容易被忽视的问题。传统的水漏检测方法往往需要破坏性施工或高昂的专业设备,而AquaPing提供了一种创新的解决方案。这个基于MSP430微控制器的开源硬件模块,通过声…...

Java 基础(六)封装类 Object类

Java基础学习笔记:、equals与包装类的核心考点 哈喽~今天又啃了一波Java基础知识点,主要聚焦在和equals的区别、hashCode的关联,还有包装类的那些易踩坑点,整理成笔记方便以后回顾~ 一、 与 equals&#xf…...

量子微分方程求解器(DQC)原理与实现

1. 量子微分方程求解器(DQC)原理与设计量子微分方程求解器(Differential Quantum Circuit, DQC)的核心思想是将微分方程的求解问题转化为量子电路的参数优化问题。与传统数值方法相比,量子计算在处理高维微分方程时具有潜在的指数级加速优势。1.1 微分方程的参数化表…...

Qwen3.5-9B-GGUF部署教程:NVIDIA L4 GPU低功耗场景下的稳定运行配置

Qwen3.5-9B-GGUF部署教程:NVIDIA L4 GPU低功耗场景下的稳定运行配置 1. 项目介绍与模型特点 Qwen3.5-9B-GGUF是阿里云开源的Qwen3.5-9B模型经过GGUF格式量化后的版本,特别适合在NVIDIA L4 GPU等中低端显卡上运行。这个90亿参数的稠密模型采用了创新的G…...