admin管理员组文章数量:1122847
docker安装mysql, rabbitmq, tomcat, memcached,以及境像制作
设置境像库
编辑文件
vi /etc/docker/daemon.json
输入如下内容:
{"registry-mirrors": [""]
}
重启服务:
systemctl restart docker.service
创建自定义网络
方便各实例之间的网络访问,如固定mysql, memcached, rabbitmq地址。
# 创建一个网络
docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 mynet# 显示当前网络
docker network ls# 第一次运行实例时,加上网络参数(主要是--net --ip参数)
docker run -itd --name networkTest1 --net mynetwork --ip 172.18.0.2 centos:latest /bin/bash#将已运行的容器,连接到新网络(但IP是动态的)
docker network connect mynet mysql# 实例互ping
docker exec -it tomcat1 ping tomcat2
安装mysql
docker pull mysql:5.7.10# 用163境像加速,注意5.7.10小版本没有境像
docker pull hub.c.163/library/mysql:5.7# 重命名境像
docker tag hub.c.163/library/mysql:5.7 mysql:5.7# 创建目录
mkdir /mydata/docker/mysql/logs
mkdir /mydata/docker/mysql/data
mkdir /mydata/docker/mysql/conf# 目录映射,注意宿主机myf端口是指容器内的mysql端口
docker run -p 3307:3306 --name mysql --privileged=true \
--net mynet \
--ip 172.18.0.2 \
-v /mydata/docker/mysql/conf/myf:/etc/myf \
-v /mydata/docker/mysql/logs:/var/log/mysql \
-v /mydata/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=AFG444 \
-d mysql:5.7# 设置容器实例自启动
docker update --restart=always mysql
设置mysql远程访问:
# 进入docker环境
docker exec -it mysql bash# 登录mysql
mysql -uroot -p
-- 远程登录权限use mysql;
grant all privileges on *.* to root@"%" identified by "AFG444" with grant option;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'AFG444';
flush privileges;
错误处理:
chown: changing ownership of '/var/lib/mysql/': Permission denied
加上 --privileged=true 参数
/usr/bin/docker-current: Error response from daemon: Conflict. The container name "/mysql" is already in use by container f4f8250c9a864f0807408af7d9ef456cb0aa50569f27373e9a1f3103d56dcd61. You have to remove (or rename) that container to be able to reuse that name..
删除容器实例,重建一个。
安装rabbitmq
可通过=tags查询版本
#带WEB控制台
docker pull rabbitmq:3.6.6-management#不带WEB控制台
docker pull rabbitmq:3.6.6#启动rabbitmq容器实例
docker run --name rabbitmq3.6.6 -p 15672:15672 -p 5672:5672 -d rabbitmq:3.6.6-management#开机启动
docker update --restart=always rabbitmq3.6.6
web端:http://192.168.0.5:15672
安装tomcat
pull方式
# 拉起境像
docker pull hub.c.163/library/tomcat:8.0# 改名
docker tag hub.c.163/library/tomcat:8.0 tomcat:8.0# 创建映射目录
mkdir /mydata/docker/tomcat/conf
mkdir /mydata/docker/tomcat/logs
mkdir /mydata/docker/tomcat/webapps# 运行容器实例
docker run -p 8081:8080 --name tomcat --privileged=true \
-v /etc/localtime:/etc/localtime \
-v /mydata/docker/tomcat/conf:/usr/local/tomcat/conf \
-v /mydata/docker/tomcat/logs:/usr/local/tomcat/logs \
-v /mydata/docker/tomcat/webapps:/usr/local/tomcat/webapps \
-d tomcat:8.0# 开机启动
docker update --restart=always tomcat
修改映射目录中的内容,会同步更新docker内的文件。
Dockerfile方式
文件内容:
# FROM docker.io/centos:7
FROM centos
MAINTAINER test<aa@test>RUN yum install kde-l10n-Chinese -y
RUN yum reinstall glibc-common -y
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
RUN export LANG=zh_CN.UTF-8
RUN echo -e "export LANG=zh_CN.UTF-8" > /etc/locale.conf
RUN echo -e "export LANG=zh_CN.UTF-8" > /etc/profile
RUN source /etc/profile
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8COPY jdk-8u241-linux-x64.rpm /usr/
WORKDIR /usr/
RUN rpm -ivh jdk-8u241-linux-x64.rpm
ADD apache-tomcat-8.0.28 /usr/local/tomcat
EXPOSE 8080ENTRYPOINT ["/bin/bash", "/usr/local/tomcat/bin/catalina.sh", "run"]
生成image
# 当前目录使用Dockerfile文件名
docker build -t tomcat:centos . # 指定文件名方式,注意最后一个点
docker build -f /mydata/tools/tomcat_Dockerfile -t tomcat:centos .# 查看刚刚创建的境像
docker images# 运行容器实例(下面的境像名称,使用刚刚创建的境像)
docker run -p 8081:8080 --name tomcat --privileged=true \
-v /etc/localtime:/etc/localtime \
-v /mydata/docker/tomcat/conf:/usr/local/tomcat/conf \
-v /mydata/docker/tomcat/logs:/usr/local/tomcat/logs \
-v /mydata/docker/tomcat/webapps:/usr/local/tomcat/webapps \
--net mynetwork \
--ip 172.18.0.6 \
-d tomcat:centos# 开机启动
docker update --restart=always tomcat
安装memcached
# 安装
docker pull memcached:1.5.12# 运行-m表示分配内存的大小,128M,默认不加-m参数,则为64M,-v参数指定了时间与宿主机同步
# -m加上,有时会报内存最小为4M的错误,暂时没找到原因,可以去掉-m参数
docker run --name memcached1.5.12 \
--net mynet \
--ip 172.18.0.5 \
-v /etc/localtime:/etc/localtime:ro \
-p 11211:11211 \
-m 128 \
-d docker.io/memcached:1.5.12 memcached \# 开机启动
docker update --restart=always memcached1.5.12
常用命令
docker search mysql 搜索境像
docker pull mysql:5.7.10 安装境像
docker images 查看境像
docker exec -it container_name bash 进入容器 (在容器内执行 ctrl+p+q 退出容器,但不关闭容器, ctrl+q退出并关闭)
docker rmi mysql:5.7 删除境像
docker ps -a 查看所有容器实例
docker rm id 删除容器实例
docker start id 启动容器实例(第一次启动用run)
docker stop id 停止容器实例
docker logs [OPTIONS] CONTAINER 查看日志
docker create 创建容器实例,但不运行
docker run 创建容器实例,并且运行
docker inspect --format='{{.NetworkSettings.IPAddress}}' id/names 查看实例IP地址
docker rmi `docker images | grep '<none>' | awk '{print $3}'` 删除所有none的容器(注意要用docker ps -a查看一下,是否在运行)
容器内安装yum
参考:
将容器实例制作成境像
将容器实例制作成tar境像
docker commit id mysql:5.7.18# 例如:
docker commit 640c369d7093 nginx2:test
# (test表示tag,例如mysql的5.7)
将变更后的tar包保存在当前路径下
docker save -o mysql5.7.18.tar mysql:5.7.18
将tar变成新的容器实例
docker load --input mysql5.7.18.tar
使用docker images查看容器实例,
然后再使用run命令运行新的容器实例,注意端口和目录映射关系。
设置容器时区,时间
在memcached的安装中,增加了-v参数指定时间与宿主机同步。
如果是已经安装好的doker,可使用如下方法处理。
# 复制宿主机时间文件
docker cp /usr/share/zoneinfo/Asia/Shanghai container_id:/etc/localtime# 重启容器
docker restart container_id# 登录宿主机
docker exec -it container_id bash# 查看时间
date
本文标签: docker安装mysqlRabbitMQtomcatmemcached,以及境像制作
版权声明:本文标题:docker安装mysql, rabbitmq, tomcat, memcached,以及境像制作 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1701904506a501759.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论