Docker部署常用软件(mysql、redis、tomcat.....)持续更新

最近觉的服务器总是怪怪的,总是报各种各样的错误,重启好了,过几天又不行了,感觉有很大的可能是装的东西多导致环境变量出问题了。我机器上装了jdk、tomcat(不止一个)、solr、mysql、MongoDB、redis等等...,虽然目前还能正常使用,但还是让我心里不舒服,万一哪天直接瘫痪了咋整?   

所以,由于种种原因,我决定亲自把坑再踩一遍(这次使用Docker,以后换服务器更方便),记录在这里,以后用到方便查找。

目录

 

1、Docker安装&卸载

1.1、安装所需的软件包

1.2、设置稳定的存储库

1.3、配置 启用 一些参数

1.4、安装最新版dicker-ce

1.5、启动docker

1.6、配置阿里云镜像加速器

1.7、测试是否安装成功

1.8、卸载

2、Docker安装redis

2.1、拉取镜像

2.2、在宿主机创建数据卷要挂载的目录

2.3、找一个最原始的redis.conf拷贝到宿主机的redis.conf中去,注意版本问题(这一步有疑问请先去学习redis,或者直接下载配置文件【点击下载】)

2.4、修改配置文件

2.5、开启redis

2.6、连接docker中的redis并测试

3、Docker安装Mysql

3.1、拉取镜像

3.2、在宿主机上创建数据卷要挂载的目录

3.3、创建并运行Mysql,并挂载数据卷

3.4、进入mysql

3.5、修改用户名和密码

3.6、修改数据库默认编码集

3.6.1、在宿主机的 /usr/local/mysql/conf 目录下新建配置文件 my.min

3.6.2、重启Docker中的Mysql

3.6.3、进入Docker中的Mysql查看编码集

4、Docker安装tomcat

4.1、从Docker Hub 拉取镜像

4.2、创建容器并运行

5、Docker安装Anaconda3

5.1、查看并拉去镜像

5.2、创建并运行Anaconda3容器

5.3、测试

5.4、配置并使用jupyter-notebook

5.4.1、生成密码:

 

5.4.2、生成配置文件

5.4.3、修改配置文件

5.4.3、进入容器机,启动jupyter-notebook

5.4.4、补充说明

6、Docker安装mongodb

6.1、拉取镜像

6.2、创建并运行容器并挂载数据卷

6.3、远程连接并使用


1、Docker安装&卸载

 

操作系统:Centos7  (其他操作系统自己去Docker官网上看一下就可以很简单)

Centos 7安装官方教程:https://docs.docker.com/install/linux/docker-ce/centos/

1.1、安装所需的软件包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

1.2、设置稳定的存储库

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

1.3、配置 启用 一些参数

sudo yum-config-manager --enable docker-ce-nightly
sudo yum-config-manager --enable docker-ce-test
sudo yum-config-manager --disable docker-ce-nightly

1.4、安装最新版dicker-ce

sudo yum install docker-ce docker-ce-cli containerd.io

1.5、启动docker

sudo systemctl start docker

1.6、配置阿里云镜像加速器

设置配置文件 `/etc/docker/daemon.json`

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxxxxxxxxxxxliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

1.7、测试是否安装成功

docker run hello-world

打印Hello from Docker! 就表示安装成功了

1.8、卸载

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

2、Docker安装redis

2.1、拉取镜像

docker pull redis   #拉取镜像

docker images #查看本地镜像

2.2、在宿主机创建数据卷要挂载的目录

这里我们要挂载的目录分别是:

  • redis的数据存储目录
  • redis的配置文件目录
#创建两个目录
mkdir -p /usr/local/redis/data & mkdir -p /usr/local/redis/redis.conf

2.3、找一个最原始的redis.conf拷贝到宿主机的redis.conf中去,注意版本问题(这一步有疑问请先去学习redis,或者直接下载配置文件【点击下载】)

将配置文件 上传到 宿主机的 /usr/local/redis/redis.conf 文件夹下

对配置文件有其他疑问,可以去看一下redis-5.0.5 配置文件详细解析:【点击这里

2.4、修改配置文件

打开刚刚上传的 redis.conf 文件,找到  bind 127.0.0.1  将它注释掉,不然外网连接不到。

2.5、开启redis

docker run \
 -p 6379:6379 \
 -v /usr/local/redis/data:/data \
 -v /usr/local/redis/redis.conf:/usr/local/etc/redis/redis.conf  \
 -d \
 --name="myredis" \
 redis \
 redis-server \
 /usr/local/etc/redis/redis.conf \
 --appendonly yes
 
# -p :映射端口  宿主机向外暴露的访问端口:Docker内部redis容器的端口
# -v :数据卷  /宿主机绝对路径根目录:/容器内目录         这里是挂载了redis的数据目录 和 redis.conf配置文件夹
# -d :后台运行
# --name :容器的名字
# redis :运行的镜像
# redis-server:运行的命令
# /usr/local/etc/redis/redis.conf:运行的配置文件
# --appendonly yes : 开启aof缓存

2.6、连接docker中的redis并测试

docker ps   #查看docker中当前运行的容器

docker exec -it 1743fa748ff1 redis-cli   #连接docker中的redis
# -it 是以交互式的方式打开一个终端命令窗口

3、Docker安装Mysql

3.1、拉取镜像

先去Docker Hub上找想要的版本:https://hub.docker.com/_/mysql

这里演示latest的

docker pull mysql:latest

3.2、在宿主机上创建数据卷要挂载的目录

 mkdir -p /usr/local/mysql/conf & mkdir -p /usr/local/mysql/logs & mkdir -p /usr/local/mysql/data

3.3、创建并运行Mysql,并挂载数据卷

 docker run \
 -p 3306:3306 \
 --name myMysql \
 -v /usr/local/mysql/conf:/etc/mysql/conf.d \
 -v /usr/local/mysql/logs:/logs \
 -v /usr/local/mysql/data:/var/lib/mysql \
 -e MYSQL_ROOT_PASSWORD=root \
 -d mysql
 
 # 命令说明:
 # -p 3306:3306:将主机的3306端口映射到docker容器的3306端口。
 # --name myMysql:运行服务名字
#-v /usr/local/mysql/my.cnf:/etc/mysql/my.cnf :将主机/usr/local/mysql/my.cnf目录下的
# -v /usr/local/mysql/conf:/etc/mysql/conf.d :将主机/usr/local/mysql录下的conf/my.cnf 挂载到容器的 /etc/mysql/conf.d
# -v /usr/local/mysql/logs:/logs:将主机/usr/local/mysql目录下的 logs 目录挂载到容器的 /logs。
# -v /usr/local/mysql/data:/var/lib/mysql :将主机/usr/local/mysql目录下的data目录挂载到容器的 /var/lib/mysql 
# -e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码。
# -d mysql : 后台程序运行mysql

3.4、进入mysql

docker ps  #查看当前docker中运行的容器

docker exec -it MySQL运行成功后的容器ID /bin/bash  #进入mysql容器的终端命令控制台

mysql -u root -p   #输入用户名
root #输入密码

可以看到安装已成功

可以使用快捷键 Ctrl+P+Q 退出Docker回到宿主机

3.5、修改用户名和密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'newpassword'; 
#更新一下用户的密码 root用户密码为newpassword

#如果不更新密码,会出现下面的连接被拒绝的错误

3.6、修改数据库默认编码集

这里以 mysql 8.0.18 版本为例  将编码集设置为utf8mb4(utf8mb4编码集一个字符占4个字节,可以表示特殊符号,如:表情)

先来看一下装好mysql原本的数据集吧。

#在docker的mysql中运行命令
mysql -uroot -p

#输入密码
root

#查看编码集
show variables like 'char%';

现在,我们的目标是将这几个设置为utf8mb4的编码集。

3.6.1、在宿主机的 /usr/local/mysql/conf 目录下新建配置文件 my.min

为什么要在这个目录下新建文件?(下面是一堆基础,会Docker就能理解,大神请跳过)

因为前面我们将这个目录挂载到Docker中mysql的 /etc/mysql/conf.d 上去了(不记得就往上翻看一看),可以认为这两个目录是同一个,修改了宿主机上的 /usr/local/mysql/conf目录,就等同于修改了Docker中mysql的 /etc/mysql/conf.d目录。

而且 mysql 在启动之前,通过一系列的配置文件中的包含等操作,最终会扫描到 /etc/mysql/conf.d 目录下的 my.min文件。所以我们在宿主机上的 /etc/mysql/conf.d下新建一个 my.min 文件,这个文件就可以被Docker中的mysql扫描到。

使用 Ctrl + P + Q 回到宿主机

执行命令:

#创建并编写配置文件
vim /usr/local/mysql/conf/my.cnf


# 输入以下的内容到文件中
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4


[mysqld]
character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_general_ci 
init_connect='SET NAMES utf8mb4'


# wq  保存并退出

3.6.2、重启Docker中的Mysql

#重新启动mysql
docker restart myMysql

#查看Docker中当前运行的容器
docker ps

3.6.3、进入Docker中的Mysql查看编码集

#进入Docker中的Mysql
docker exec -it myMysql /bin/bash

#输入用户名
mysql -uroot -p

#输入密码
root

#查看编码集
show variables like 'char%';

还有一些Mysql的其他配置这里就不详细说明了,本篇主要论怎么在Docker中安装。

4、Docker安装tomcat

4.1、从Docker Hub 拉取镜像

# 从 Docker Hub拉取镜像  镜像版本可以自己指定 docker pull tomcat:版本号  不指定默认最新
docker pull tomcat

#查看本地Docker中的镜像
docker images

4.2、创建容器并运行

这里是将Docker中的tomcat的webapps目录 挂载到 宿主机的 /usr/local/tomcat/webapps 目录下,这样以后发布项目可以直接把项目拷贝到宿主机的 /usr/local/tomcat/webapps 目录下就可以了。

当然,不挂载也是可以的,个人喜好。

docker run -d -p 8080:8080 --name myTomcat -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat

如果没有挂载,直接到外网访问 http://{IP}:8080   就可以看到tom小猫了

如果是挂载了的话,webapps下面是空的,需要添加项目进去。

5、Docker安装Anaconda3

5.1、查看并拉去镜像

#查看Docker Hub上的镜像
docker search anaconda

#选取想要安装的镜像拉去到本地
docker pull continuumio/anaconda3

#查看本地镜像
docker images

5.2、创建并运行Anaconda3容器

docker run -it --name Anaconda3 \
-p 8081:8081 \
-v /usr/local/jupyter_notebook:/usr/local/jupyter_notebook \
-v /usr/local/jupyter_notebook/config:/root/.jupyter/ \
continuumio/anaconda3 /bin/bash

# -it :以交互模式打开一个终端命令窗口
# --name :容器的名字
# -p :映射端口,后面用于jupyter-notebook使用
# -v :挂载数据卷 将宿主机的/usr/local/jupyter_notebook目录 挂载到 Docker中的Anaconda3容器的/usr/local/jupyter_notebook目录

5.3、测试

直接在Docker中的Anaconda3容器中输入命令查看python版本

python

会进入python编辑模式,说明安装正常。

5.4、配置并使用jupyter-notebook

5.4.1、生成密码:

在Docker中的Anaconda3容器中输入命令:

python   #进入python命令行

from notebook.auth import passwd   #导入相应的包
passwd() #生成秘钥

#然后输入密码  确认密码

#会生成一个秘钥  将它保存起来后面要使用

5.4.2、生成配置文件

在Docker中的Anaconda3容器中输入命令:

#生成 jupyter-notebook的配置文件
jupyter notebook --generate-config

这就是配置文件的位置,这也是我们前面将宿主机 /usr/local/jupyter_notebook/config  挂载到 /root/.jupyter/ 的原因

现在我们去宿主机修改配置文件

5.4.3、修改配置文件

使用 Ctrl + P + Q  可以切换到宿主机

# 打开并编辑配置文件
vim /usr/local/jupyter_notebook/config/jupyter_notebook_config.py

在文件中可以修改下面这些值(比较分散,要自己找到它们并修改):

c.NotebookApp.ip='0.0.0.0'  # 指定 可访问  IP 或者 使用 0.0.0.0 则可以用任意 IP
c.NotebookApp.notebook_dir = '/usr/local/jupyter_notebook/datas'   #指定工作文件夹
c.NotebookApp.open_browser = False # 关闭自动打开浏览器
c.NotebookApp.password = u'sha1:b6e292dcd871:11052b2dfce9620e6c12cadda685057111fe2f65' # 登录密码  要填前面生成的秘钥
c.NotebookApp.port = 8081  # 端口需要写前面创建Anaconda3容器是绑定的端口,然后在阿里云开对应端口的防火墙即可

新建工作目录 /usr/local/jupyter_notebook/datas

mkdir -p /usr/local/jupyter_notebook/datas

5.4.3、进入容器机,启动jupyter-notebook

# 进入容器机
docker exec -it Anaconda3 /bin/bash


# 后台运行jupyter-notebook
nohup jupyter notebook --allow-root > /usr/local/jupyter_notebook/jupyter.log 2>&1 &

通过外网访问即可:http://你的服务器IP:8081

5.4.4、补充说明

如果使用过jupyter notebook的话,就应该很清楚,我们平时所需要关心的是 jupyter-notebook 的工作目录、日志文件、配置文件这三个东西,经过以上的安装,这三个文件对应到宿主机上的位置:

 

  宿主机 Docker容器机
工作目录 /usr/local/jupyter_notebook/datas /usr/local/jupyter_notebook/datas
配置文件 /usr/local/jupyter_notebook/config/jupyter_notebook_config.py /root/.jupyter/jupyter_notebook_config.py
日志文件 /usr/local/jupyter_notebook/jupyter.log /usr/local/jupyter_notebook/jupyter.log

也就是说,我们如果想要更改配置,或者查看目录,直接到宿主机上的对应位置就可以操作。

6、Docker安装mongodb

6.1、拉取镜像

# 从 docker hub 上拉取镜像
docker pull mongo

# 查看当前本地的镜像
docker images

6.2、创建并运行容器并挂载数据卷

docker run \
-p 27017:27017 \
-v /usr/local/mongo/db:/data/db \
-d \
--name myMongo \
mongo

# -p 端口号映射
# -v 挂载数据卷,将宿主机的/usr/local/mongo/db目录 挂载到 容器机的/data/db
# -d 后台运行
# --name 给容器起个名字

6.3、远程连接并使用

在服务器将 27017 端口开放,然后使用桌面工具连接即可。

发布了98 篇原创文章 · 获赞 26 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_42425970/article/details/102974914
今日推荐