Docker学习笔记_13 docker应用 - 部署MYSQL服务

选择基镜像

基镜像使用dokcer hub官方提供的redis,https://hub.docker.com/_/mysql/

docker pull mysql:5.7.23
docker tag mysql:5.7.23 10.240.4.159/app/mysql:5.7.23
docker push 10.240.4.159/app/mysql:5.7.23

在RANCHER中启用密文支持

为了在容器中使用密文,你要先部署Rancher Secrets服务。你可以把这个服务加到环境模版中,在添加该服务之后部署的新环境里都会含有Rancher Secrets服务。你也可以直接通过应用商店部署该服务。如果你想在现有的环境中部署Rancher Secrets服务,你可以通过应用商店 -> 官方认证,然后搜索Rancher Secrets找到Rancher Secrets服务。如果不部署Rancher Secrets服务的话,你仅仅可以创建密文,但是不能在你的容器里使用这些密文。

在使用该密文的容器中:这个卷被挂载在/run/secrets/.
在运行使用该密文的容器所在的主机上:这个卷被挂载在/var/lib/rancher/volumes/rancher-secrets/.

官方文档:https://rancher.com/docs/rancher/v1.6/zh/cattle/secrets/

制作带SSH镜像

mkdir -p /root/docker_build/mysql-ssh
mkdir -p /docker_mnt/mysql/data
mkdir -p /docker_mnt/mysql/conf.d
mkdir -p /docker_mnt/mysql//mysql.conf.d

cd /root/docker_build/mysql-ssh
cp /usr/share/zoneinfo/Asia/Shanghai .

# docker-entrypoint.sh这个文件需要先用基镜像启动容器,然后拷贝出来
docker cp ff1fcc4284a5:/usr/local/bin/docker-entrypoint.sh .

# docker-entrypoint.sh 是原mysql镜像内文件,添加ssh运行命令
vi docker-entrypoint.sh
#------------------------------------------------------------------------
/usr/sbin/sshd -D &
#------------------------------------------------------------------------

# debian 9.x (stretch) 阿里云源
vi sources.list
#------------------------------------------------------------------------
deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch main non-free contrib
deb http://mirrors.aliyun.com/debian-security stretch/updates main
deb-src http://mirrors.aliyun.com/debian-security stretch/updates main
deb http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib
#------------------------------------------------------------------------

vi Dockerfile
#------------------------------------------------------------------------
FROM 10.240.4.159/app/mysql:5.7.23
ADD Shanghai /etc/localtime
ADD sources.list /etc/apt/sources.list
RUN apt update \
    && apt -y upgrade \
    && apt -y install vim \
    && apt -y install openssh-server \
    && mkdir /run/sshd \
    && sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config \
    && echo 'root:ydgw.cn' | chpasswd \
    && echo "export LANG=C.UTF-8" >> /etc/profile \
    && echo "alias ll='ls -l'" >> /etc/profile \
    && rm -rf /var/lib/apt/lists/*
ADD docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["mysqld"]
#------------------------------------------------------------------------

docker build -t 10.240.4.159/app/mysql:5.7.23-ssh .
docker push 10.240.4.159/app/mysql:5.7.23-ssh

配置文件持久化

# 在宿主机上执行
cd /docker_mnt/mysql/conf.d
docker cp d7ecc1c9a545:/etc/mysql/conf.d/docker.cnf .
docker cp d7ecc1c9a545:/etc/mysql/conf.d/mysql.cnf .
docker cp d7ecc1c9a545:/etc/mysql/conf.d/mysqldump.cnf .

cd /docker_mnt/mysql/mysql.conf.d
docker cp d7ecc1c9a545:/etc/mysql/mysql.conf.d/mysqld.cnf .

部署REDIS服务

  1. 登陆Rancher(1.6.18),编排工具用的是默认的Cattle
  2. 应用 - 用户 - 添加应用 - 名称:[Mysql] - 创建
  3. 添加服务 - 在添加服务页面添写配置如下信息 - 创建
    名称: mysql
    选择镜像: 10.240.4.159/app/mysql:5.7.23-ssh
    端口映射: 3306:3306/tcp  160020:22/tcp
    
    环境变量:MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_passwd
    
    卷 - 添加卷: /docker_mnt/mysql/data:/var/lib/mysql
                 /docker_mnt/mysql/conf.d:/etc/mysql/conf.d
                 /docker_mnt/mysql/mysql.conf.d:/etc/mysql/mysql.conf.d
    
    网络 - 主机名: mysql
    密文:选择上面添加的密码,映射名称: db_passwd
    
    调度 - 在指定主机上运行全部容器: docker160
    
文章目录
  1. 1. 选择基镜像
  2. 2. 在RANCHER中启用密文支持
  3. 3. 制作带SSH镜像
  4. 4. 配置文件持久化
  5. 5. 部署REDIS服务