docker-Docker常规安装简介

Docker常规安装简介-tomcat,mysql,redis

总体步骤

  1. 搜索镜像

  2. 拉取镜像

  3. 查看镜像

  4. 启动镜像

  5. 服务端口映射

  6. 停止容器

  7. 移除容器

    安装tomcat

  8. docker hub上面查找tomcat镜像

    1
    docker search tomcat
  9. 从docker hub上拉取tomcat镜像到本地

    1
    docker pull tomcat
  10. docker images查看是否有拉取到该tomcat

    1
    docker images
  11. 使用tomcat镜像创建容器实例(也叫运行镜像)

    1
    docker run -it -p 8080:8080 tomcat

-p 小写,主机端口:docker容器端口

-P 大写,随机分配端口

i:交互

t:终端

d:后台

  1. 访问tomcat首页

localhost:8080

遇到的问题:无法访问404

可能一:

没有映射端口或者没有关闭防火墙

可能二:

把webapps.dist目录换成webapps:先将webapps这个空文件夹删除,再将webapp.dist重命名为webapps

重命名之后,再次访问localhost:8080

  1. 免修改版说明

使用tomcat8这个特定版本:

1
2
docker pull billygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

安装mysql

docker hub上面查找mysql镜像

1
docker search mysql
  1. 从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7
    1
    docker pull mysql:5.7
  2. 使用mysql5.7镜像创建容器(也叫运行镜像)

简单版

使用mysql镜像

第一步:运行mysql:5.7镜像

1
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

注意:建议先使用ps -f | grep mysql命令先看一下宿主机是否有正在运行的mysql且端口3306是否被占用,如果占用,需要将映射端口换掉。

第二步:查看正在运行的容器

1
dockers ps

第三步:进入该mysql容器内

1
docker exec -it 容器ID /bin/bash
1
mysql -uroot -p

第四步:在该容器内建库建表插入数据

问题

问题一:插入中文数据试试

为什么报错?

因为使用docker的mysql容器有中文乱码的问题。

在docker里面的mysql容器实例输输入以下命令,内容如下:

SHOW VARIABLES LIKE ‘character%’

注意:不要在连接mysql的软件中输入上面的命令,否则显示的还是utf-8编码,但这不是真正的编码方式。

解决:详见下面的实战版。

问题二:删除容器后,里面的mysql数据如何办

容器实例一删除,你还有什么? 删容器到跑路。。。。。?

实战版

  1. 新建mysql容器实例
    1
    2
    3
    4
    5
    6
    7
    docker run -d -p 3306:3306 --privileged=true \
    -v /docker/mysql/log:/var/log/mysql \
    -v /docker/mysql/data:/var/lib/mysql \
    -v /docker/mysql/conf:/etc/mysql/conf.d \
    -e MYSQL_ROOT_PASSWORD=123456 \
    --name mysql \
    mysql:5.7
    注:实战版运行mysql镜像的命令与简单版运行的命令差不多,只是多了三个挂载数据卷的命令。
  1. 新建my.cnf –> 通过容器卷同步给mysql容器实例 (使用此步骤的目的是解决中文乱码的问题)
    1
    2
    3
    4
    5
    [client]
    default_character_set=utf8
    [mysqld]
    collation_server = utf8_general_ci
    character_set_server = utf8
  2. 重新启动mysql容器实例再重新进入并查看字符编码

再新建库新建表再插入中文测试

安装redis

  1. 从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8
    1
    docker pull redis:6.0.8
    入门命令
    1
    docker run -d -p 6379:6379 redis:6.0.8
    命令提醒:容器卷记得加入–privileged=true

Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied解决办法:在挂载目录后多加一个–privileged=true参数即可

在CentOS宿主机下新建目录/app/redis

mkdir -p /app/redis

  1. 将一个redis.conf文件模板拷贝进/app/redis目录下

  2. /app/redis目录下修改redis.conf文件

3.1 开启redis验证 可选 requirepass 123

3.2 允许redis外地连接 必须 注释掉 # bind 127.0.0.1

3.3 daemonize no

将daemonize yes注释起来或者 daemonize no设置,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败

3.4 开启redis数据持久化 appendonly yes 可选 - 默认出厂的原始redis.conf

  1. 使用redis6.0.8镜像创建容器(也叫运行镜像)
    1
    2
    3
    4
    docker run  -p 6379:6379 --name myr3 --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-cli连接上来
    1
    docker exec -it 运行着Redis服务的容器ID redis-cli

请证明docker启动使用了我们自己指定的配置文件

宿主机的修改会同步给docker容器里面的配置。 - 记得重启服务