Dockerfile-5.6

基于ubuntu20.04构建ssh和mysql服务的镜像

需要下载:mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz包和Dockerfile同级目录

建议:通常建议每个服务独立为一个docker

FROM ubuntu:focal-20211006

LABEL maintainer="zaza <260458726@qq.com>"

ENV root_password zaza
ENV mysql_password zaza
ENV mysql_dir mysql-5.6.36-linux-glibc2.5-x86_64
ENV PATH /usr/local/mysql/bin:$PATH

ADD ${mysql_dir}.tar.gz /usr/local/

RUN apt-get update \
  && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
  autoconf build-essential libncurses5 libaio1 libnuma1 openssh-server \
  wget netcat-openbsd curl lftp net-tools tzdata subversion \
  vim lrzsz gdb telnet zip unzip tree screen tcpdump lsof dos2unix ntp iproute2 \
  && ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  && dpkg-reconfigure --frontend noninteractive tzdata \
  && echo "root:${root_password}" | chpasswd \
  && echo "UseDNS no" >> /etc/ssh/sshd_config \
  && echo "PermitRootLogin yes" >> /etc/ssh/sshd_config \
  && mkdir /run/sshd \
  && rm -rf /var/lib/apt/lists/* \
  && apt-get clean \
  && ln -s /usr/local/${mysql_dir} /usr/local/mysql \
  && useradd mysql -M -s /sbin/nologin \
  && install -o mysql -g mysql -d -m 750 /usr/local/mysql/data \
  && cd /usr/local/mysql \
  && /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data \
  && echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile \
  && echo '#!/bin/bash' >> /opt/start.sh \
  && echo 'nohup /usr/sbin/sshd -D -o ListenAddress=0.0.0.0 &' >> /opt/start.sh \
  && echo '/usr/local/mysql/bin/mysqld_safe --basedir=/usr/local/mysql --user=mysql' >> /opt/start.sh \
  && chmod 755 /opt/start.sh

EXPOSE 22
EXPOSE 3306

CMD ["/opt/start.sh"]

Dockerfile-5.7

基于ubuntu20.04构建ssh和mysql服务的镜像

需要下载:mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz包和Dockerfile同级目录

建议:通常建议每个服务独立为一个docker

FROM ubuntu:focal-20211006

LABEL maintainer="zaza <260458726@qq.com>"

ENV root_password zaza
ENV mysql_password zaza
ENV mysql_dir mysql-5.7.33-linux-glibc2.12-x86_64
ENV PATH /usr/local/mysql/bin:$PATH

ADD ${mysql_dir}.tar.gz /usr/local/

RUN apt-get update \
  && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
  autoconf build-essential libncurses5 libaio1 libnuma1 \
  openssh-server wget netcat-openbsd curl lftp net-tools tzdata subversion \
  vim lrzsz gdb telnet zip unzip tree screen tcpdump lsof dos2unix ntp iproute2 \
  && ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  && dpkg-reconfigure --frontend noninteractive tzdata \
  && echo "root:${root_password}" | chpasswd \
  && echo "UseDNS no" >> /etc/ssh/sshd_config \
  && echo "PermitRootLogin yes" >> /etc/ssh/sshd_config \
  && mkdir /run/sshd \
  && rm -rf /var/lib/apt/lists/* \
  && apt-get clean \
  && ln -s /usr/local/${mysql_dir} /usr/local/mysql \
  && useradd mysql -M -s /sbin/nologin \
  && install -o mysql -g mysql -d -m 750 /usr/local/mysql/data \
  && /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql \
  && echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile \
  && echo '#!/bin/bash' >> /opt/start.sh \
  && echo 'nohup /usr/sbin/sshd -D -o ListenAddress=0.0.0.0 &' >> /opt/start.sh \
  && echo '/usr/local/mysql/bin/mysqld --user=mysql' >> /opt/start.sh \
  && chmod 755 /opt/start.sh

EXPOSE 22
EXPOSE 3306

CMD ["/opt/start.sh"]

普通用戶

根据需求调整Dockerfile配置文件

# ENV username zaza
# ENV password zaza
#  && adduser --gecos "" --disabled-password ${username} \
#  && echo "${username}:${password}" | chpasswd \

构建

先下载 mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz

docker build -t ubuntu:focal-20211006-zaza .

运行测试

# docker run -itd --name ubuntu -p 2222:22 -p 3306:3306 ubuntu:focal-20211006-zaza
docker run -itd --name ubuntu -p 2222:22 ubuntu:focal-20211006-zaza

# 进入容器
docker exec -it ubuntu bash
# ipaddr=$(hostname -I)

导出

docker save -o ubuntu-focal-20211006-zaza.tar ubuntu:focal-20211006-zaza
# docker save > ubuntu-focal-20211006-zaza.tar ubuntu:focal-20211006-zaza

导入

docker load -i ubuntu-focal-20211006-zaza.tar
# docker load < ubuntu-focal-20211006-zaza.tar