入门docker笔记之 docker安装 mysql mongodb redis tomcat nginx home 编辑时间 2019/10/12 ![](/api/file/getImage?fileId=5da17fb916199b046700022a) ## 前言 上一篇入门以后,发现诸多问题 决定补补基础部分,从头再来一遍 先不用套餐了,一个一个单独啃 ## 正文 ### 先附上一些后面会用到的常用命令 #### docker 常用命令 ```shell # docker 容器运行进程和端口 docker ps -a # docker 状态 docker stats # 执行一个docker 镜像 docker run [imageId] # 后台运行一个docker 镜像 docker run -d [imageId] # 指定端口运行一个docker镜像(前面是宿主机端口,后面是容器端口) docker run -p 13306:3306 [imageId] # 限制内存 100M 禁止内存溢出时杀死进程 允许且不限制使用交换区 docker run -m 100M --oom-kill-disable --memory-swap=-1 [imageId] ``` #### docker 容器的开机自启动 其中最后一个参数,对应的是container中的name ```shell docker update --restart=always redis docker update --restart=always mysql docker update --restart=always mongo ``` #### docker images 镜像 ```shell docker images # 如果存在的话 清除之,id用前三位 docker rmi a12 ``` #### docker container 容器 ```shell # 查看容器列表 docker container ls -a # 停止容器运行 docker container stop [containerId] # 删除容器 docker container rm [containerId] # 查看容器运行日志 docker logs [containerId] ``` #### docker volume ```shell # 清理数据卷(无关联container的volume) docker volume rm $(docker volume ls -qf dangling=true) ``` ## mysql 5.7 先从折腾一个mysql开始。 ```shell # 先拉一个官方版本的mysql5.7 docker pull mysql:5.7 ``` 这时候是直接启动不了的,因为没给mysql设置默认的root的密码。 启动会报 `error: database is uninitialized and password option is not specified ` `You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD1` 意思就是必须先设置个账号密码 参考: https://www.runoob.com/docker/docker-install-mysql.html https://blog.csdn.net/weixin_40461281/article/details/92610876 ```shell # 命令和说明 # 1. 密码改成你自己的 # 2. 端口避免已占用 # 3. 事先新建好conf logs data文件夹 # 4. 这里顺便附带了限制内存最大200M的部分,不需要可以去除 docker run -d -p 3306:3306 --name mysql -v /home/zzzmh/docker/mysql57/conf:/etc/mysql/conf.d -v /home/zzzmh/docker/mysql57/logs:/logs -v /home/zzzmh/docker/mysql57/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='root' -m 200M --oom-kill-disable --memory-swap=-1 mysql:5.7 # 返回 21cb89213c93d805c5bacf1028a0da7b5c5852761ba81327e6b99bb3ea89930e runoob@runoob:~/mysql$ ``` 意思是 - -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。 - -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。 - -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。 - -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。 - -e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码。 检查是否成功 ```shell # 命令 docker ps -a # 返回 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cd7d8d5e4c98 mysql:5.7 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp mymysql ``` 基本完成安装mysql 可以使用navicat连接进行操作 ![](/api/file/getImage?fileId=5da182d216199b0467000239) ## mongodb 3.4.20 && redis 同mysql mongodb流程也是差不多 ```shell # 先看下有没有 docker search mongo # 拉个镜像 docker pull mongo:3.4.20 # 启动镜像 docker run -d -p 27017:27017 -m 100M --oom-kill-disable --memory-swap=-1 --name mongo mongo:3.4.20 ``` redis基本和mongo一样 ```shell docker pull redis docker run -d -p 6379:6379 -m 100M --oom-kill-disable --memory-swap=-1 --name redis redis ``` ## tomcat && nginx ### 准备部分 说明:这两个和之前的区别在于,需要有文件和文件夹是映射到宿主机上的 其中-v 对应的本地的文件夹,需要提前创建 例子: ```shell # 要把tomcat3个关键的配置文件挂载出来,就必须是先运行一个纯容器不挂载的tomcat # 例如 docker run -d -p 8080:8080 --name tomcat tomcat # 进入这个tomcat,通过ls pwd cd等命令,找到容器中的配置文件绝对路径 # 之后就可以用以下命令,把这三个配置文件的默认内容给复制到准备好的空文件夹里 docker cp tomcat:/usr/local/tomcat/bin/catalina.sh /home/zzzmh/docker/tomcat/conf/ docker cp tomcat:/usr/local/tomcat/conf/server.xml /home/zzzmh/docker/tomcat/conf/ docker cp tomcat:/usr/local/tomcat/conf/web.xml /home/zzzmh/docker/tomcat/conf/ # 最后安装的时候才可以正常的以文件对文件的方式,实现挂载 # 补充下 如果是文件夹对文件夹的方式挂载,除非是是可以为空的文件夹,否则也要这样先准备好这个文件夹里的所有的文件 # 正式docker run之前,建议清理掉这个测试的run docker container stop tomcat docker container rm tomcat # nginx也是同理,需要 nginx.conf 和 default.conf # 命令:略~ ``` ### 安装部分 ```shell # tomcat docker pull tomcat docker run -d -p 8080:8080\ -v /home/zzzmh/docker/tomcat/logs:/usr/local/tomcat/logs\ -v /home/zzzmh/docker/tomcat/webapps:/usr/local/tomcat/webapps\ -v /home/zzzmh/docker/tomcat/conf/web.xml:/usr/local/tomcat/conf/web.xml\ -v /home/zzzmh/docker/tomcat/conf/server.xml:/usr/local/tomcat/conf/server.xml\ -v /home/zzzmh/docker/tomcat/conf/catalina.sh:/usr/local/tomcat/bin/catalina.sh\ -m 500M --oom-kill-disable --memory-swap=-1\ --name tomcat\ tomcat # nginx docker pull nginx docker run -d -p 80:80\ -v /home/zzzmh/docker/nginx/logs:/var/log/nginx\ -v /home/zzzmh/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf\ -v /home/zzzmh/docker/nginx/conf/conf.d/:/etc/nginx/conf.d\ -v /home/zzzmh/docker/nginx/html:/usr/share/nginx/html\ -m 100M --oom-kill-disable --memory-swap=-1\ --name nginx\ nginx ``` ### 操作部分 #### nginx 简单操作 在之前的`/home/zzzmh/docker/nginx/html`下 新建一个文件 `index.html` ```html <html><body><h1>Docker YES !!!</h1><body><html> ``` 访问: http://localhost 效果: ![](/api/file/getImage?fileId=5da4254016199b046700055c) #### tomcat 简单操作 在之前的`/home/zzzmh/docker/tomcat/webapps`下 新建一个文件夹 `test` 文件夹中新建一个文件 `index.jsp` ```jsp <html><body><h1><%out.println("Docker NB !!!");%></h1></body></html> ``` 访问: http://localhost:8080/test/ 效果: ![](/api/file/getImage?fileId=5da4271e16199b046700055e) 送人玫瑰,手留余香 赞赏 Wechat Pay Alipay 入门docker笔记 从零搭一个轻论坛系统 基于Flarum 入门docker笔记之 基本的安装和指令