一文搞定Docker安装常用软件再也不用到处找了!!!【一】
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助。
作者主页:编程指南针
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师
主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助
收藏点赞不迷路 关注作者有好处
文末获取源码
一、Docker的起源
Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)。
Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目 已经超过 5 万 7 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
二、Docker和虚拟机区别
关于Docker与虚拟机的区别,我在网上找到的一张图,非常直观形象地展示出来,话不多说,直接上图。
比较上面两张图,我们发现虚拟机是携带操作系统,本身很小的应用程序却因为携带了操作系统而变得非常大,很笨重
。Docker是不携带操作系统的,所以Docker的应用就非常的轻巧。另外在调用宿主机的CPU、磁盘等等这些资源的时候,拿内存举例,虚拟机是利用Hypervisor去虚拟化内存,整个调用过程是虚拟内存->虚拟物理内存->真正物理内存,但是Docker是利用Docker Engine去调用宿主的的资源,这时候过程是虚拟内存->真正物理内存。
传统虚拟机 | Docker容器 | |
---|---|---|
磁盘占用 | 几个GB到几十个GB左右 | 几十MB到几百MB左右 |
CPU内存占用 | 虚拟操作系统非常占用CPU和内存 | Docker引擎占用极低 |
启动速度 | (从开机到运行项目)几分钟 | (从开启容器到运行项目)几秒 |
安装管理 | 需要专门的运维技术 | 安装、管理方便 |
应用部署 | 每次部署都费时费力 | 从第二次部署开始轻松简捷 |
耦合性 | 多个应用服务安装到一起,容易互相影响 | 每个应用服务一个容器,达成隔离 |
系统依赖 | 无 | 需求相同或相似的内核,目前推荐是Linux |
三、Docker安装
参考 :一文搞定Linux安装常用软件再也不用到处找了!!!【一】
四、Docker安装常用服务
4.1 安装mysql
4.1.1 拉取mysql镜像到本地
docker pull mysql:5.7 (tag不加默认最新版本)
-- 启动mysql
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD='root' --name mysql5.7 mysql:5.7
4.1.2 docker启动mysql
sudo docker run -p 3306:3306 --name mysql \
-v /usr/local/mydata/mysql/log:/var/log/mysql \
-v /usr/local//mydata/mysql/data:/var/lib/mysql \
-v /usr/local//mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
参数解析:
-
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-
--name:给容器命名
-
-v /mydata/mysql/log:/var/log/mysql:将配置文件挂载到主机/mydata/..
-
-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码为root
4.1.3 配置mysql
-
进入挂载的mysql配置目录
cd /mydata/mysql/conf
-
创建配置文件
my.cnf
vim my.cnf
-
拷贝以下内容到my.cnf文件中
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-cli
ent-handshake skip-name-resolve
-
docker重启mysql使配置生效
docker restart mysql
-
容器随docker启动自动运行
docker update mysql --restart=always
-
将mysql数据库备份为sql文件【可选】
docker exec mysql|容器id sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql --导出全部数据 docker exec mysql sh -c 'exec mysqldump --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql --导出指定库数据 docker exec mysql sh -c 'exec mysqldump --no-data --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql --导出指定库数据不要数据
-
关闭防火墙
systemctl stop firewalld.service
4.2 安装Tomcat
4.2.1 在docker hub搜索tomcat
docker search tomcat
4.2.2 下载tomcat镜像
docker pull tomcat:8.5.93
4.2.3 将webapps目录挂载在外部
docker run -p 8082:8080 -v /usr/local/mydata/tomcat3/webapps:/usr/local/tomcat/webapps -d --name mytomcat3 tomcat:8.5.93
还可以外加一个conf目录,就是一个配置目录
-v /usr/local/mydata/tomcat/conf:/usr/local/tomcat/conf
4.2.4 webapps目录配置
将本地的tomcat中的webapps目录下的文件上传到tomcat的挂载目录中
4.2.5 测试访问
4.3 安装Redis服务
-
在docker hub搜索redis镜像
docker search redis
-
拉取redis镜像到本地
docker pull redis
-
启动redis服务运行容器
docker run --name redis -d redis:tag (没有暴露外部端口) docker run --name redis -p 6379:6379 -d redis:tag (暴露外部宿主机端口为6379进行连接)
-
开启redis持久化
docker run -d -p 6379:6379 --name redis -v redisdata:/data redis:5.0.10 redis-server --apendonly yes
注意:一但开启持久化之后,持久化生成aof文件会被放入容器中/data目录中
-
查看启动日志
docker logs -t -f 容器id|容器名称
-
进入容器内部查看
docker exec -it 容器id|名称 bash
-
加载外部自定义配置启动redis容器
默认情况下redis官方镜像中没有redis.conf配置文件 需要去官网下载指定版本的配置文件
1. wget http://download.redis.io/releases/redis-5.0.8.tar.gz 下载官方安装包 2. 将官方安装包中配置文件进行复制到宿主机指定目录中如 /root/redis/redis.conf文件 3. 修改需要自定义的配置 bind 0.0.0.0 开启远程权限 appenonly yes 开启aof持久化 4. 加载配置启动 docker run --name myredis -v /root/redisconf:/usr/local/etc/redis -p 6380:6379 -d redis:5.0.10 redis-server /usr/local/etc/redis/redis.conf
-
将数据目录挂在到本地保证数据安全
docker run --name redis -v /root/redis/data:/data -v /root/redis/redis.conf:/usr/local/etc/redis/redis.conf -p 6379:6379 -d redis redis-server /usr/local/etc/redis/redis.conf
4.4 安装Nginx
4.4.1.在docker hub搜索nginx
docker search nginx
4.4.2.拉取nginx镜像到本地
[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
afb6ec6fdc1c: Pull complete
b90c53a0b692: Pull complete
11fa52a0fdc0: Pull complete
Digest: sha256:30dfa439718a17baafefadf16c5e7c9d0a1cde97b4fd84f63b69e13513be7097
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
4.4.3.启动nginx容器
docker run -p 80:80 --name nginx01 -d nginx
4.4.4.进入容器
docker exec -it nginx01 /bin/bash
查找目录: whereis nginx
配置文件: /etc/nginx/nginx.conf
4.4.5.复制配置文件到宿主机
docker cp nginx(容器id|容器名称):/etc/nginx/nginx.conf 宿主机名录
4.4.6.挂在nginx配置以及html到宿主机外部
docker run --name nginx02 -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/html:/usr/share/nginx/html -p 80:80 -d nginx
五,相关作品展示
基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目
基于Nodejs、Vue等前端技术开发的前端实战项目
基于微信小程序和安卓APP应用开发的相关作品
基于51单片机等嵌入式物联网开发应用
基于各类算法实现的AI智能应用
基于大数据实现的各类数据管理和推荐系统
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)