Docker学习11-Docker常规方式安装软件
本文咱们将通过按照Tomcat、按照MySQL、安装Redis这三个实战安装,来熟悉在docker中怎么安装软件,咱们使用端口映射,及数据卷的使用场景
安装的总体步骤:
1:搜索镜像;
2:拉取镜像;
3:查看镜像;
4:启动镜像==>需要做服务断开映射;
5:停止镜像;
6:移除镜像

案例一:安装tomcat



我们可以看到重启成功了。来,访问下试试:

这是为什么?
因为新版tomcat做了修改。我们进入到tomcat目录:

会发现有webapps及webapps.dist两个目录。我们知道,tomcat的应用一般都是存放在webapps中的。
我们进入到webapps看看:

我们发现,webapps文件夹下面竟然是空。
所以,我们访问的时候,就是404了。
修改:将webapps目录删除掉,将webapps.dist修改成webapps再测试


再次访问:
可以看到访问到是tomcat10 。
那么我想用tomcat8怎么办?
docker pull billygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name tomcat8 billygoo/tomcat8-jdk8

案例二:mysql的安装
本次以mysql5.7为例:
docker pull mysql:5.7
。
启动命令公式:
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
说明:-e就是设置环境变量。
通过命令行连接到mysql:
通过命令进入到容器中:
docker exec -it 2303fc3dbe68 /bin/bash

mysql -uroot -p

OK,进入到mysql中了。

接着我们通过命令,创建表,insert数据,然后在查询。
create database dockerdb01;
use dockerdb01;
insert into t1 values(1,'kaigejava');
select * from t1;

在外部的win10系统中使用Navicat连接试试 。
mysql容器宿主机的ip:192.168.50.128.

OK .可以连接。
遇到的问题:
问题一:乱码
当插入中文的时候,报错

这是为什么呢?因为docker中,默认的字符编码导致的。

都是latin1的字符编码。
问题2:删除容器后,里面的mysql数据如何办?
是不是应该做个数据卷挂载。
综上所述,我们按照mysql应该使用以下方式:

实战版命令:
docker run -d -p 3306:3306 --privileged=true -v /宿主机上mysqllog全路径:/容器内部log路径 -v /宿主机mysqldata全部路径:/容器中mysqldata路径 -v /宿主机中mysqlconf全路径:/容器中mysqlconfLuj -e MYSQL_ROOT_PASSWORD=123456 --name mysql57 mysql:5.7
在宿主机上创建mysql的conf文件:
内容为:
vim my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8

案例命令:
docker run -d -p 3306:3306 --privileged=true -v /root/mysql/log:/var/log/mysql -v /root/mysql/data:/var/lib/mysql -v /root/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql57 mysql:5.7
启动后查看docker当前运行的容器:

案例3:常规安装Redis
1:pull redis 6.0.8
2:在宿主机创建/app/redis
3:将任意redis.conf文件复制到宿主机的/app/redis中
4:修改redis.conf配置文件,使其能让外部连接
5:启动reids.实战启动命令:
docker run -p 6379:6379 --name reids608 --privileged=true -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


注意:权限不足也会导致启动redis失败
复制过去的redis.conf需要赋权


重新赋权后:

查看当前运行的容器。有reids.OK
直通车,本系列教程已发布文章,快速到达,《Docker学习系列》教程已经发布的内容如下:
【图文教程】Windows11下安装Docker Desktop
【填坑】在windows系统下安装Docker Desktop后迁移镜像位置
【Docker学习系列】Docker学习1-docker安装
【Docker学习系列】Docker学习2-docker设置镜像加速器
【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?
【Docker学习系列】Docker学习2-常用命令之启动命令和镜像命令
【Docker学习系列】Docker学习系列3:常用命令之容器命令
【Docker学习系列】Docker学习4-常用命令之重要的容器命令
【Docker教程系列】Docker学习5-Docker镜像理解
【Docker教程系列】Docker学习6-Docker镜像commit操作案例
【Docker学习教程系列】7-如何将本地的Docker镜像发布到阿里云
【Docker学习教程系列】8-如何将本地的Docker镜像发布到私服?
「Docker学习系列教程」10-Docker容器数据卷案例
结束语
如操作有问题欢迎去 我的个人博客(www.kaigejava.com)留言或者 微信公众号(凯哥Java)留言交流哦。
Docker学习11-Docker常规方式安装软件的更多相关文章
- Docker学习笔记 — Docker私有仓库搭建
Docker学习笔记 — Docker私有仓库搭建 目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2 和Mavan的管理一样,Dockers ...
- Docker学习之Docker容器基本使用
Docker学习之Docker容器基本使用 新建容器并启动 命令格式:docker run --options repository:tag 后台运行 命令格式:-d 已存在的容器相关操作 启动:do ...
- Docker学习之Docker镜像基本使用
Docker学习之Docker镜像基本使用 获取镜像 命令格式:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 例如: docker pull ...
- Docker学习:Docker安装和基本使用
Docker Docek是一种容器技术.容器是一种轻量级.可移植.自打包的软件技术,使应用程序可以在几乎任何地方以相同的方式运行. 使用者可以在笔记本上创建并测试好的容器,无需任何修改就能够在生产系统 ...
- DOCKER学习_016:Docker镜像仓库和HARBOR的简单安装和管理
一 镜像仓库介绍 1.1 简介 镜像仓库用于存放 Docker镜像 Docker registry提供镜像仓库服务 一个 Docker registry可以包含多个镜像仓库 仓库分为公共镜像仓库与私有 ...
- Docker学习笔记-Docker for Linux 安装
前言: 环境:centos7.5 64 位 正文: Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下面的 yum 命令: yum i ...
- Docker学习之1—基础及安装
Docker介绍: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...
- Docker学习笔记一 概念、安装、镜像加速
本文地址:https://www.cnblogs.com/veinyin/p/10406378.html Docker 是一个容器,可以想象成一个轻便的虚拟机,但不虚拟硬件和操作系统. 优点:启动快 ...
- Docker学习笔记(1):CentOS7安装Docker
Docker是一个基于Go语言实现的开源应用容器引擎,通过对应用组件的封装.分发.部署.运行等生命周期的管理,使程序及其运行环境能够做到"一次封装,到处运行". Docker架构 ...
- docker学习:docker安装
Centos7 安装docker 下载安装 yum install docker-ce 启动docker systemctl start docker 创建并编写镜像加速文件 vim /etc/doc ...
随机推荐
- linux常见终端命令和一些小问题的解决
此文章为linux常见终端命令汇总和一些小问题的解决方法,会不定期更新. [常见指令] 1. 误按 Ctrl+s 锁住终端. ubuntu16命令行误按 Ctrl + s 导致终端锁定,Ctrl + ...
- 设置Docker容器里的时间
启动容器时,添加环境变量 docer run -e TZ=Asia/Shanghai --rm myalpine date -e TZ=Asia/Shanghai
- Java 知识总结大汇总!看完哪个都变大佬!
免费编程资源大全项目:https://github.com/liyupi/free-programming-resources 大家好,我是鱼皮,今天分享 十几个 让人直呼 "哇塞" ...
- Pandas库学习笔记(2)
Pandas 数据结构 Pandas 有三种常用的数据结构 Series DataFrame Panel 这些数据结构建立在Numpy数组之上,这意味着它们运行速度都非常快. Python.Numpy ...
- 顺序表之单链表(C实现)
// Code file created by C Code Develop #include "ccd.h"#include "stdio.h"#includ ...
- CentOS 7 下将 jar 包注册为服务
前提条件 因为 jar 包启动需要用到 jdk,所以服务器上必须要安装jdk或者jre,这方面的教程网上有非常多,可以去百度一下 创建文件 创建website.service文件, 内容如下: [ro ...
- 【Uni-App】API笔记 P1
1.调试打印: console.log() 向控制台打印 log 日志 console.debug() 向控制台打印 debug 日志 注:App 端自定义组件模式下,debug 方法等同于 log ...
- 【Java】 WebService 校验机制
测试环境域名 不可见 正式环境域名 不可见 1.2.安全校验凭证 accessId(授权ID) 测试/正式待定 securityKey(加密密钥) 测试/正式待定 1.3.安全校验机制 1.3.1.在 ...
- 【Hibernate】Re04 JPA规范使用
都忘了前面一些小前提,就是数据库需要是存在的,不过写链接参数都会写上的 JPA实现就是和Hibernate类似,也需要对应的配置文件等等... 1.配置文件必须命名[persistence.xml]且 ...
- 《Python数据可视化之matplotlib实践》 源码 第二篇 精进 第五章
图 5.1 import matplotlib.pyplot as plt import numpy as np from matplotlib.ticker import AutoMinorLoca ...