docker安装mysql, rabbitmq, tomcat, memcached,以及境像制作

 

 

设置境像库

编辑文件

vi /etc/docker/daemon.json

输入如下内容:

{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

重启服务:

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.com/library/mysql:5.7

# 重命名境像
docker tag hub.c.163.com/library/mysql:5.7 mysql:5.7

# 创建目录
mkdir /mydata/docker/mysql/logs
mkdir /mydata/docker/mysql/data
mkdir /mydata/docker/mysql/conf

# 目录映射,注意宿主机my.cnf端口是指容器内的mysql端口
docker run -p 3307:3306 --name mysql --privileged=true  \
--net mynet \
--ip 172.18.0.2 \
-v /mydata/docker/mysql/conf/my.cnf:/etc/my.cnf \
-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

可通过https://hub.docker.com/_/rabbitmq?tab=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.com/library/tomcat:8.0

# 改名
docker tag hub.c.163.com/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.com>

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-8

COPY 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 8080

ENTRYPOINT ["/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

参考:https://my.oschina.net/u/4230760/blog/3119321

 

将容器实例制作成境像

将容器实例制作成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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值