Docker 镜像的创建、nginx\mysql\tomcat\systemctl\sshd\apache

一、Docker镜像的分层

1、Dockerfile中的每个指令都会创建一个新的镜像层
2、镜像层将会被缓存和复用
3、当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效
4、某一层镜像缓存失效之后,它之后的镜像层都会失效
5、镜像层是不会变的,如果在某一层中添加一个文件,然后再下一层中删除它,则镜像中依然会包含该文件

二、Docker镜像的创建

2.1 Docker镜像

应用发布的标准格式
支撑一份Docker容器的运行

2.2 Docker镜像的创建方法

1、基于已有的镜像创建
2、基于本地模板创建
3、基于Dockerfile创建

2.2.1 基于已有镜像创建

将容器里面运行的程序及运行环境打包生成新镜像

docker commit 选项 容器ID/名称 仓库名称:标签
-m 说明信息
-a 作者信息
-p 生成过程中停止容器色运行

2.2.2 基于本地模板创建

通过导入操作系统模板文件生成新的镜像
使用wget命令导入本地镜像

wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz

cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:new

docker images | grep new			#导入成功后可查看本地镜像信息

2.2.3 基于Dockerfile创建

Dockerfile是由一组指令组成的文件

2.2.3.1 Dockerfile结构四部分

1、基础镜像信息
2、维护者信息
3、镜像操作指令
4、容器启动时执行指令

Dockerfile每行支持一条指令,每条指令可携带多个参数,支持使用以“#”开头的注释

指令含义
FROM 镜像指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令
MAINTAINER 名字说明新镜像的维护人信息
RUN 命令在所基于的镜像上执行命令
CMD [“要执行的命令”,“参数1”,“参数2”]指令启动容器时要运行的命令或者脚本,Dockerfile只能由一条CMD命令,如果指定多条则只能最后一条被执行
EXPOSE 端口号指定新镜像加载到Docker时要开启端口
ENV 环境变量 变量值设置一个环境变量的值,会被后面的RUN使用
ADD 源文件/目录(宿主机) 目标文件/目录(容器)将源文件复制到目标文件,源文件要与Dockerfile位于相同的目录中,或者是一个URL,ADD自带解压功能
COPY 源文件/目录 目标文件/目录将本地主机上的文件/目录复制到目标地点,源文件/目录要与Dockerfile在相同目录中
VOLUME [“目录”]在容器中创建一个挂载点
USER 用户名/UID指定运行容器时的用户
WORKDIR 路径为后续的RUN、CMD、ENTRYPOINT指定工作目录
ONBUILD 命令指定生成的镜像作为一个基础镜像时所要运行的命令
HEALTHCHECK健康检查

三、构建apache容器服务

3.1 下载基础镜像

docker pull centos:7				#以操作系统centos作为基础镜像

3.2 创建工作目录

[root@localhost opt]# mkdir apache
[root@localhost opt]# ls
apache  cent  containerd  rh  xyw_nginx
[root@localhost opt]# cd apache/
[root@localhost apache]# ls

3.3 创建并编写Dockerfile文件

[root@localhost apache]# vim Dockerfile

FROM centos
MAINTAINER xyw
RUN yum -y update
RUN yum -y install httpd
EXPOSE 80
ADD index.html /var/www/html/index.html
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]


[root@localhost apache]# vim run.sh

#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND

[root@localhost apache]# echo "this is xyw web" > index.html
[root@localhost apache]# ls
Dockerfile  index.html  run.sh

3.4 生成镜像

[root@localhost apache]# docker build -t httpd:centos .
Sending build context to Docker daemon  4.096kB
Step 1/9 : FROM centos
 ---> 300e315adb2f
Step 2/9 : MAINTAINER xyw
 ---> Running in e8adc66e7bdb
Removing intermediate container e8adc66e7bdb
 ---> 47d673c35e6d
Step 3/9 : RUN yum -y update
 ---> Running in 68d9c0b0dd24
......
Total                                           3.6 MB/s |  17 MB     00:04     
warning: /var/cache/dnf/appstream-02e86d1c976ab532/packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS Linux 8 - AppStream                      1.6 MB/s | 1.6 kB     00:00    
Importing GPG key 0x8483C65D:
 Userid     : "CentOS (CentOS Official Signing Key) <security@centos.org>"
 Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

Removing intermediate container 68d9c0b0dd24
 ---> e6ec17d44793
Step 4/9 : RUN yum -y install httpd
 ---> Running in 6c8cf9e3ec5d
......  
Complete!
Removing intermediate container 6c8cf9e3ec5d
 ---> 29652f09e5dc
Step 5/9 : EXPOSE 80
 ---> Running in 1a25060aa742
Removing intermediate container 1a25060aa742
 ---> 55d0a9ed8407
Step 6/9 : ADD index.html /var/www/html/index.html
 ---> 6592ddcfc1d9
Step 7/9 : ADD run.sh /run.sh
 ---> 1d4c0608a35e
Step 8/9 : RUN chmod 755 /run.sh
 ---> Running in 37c193ca3dad
Removing intermediate container 37c193ca3dad
 ---> 1c2093960db0
Step 9/9 : CMD ["/run.sh"]
 ---> Running in 852e63c4d59f
Removing intermediate container 852e63c4d59f
 ---> 763533cd679e
Successfully built 763533cd679e
Successfully tagged httpd:centos

3.5 启动容器

[root@localhost apache]# docker run -d -p 1122:80 httpd:centos 
0a7753b55e27fc486c91cae8b231bdbf15b42d058df12fca1695281e9628c297



[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND     CREATED         STATUS         PORTS                  NAMES
0a7753b55e27   httpd:centos   "/run.sh"   8 minutes ago   Up 8 minutes   0.0.0.0:1122->80/tcp   xenodochial_hamilton
[root@localhost ~]# docker images 
REPOSITORY                    TAG       IMAGE ID       CREATED        SIZE
httpd                         centos    763533cd679e   4 hours ago    338MB

在这里插入图片描述

四、构建sshd容器服务

sshd为secure shell的简称,可以通过网络在主机中开机shell的服务

4.1 下载基础镜像

准备在apache镜像的基础上构建

[root@localhost ~]# docker images 
REPOSITORY                    TAG       IMAGE ID       CREATED        SIZE
httpd                         centos    763533cd679e   4 hours ago    338MB

4.2 建立工作目录

[root@localhost ~]# cd /opt/
[root@localhost opt]# mkdir sshd
[root@localhost opt]# ls
apache  cent  containerd  rh  sshd  xyw_nginx
[root@localhost opt]# cd sshd/
[root@localhost sshd]# ls

4.3 创建并编写Dockerfile文件

[root@localhost sshd]# vim Dockerfile

FROM httpd:centos				#基础镜像是构建了apache的镜像
MAINTAINER xyw
RUN yum -y update
RUN yum -y install openssh* net-tools lsof telnet passwd
RUN echo '123456'| passwd --stdin root
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config			#将全局的UsePAM yes替换成UsePAM no
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd			#以session开头多空间隔required多空间隔pam_loginuid.so,即为session    required   pam_loginuid.so,将此行注释 
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]

4.4 生成镜像

[root@localhost sshd]# docker build -t sshd:httpd .
Sending build context to Docker daemon  2.048kB
Step 1/11 : FROM httpd:centos
 ---> 763533cd679e
Step 2/11 : MAINTAINER xyw
 ---> Running in d4b714e69a53
Removing intermediate container d4b714e69a53
 ---> c466323aa69f
Step 3/11 : RUN yum -y update
 ---> Running in 342d2de102fb
Last metadata expiration check: 4:01:19 ago on Wed Mar 24 03:25:22 2021.
Dependencies resolved.
Nothing to do.
Complete!
Removing intermediate container 342d2de102fb
 ---> 8787fd4b51d8
Step 4/11 : RUN yum -y install openssh* net-tools lsof telnet passwd
 ---> Running in c6fb1c507521
Last metadata expiration check: 4:01:20 ago on Wed Mar 24 03:25:22 2021.
Dependencies resolved.
......
Complete!
Removing intermediate container c6fb1c507521
 ---> 28225d481c1e
Step 5/11 : RUN echo '123456'| passwd --stdin root
 ---> Running in 960d3085e9cd
Changing password for user root.
passwd: all authentication tokens updated successfully.
Removing intermediate container 960d3085e9cd
 ---> 2abae4a4410b
Step 6/11 : RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
 ---> Running in 179f131c7498
Removing intermediate container 179f131c7498
 ---> c2bfa75aa202
Step 7/11 : RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
 ---> Running in 30c17777f3ae
Enter passphrase (empty for no passphrase): Enter same passphrase again: Generating public/private rsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.
The key fingerprint is:
SHA256:aWqPThe923MPF5zSc8yPGXNMG/ZTpc9CIQc9Mp0WtPg root@30c17777f3ae
The key's randomart image is:
+---[RSA 3072]----+
|            o==o.|
|            o+*+.|
|            .+++o|
|         o   o+B*|
|        S .  .EOX|
|       o . .  .B*|
|      + . .   + o|
|     o +   o. .o |
|     .o . . .o ..|
+----[SHA256]-----+
Removing intermediate container 30c17777f3ae
 ---> 785938a4b37c
Step 8/11 : RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd
 ---> Running in 9c130bc56ec6
Removing intermediate container 9c130bc56ec6
 ---> a417a1b23266
Step 9/11 : RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
 ---> Running in af92ab6b5e34
Removing intermediate container af92ab6b5e34
 ---> 6cb41fff1d52
Step 10/11 : EXPOSE 22
 ---> Running in 93e09a1e4b3a
Removing intermediate container 93e09a1e4b3a
 ---> 14de9d318348
Step 11/11 : CMD ["/usr/sbin/sshd","-D"]
 ---> Running in 15d0a85d1173
Removing intermediate container 15d0a85d1173
 ---> c7128720f0e7
Successfully built c7128720f0e7
Successfully tagged sshd:httpd
[root@localhost sshd]# docker images 
REPOSITORY                    TAG       IMAGE ID       CREATED          SIZE
sshd                          httpd     c7128720f0e7   13 minutes ago   446MB
httpd                         centos    763533cd679e   4 hours ago      338MB

4.5 启动容器

[root@localhost sshd]# docker ps -a
CONTAINER ID   IMAGE          COMMAND               CREATED              STATUS              PORTS                                          NAMES
23853c56b951   sshd:httpd     "/usr/sbin/sshd -D"   About a minute ago   Up About a minute   0.0.0.0:49155->22/tcp, 0.0.0.0:49154->80/tcp   eager_bohr					#因为是在httpd镜像的基础上构建的,-P随即指定端口,给httpd又映射了一个端口但是不能访问,所以删除容器,在下面重新指定端口了
0a7753b55e27   httpd:centos   "/run.sh"             4 hours ago          Up 4 hours          0.0.0.0:1122->80/tcp                           xenodochial_hamilton
[root@localhost sshd]# docker run -d -p 49155:22 sshd:httpd 
83dfba7ae1e1d2f0273a4428303a738d58576632e9b498870940c5f82f54bfe2
[root@localhost sshd]# docker ps -a
CONTAINER ID   IMAGE          COMMAND               CREATED          STATUS          PORTS                           NAMES
83dfba7ae1e1   sshd:httpd     "/usr/sbin/sshd -D"   11 seconds ago   Up 10 seconds   80/tcp, 0.0.0.0:49155->22/tcp   funny_lichterman
0a7753b55e27   httpd:centos   "/run.sh"             4 hours ago      Up 4 hours      0.0.0.0:1122->80/tcp            xenodochial_hamilton

4.6 进入容器

[root@localhost sshd]# ssh localhost -p 49155
The authenticity of host '[localhost]:49155 ([127.0.0.1]:49155)' can't be established.
RSA key fingerprint is SHA256:aWqPThe923MPF5zSc8yPGXNMG/ZTpc9CIQc9Mp0WtPg.
RSA key fingerprint is MD5:9e:98:34:ef:51:3f:ec:8b:c4:8d:f2:76:3c:f3:70:ab.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:49155' (RSA) to the list of known hosts.
root@localhost's password: 
[root@23853c56b951 ~]# 

五、构建systemctl容器服务

systemctl是管制服务的主要工具,它整合了chkconfig与service功能与一体

5.1 下载基础镜像

计划在httpd、apache镜像的基础上构建

[root@localhost opt]# docker images
REPOSITORY                    TAG       IMAGE ID       CREATED          SIZE
sshd                          httpd     c7128720f0e7   28 minutes ago   446MB
httpd                         centos    763533cd679e   4 hours ago      338MB

5.2 建立工作目录

[root@localhost opt]# mkdir systemctl
[root@localhost opt]# ls
apache  cent  containerd  rh  sshd  systemctl  xyw_nginx
[root@localhost opt]# cd systemctl/
[root@localhost systemctl]# ls

5.3 创建并编写Dockerfile文件

[root@localhost systemctl]# vim Dockerfile

FROM sshd:httpd
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/;for i in *;do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i;done);\		#进入/lib/systemd/system/sysinit.target.wants/路径,遍历其中所有文件/目录,匹配systemd-tmpfiles-setup.service,若没有匹配就删除;就是删除除了systemd-tmpfiles-setup.service之外的所有内容
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*;\
rm -f /lib/systemd/system/sockets.target.wants/*udev*;\
rm -f /lib/systemd/system/sockets.target.wants/*initctl*;\
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME ["/sys/fs/cgroup"]
CMD ["/usr/sbin/init"]		#初始化系统内核

5.4 生成镜像

[root@localhost systemctl]# docker build -t systemctl:sshd_httpd .
Sending build context to Docker daemon   2.56kB
Step 1/5 : FROM sshd:httpd
 ---> c7128720f0e7
Step 2/5 : ENV container docker
 ---> Running in cebbc2ebd2c5
Removing intermediate container cebbc2ebd2c5
 ---> 878355c73da9
Step 3/5 : RUN (cd /lib/systemd/system/sysinit.target.wants/;for i in *;do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i;done);rm -f /lib/systemd/system/multi-user.target.wants/*;rm -f /etc/systemd/system/*.wants/*;rm -f /lib/systemd/system/local-fs.target.wants/*;rm -f /lib/systemd/system/sockets.target.wants/*udev*;rm -f /lib/systemd/system/sockets.target.wants/*initctl*;rm -f /lib/systemd/system/basic.target.wants/*;rm -f /lib/systemd/system/anaconda.target.wants/*;
 ---> Running in 4562765304c4
Removing intermediate container 4562765304c4
 ---> 52323b073a77
Step 4/5 : VOLUME ["/sys/fs/cgroup"]
 ---> Running in 8a6bdac475f1
Removing intermediate container 8a6bdac475f1
 ---> b047abf3b238
Step 5/5 : CMD ["/usr/sbin/init"]
 ---> Running in a614e470c825
Removing intermediate container a614e470c825
 ---> 0cbba85e556d
Successfully built 0cbba85e556d
Successfully tagged systemctl:sshd_httpd
[root@localhost systemctl]# docker images 
REPOSITORY                    TAG          IMAGE ID       CREATED          SIZE
systemctl                     sshd_httpd   0cbba85e556d   7 minutes ago    446MB
sshd                          httpd        c7128720f0e7   57 minutes ago   446MB
httpd                         centos       763533cd679e   5 hours ago      338MB

5.5 启动容器

[root@localhost systemctl]# docker run --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemctl:sshd_httpd /sbin/init &			#privileged container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。
[1] 70848
[root@localhost systemctl]# docker ps -a
CONTAINER ID   IMAGE                  COMMAND               CREATED          STATUS          PORTS                           NAMES
6b458080a373   systemctl:sshd_httpd   "/sbin/init"          36 seconds ago   Up 35 seconds   22/tcp, 80/tcp                  relaxed_joliot
83dfba7ae1e1   sshd:httpd             "/usr/sbin/sshd -D"   38 minutes ago   Up 38 minutes   80/tcp, 0.0.0.0:49155->22/tcp   funny_lichterman
0a7753b55e27   httpd:centos           "/run.sh"             5 hours ago      Up 5 hours      0.0.0.0:1122->80/tcp            xenodochial_hamilton

5.6 验证systemctl

[root@localhost systemctl]# docker exec -it 6b458080a373 bash

[root@6b458080a373 /]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:sshd(8)
           man:sshd_config(5)
[root@6b458080a373 /]# systemctl start sshd
[root@6b458080a373 /]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2021-03-24 08:57:50 UTC; 1s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 85 (sshd)
    Tasks: 1 (limit: 12515)
   Memory: 928.0K
   CGroup: /docker/6b458080a373295f127d90525d8023573149e1690e37223b5b3a4b6d92624649/system.slice/sshd.service
           └─85 /usr/sbin/sshd -D -oCiphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,ae>

Mar 24 08:57:50 6b458080a373 systemd[1]: Starting OpenSSH server daemon...
Mar 24 08:57:50 6b458080a373 sshd[85]: WARNING: 'UsePAM no' is not supported in Fedora and may cause several p>
Mar 24 08:57:50 6b458080a373 sshd[85]: Server listening on 0.0.0.0 port 22.
Mar 24 08:57:50 6b458080a373 sshd[85]: Server listening on :: port 22.
Mar 24 08:57:50 6b458080a373 systemd[1]: Started OpenSSH server daemon.

六、构建Nginx容器服务

Nginx是一款轻量级的web服务器
(1)占用内存少
(2)并发能力强
(3)可做反向代理

6.1 建立工作目录并下载Nginx源码包

[root@localhost opt]# mkdir nginx
[root@localhost opt]# ls
apache  cent  containerd  nginx  rh  sshd  systemctl  xyw_nginx
[root@localhost opt]# cd nginx/
[root@localhost nginx]# rz -E
rz waiting to receive.
[root@localhost nginx]# ls
nginx-1.12.0.tar.gz

6.2 创建并编写Dockerfile文件

[root@localhost nginx]# vim Dockerfile

FROM centos:7				#这边我没有用前面的镜像,因为单纯centos与软件包有换件问题
MAINTAINER xyw

RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make

RUN useradd -M -s /sbin/nologin nginx

ADD nginx-1.12.0.tar.gz /usr/local/src
WORKDIR /usr/local/src
WORKDIR nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install

ENV PATH /usr/local/nginx/sbin:$PATH

EXPOSE 80
EXPOSE 443

RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
ADD run.sh /run.sh
RUN chmod +x /run.sh
CMD ["/run.sh"]
vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

6.3 生成镜像

[root@localhost nginx]# docker build -t nginx:centos

6.4 启动容器并进行测试

[root@localhost nginx]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        centos    9c40a0a51606   13 seconds ago   613MB
centos       7         8652b9f0cb4c   4 months ago     204MB
[root@localhost nginx]# docker run -d -P nginx:centos 
f10a07f6768d5ae2fb8a87b47ca58b1ff1009bf842695c12e124d5efd21a5aa4
[root@localhost nginx]# docker ps 
CONTAINER ID   IMAGE          COMMAND     CREATED         STATUS         PORTS                                           NAMES
f10a07f6768d   nginx:centos   "/run.sh"   7 seconds ago   Up 6 seconds   0.0.0.0:49165->80/tcp, 0.0.0.0:49164->443/tcp   great_goodall

七、构建MySQL容器服务

MySQL是目前非常主流的关系型数据库
(1)体积小、速度快、成本低
(2)适合中小型企业
(3)常与PHP和Apache搭配使用

7.1 创建工作目录

[root@localhost local]# cd /opt/
[root@localhost opt]# ls
apache  cent  containerd  nginx  rh  sshd  systemctl  tomcat  xyw_nginx
[root@localhost opt]# mkdir mysql
[root@localhost opt]# ls
apache  containerd  nginx  sshd       tomcat
cent    mysql       rh     systemctl  xyw_nginx
[root@localhost opt]# cd mysql/
[root@localhost mysql]# ls
[root@localhost mysql]# rz -E
rz waiting to receive.
[root@localhost mysql]# ls
mysql-boost-5.7.20.tar.gz

7.2 创建并编写Dockerfile文件

vim Dockerfile

 
FROM centos:7
MAINTAINER xyw
RUN yum -y install \
gcc \
gcc-c++ \
ncurses \
ncurses-devel \
bison \
make \
cmake

RUN useradd -M -s /sbin/nologin mysql

ADD mysql-boost-5.7.20.tar.gz /usr/local/src
WORKDIR /usr/local/src
RUN mv mysql-5.7.20 mysql
WORKDIR /usr/local/src/mysql
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 && make -j2 && make install
RUN rm -rf /etc/my.cnf
WORKDIR /opt/mysql
ADD my.cnf /etc

RUN chown -R mysql:mysql /usr/local/mysql/
RUN chown mysql:mysql /etc/my.cnf

ENV PATH /usr/local/mysql/bin:/usr/local/mysql/lib:$PATH


WORKDIR /usr/local/mysql
RUN bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

RUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

EXPOSE 3306

RUN echo -e "#!/bin/sh   \nsystemctl enable mysqld" > /run.sh
RUN chmod 755 /run.sh
RUN sh /run.sh
CMD ["init"]
vim my.cnf 


[client]
port = 3306
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character-set-server = utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

7.3 生成镜像

docker build -t mysql:centos

7.4 运行容器并验证

[root@ct mysql]# docker run --privileged -d -P mysql:centos 				#不降权运行
2ac58189ef379d32a10666d61cef1b90db71d7354f566e4245891df208791dd0

[root@ct mysql]# docker ps -a
CONTAINER ID   IMAGE          COMMAND   CREATED          STATUS          PORTS                     NAMES
beb31e01a458   mysql:centos   "init"    3 seconds ago   Up 3 seconds   0.0.0.0:49154->3306/tcp   unruffled_cray

[root@ct mysql]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mysql        centos    ea13dcb259f5   6 minutes ago   10.3GB
centos       7         8652b9f0cb4c   4 months ago    204MB
[root@ct mysql]# docker exec -it beb31e01a458 bash
[root@beb31e01a458 mysql]# ls
COPYING       bin      lib         mysql.sock.lock  usr
COPYING-test  data     man         mysqld.pid
README        docs     mysql-test  share
README-test   include  mysql.sock  support-files

[root@beb31e01a458 mysql]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> grant all privileges on *.* to 'root'@'%' identified by '123123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> grant all privileges on *.* to 'root'@'localhost' identified by '123123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> create database xyw;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| xyw                |
+--------------------+
5 rows in set (0.00 sec)


宿主机

yum -y install mariadb
[root@ct ~]# mysql -h 192.168.238.11  -uroot -P 49154 -p123123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.20 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.000 sec)

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| xyw                |
+--------------------+
5 rows in set (0.000 sec)

八、构建tomcat容器服务

8.1 创建工作目录

mkdir tomcat
[root@localhost java]# cd /opt/tomcat/
[root@localhost tomcat]# ls
apache-tomcat-9.0.16.tar.gz                   jdk-8u91-linux-x64.tar.gz

8.2 创建并编写Dockerfile文件

vim Dockerfile

FROM centos:7
MAINTAINER xyw

ADD jdk-8u91-linux-x64.tar.gz /usr/local

WORKDIR /usr/local
RUN mv jdk1.8.0_91 java

ENV JAVA_HOME /usr/local/java
ENV CLASS_PATH $JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
ENV PATH $JAVA_HOME/bin:$PATH

ADD apache-tomcat-9.0.16.tar.gz /usr/local
WORKDIR /usr/local
RUN mv apache-tomcat-9.0.16 /usr/local/tomcat
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]

8.3 生成镜像

docker build -t tomcat:centos .

8.4 运行容器并验证

docker run -d -P tomcat:centos 
1668e8f0faa81e7589e62a77244c4337fc78580591ad3c0b152c6e44df7f27f4
[root@localhost tomcat]# docker ps -a
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                                           NAMES
1668e8f0faa8   tomcat:centos   "/usr/local/tomcat/b…"   4 seconds ago   Up 4 seconds   0.0.0.0:49170->8080/tcp                         flamboyant_merkle
f10a07f6768d   nginx:centos    "/run.sh"                15 hours ago    Up 15 hours    0.0.0.0:49165->80/tcp, 0.0.0.0:49164->443/tcp   great_goodall
[root@localhost tomcat]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
tomcat       centos    7f0be8896eb7   4 minutes ago   964MB
nginx        centos    9c40a0a51606   15 hours ago    613MB
centos       7         8652b9f0cb4c   4 months ago    204MB

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值