自己编译docker镜像

有时候官方现在的docker镜像并不能很好地符合自己的需求,我们需要自己定制。以下我主要是在官方mariadb:latest镜像的基础上,做一些定制化的操作如修改容器的编码格式。

/root/.pip目录下有两个文件:
在这里插入图片描述
Dockerfile的文件内容如下:

FROM mariadb:latest

RUN mkdir /root/.pip > /dev/null 2>&1

WORKDIR /root/.pip/

# copy ./pip.conf from host to docker container
COPY pip.conf ./

# replace your_name with your_name, your_email with your email
MAINTAINER your_name your_email

# update install resource
RUN apt-get update

# clean cache
RUN apt-get autoclean

# install python3-pip
RUN apt install vim python3-pip -y

# install python lib
RUN pip3 install sqlacodegen pymysql

# set container's coding format
ENV LANG C.UTF-8

CMD ["mysqld_safe"]

pip.conf文件内容如下:

[global]
trusted-host = mirrors.aliyun.com
index-url = https://mirrors.aliyun.com/pypi/simple

编译docker镜像

docker build /root/.pip/ -t my_mariadb:v1

编译完成
自己编译docker镜像_第1张图片
编译成功的docker镜像

docker image ls

在这里插入图片描述
利用刚刚编译的my_mariadb:v1镜像创建容器

docker run --name mariadb_02 -p 3307:3306 \
  -v /opt/docker/mariadb_data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=root@123 \
  -e MYSQL_USER=admin \
  -e MYSQL_PASSWORD=admin@123 \
  -e MYSQL_ROOT_HOST=% \
  -d my_mariadb:v1 \
  --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

查看生成的容器mariadb_02 :

docker ps -a

在这里插入图片描述
进入mariadb_02 容器内并查看容器编码格式:

docker exec -it mariadb_02 bash
locale

自己编译docker镜像_第2张图片
登录进mariadb数据库引擎内并创建test01数据库:

mysql -uroot -p
create database test01 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

指定使用test01数据库,并在其中创建几张数据表:

use test01;
create table student(
id int primary key auto_increment comment '主键',
name varchar(50) comment '学生中文姓名',
e_name varchar(50) comment '学生英文姓名',
dep_id int comment '院系id',
account_address varchar(200) comment '户口地(住)址',
home_address varchar(200) comment '家庭住址',
now_address varchar(200) comment '当前住址',
telephoneNum varchar(20) comment '手机号码',
wechartNum varchar(50) comment '微信号码',
qqNum varchar(20) comment 'QQ号码'
) comment = '学生信息表' charset utf8;

查看创建student数据表时的语句:

show create table student;

自己编译docker镜像_第3张图片
可以看到,已经能在容器内正常输入与显示中文了

你可能感兴趣的:(docker,mariadb,docker,linux,运维)