文章目录

  • 构建nginxDockerfile镜像
  • 构建DockerfileTomcat
  • 构建Dockerfile MySQL镜像

构建nginxDockerfile镜像

这里的nginx软件包使用nginx-1.12.2.tar.gz需要的私聊

[root@docker ~]# mkdir /nginx
[root@docker ~]# cd /nginx/
[root@docker nginx]# vim Dockerfile
FROM centos:7
RUN yum update -y
RUN yum -y install gcc gcc-c++ make pcre-devel expat-devel perl zlib-devel pcre
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /usr/local
WORKDIR /usr/local/nginx-1.12.2
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    '关闭nginx自带的守护进程'
CMD ["/usr/local/nginx/sbin/nginx"]这里指定的是在centos7下安装  要指定版本
[root@docker nginx]# rz -E '//上传nginx源码包'
rz waiting to receive.
[root@docker nginx]# ls
Dockerfile  nginx-1.12.2.tar.gz[root@docker nginx]# docker build -t nginx:test .
[root@docker nginx]# docker run -d -P nginx:test1
885cf9811be57e12690ce352fbd7c5011cefffece8b59a0d7317e12eb8955a70
[root@docker nginx]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                NAMES
e34b0521147c        nginx:test1         "/usr/local/nginx/sb…"   2 minutes ago       Up 2 minutes        0.0.0.0:32784->22/tcp, 0.0.0.0:32783->80/tcp, 0.0.0.0:32782->443/tcp   zen_hellman

创建容器,指定端口

[root@docker nginx]# docker run -d -P nginx:test1
885cf9811be57e12690ce352fbd7c5011cefffece8b59a0d7317e12eb8955a70
[root@docker nginx]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                NAMES
e34b0521147c        nginx:test1         "/usr/local/nginx/sb…"   2 minutes ago       Up 2 minutes        0.0.0.0:32784->22/tcp, 0.0.0.0:32783->80/tcp, 0.0.0.0:32782->443/tcp   zen_hellman[root@docker nginx]# ip addr '//自己IP地址为 192.168.233.133'
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:68:b8:a6 brd ff:ff:ff:ff:ff:ffinet 192.168.233.133/24 brd 192.168.233.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::35a9:b12:5e2b:c44d/64 scope link noprefixroute valid_lft forever preferred_lft forever
...省略内容

构建DockerfileTomcat

[root@docker nginx]# mkdir /tomcat
[root@docker nginx]# cd /tomcat/
[root@docker tomcat]# vim Dockerfile
FROM centos
MAINTAINER this is tomcat
ADD jdk-8u201-linux-x64.rpm /usr/local/
WORKDIR /usr/local/
RUN rpm -ivh jdk-8u201-linux-x64.rpm
ENV JAVA_HOME /usr/java/jdk1.8.0_201-amd64
ENV CLASSPATH $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/tomcat9
ENV PATH /usr/local/tomcat9/bin/:$PATH
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat9/bin/catalina.sh","run"][root@docker tomcat]# docker build -t tomcat:test .   '创建镜像'
[root@docker tomcat]# docker run -d -P tomcat:test    '启动镜像'
[root@docker tomcat]# docker ps -a |grep tomcat
f4afd19d14d3        tomcat:test1        "/usr/local/src/tomc…"   25 seconds ago      Up 23 seconds       0.0.0.0:32788->22/tcp, 0.0.0.0:32787->8080/tcp                         lucid_tesla

1、ENRYPOINT指开启容器前镜像就已经执行了括号内的命令

2、CMD是开启容器时,要执行的指令,设置容器启动后默认执行的命令及其参数,但 CMD 能够被 docker run 后面跟的命令行参数替换

3、基于Dockerfile内有CMD或者ENTRYPOINT创建镜像时,docker run 后面就不要加指令(/bin/bash)了,会覆盖掉Dockerfile中的指令或者语法报错

构建Dockerfile MySQL镜像

vim Dockerfile
#编写dockerfile文件
FROM centos:7
#指定基础镜像
RUN yum -y update
#更新yum源
RUN yum -y install \
ncurses \
ncurses-devel \
bison \
cmake \
make \
gcc \
gcc-c++
#安装mysql依懒环境包
RUN useradd -s /sbin/nologin mysql
#创建运行用户
ADD mysql-boost-5.7.20.tar.gz /usr/local/src
#将压缩包添加到/usr/local/src目录下面
WORKDIR /usr/local/src/mysql-5.7.20/
#指定当前的工作路径
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_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 && make install
#cmake和编译
RUN chown -R mysql:mysql /usr/local/mysql/
#给予/usr/local/mysql的属主和属组
RUN rm -rf /etc/my.cnf
#删除原来的/etc/my.cnf文件
ADD my.cnf /etc
#将宿主机的my.cnf文件添加到/etc/目录下面
RUN chown mysql:mysql /etc/my.cnf
#设置权限
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
#设置mysql的环境
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/
#将mysql的启动脚本复制到/usr/lib/systemd/system/目录下面,便于systemctl的管理
EXPOSE 3306
#开放容器的端口
RUN echo -e "#!/bin/bash \nsystemctl enable mysqld" > /run.sh
#写mysql的启动脚本
RUN chmod 755 /run.sh
#给予权限
RUN sh /run.sh
#执行脚本
CMD ["init"]
#容器启动时执行
vim my.cnf
[root@localhost mysql-5.7.20]#vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
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 = 1sql_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
构建mysql:new的镜像
docker build -t centos:mysql .1
启动容器
docker run --name=mysql_server -d -P --privileged centos:mysql 1
提权
docker exec -it  镜像ID  /bin/bash
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'%' localhost identified by 'abc123';
privileges on *.* to 'root'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'%' localhost identified by 'abc123';

这就是你日日夜夜想要的docker!!!---------Dockerfile构建nginx、Tomcat、MySQL镜像相关推荐

  1. 这就是你日日夜夜想要的docker!!!---------三分钟带你玩转docker命令

    文章目录 docker version 查看版本信息 docker inspect 查看镜像全部信息 docker search 搜索镜像 docker pull 下载镜像 docker images ...

  2. 这就是你日日夜夜想要的docker!!!---------Docker资源控制--Cgroup

    文章目录 一.什么是 Cgroup? 二.使用 stress 工具测试 CPU 和内存 1.stress工具介绍 2.使用 Dockerfile 来创建一个 stress 的工具镜像: 三.实操 1. ...

  3. 这就是你日日夜夜想要的docker!!!---------Docker Compose容器编排理论+实操

    文章目录 一.Compose简介 1.在Compose中有两个重要的概念 2.docker,dockerfile与docker-compose区别 二.Compose安装与卸载 1.Centos系统安 ...

  4. 这就是你日日夜夜想要的docker!!!---------TLS加密远程连接Docker

    文章目录 一.Docker 存在的安全问题 1.Docker 自身漏洞 2.Docker 源码问题 3.Docker 架构缺陷与安全机制 二.TLS加密通讯协议 1.TLS介绍 2.CA证书 三.配置 ...

  5. 这就是你日日夜夜想要的docker!!!---------Harbor私有仓库

    文章目录 一.Harbor私有仓库介绍 1.什么是Harbor?有什么作用? 2.harbor的特性 3.harbor配置文件参数 二.部署Harbor私有仓库 1.harbor服务器安装harbor ...

  6. 这就是你日日夜夜想要的docker!!!---------Docker常规操作--端口映射、数据卷管理 以及容器互联

    文章目录 一.端口映射 1.-P随机端口 2.映射指定一个端口 3.映射指定多个端口 4.映射到指定端口的指定地址 5.映射到指定端口的任意地址 6.查看端口映射情况 二.数据卷与数据卷容器 1.挂载 ...

  7. 这就是你日日夜夜想要的docker!!!---------docker+consul+ nginx集成分布式的服务发现与注册架构

    文章目录 一.Docker consul容器服务更新与发现理论 1.基本架构 2.基于nginx和consul构建高可用及自动发现的Docker服务架构 3.Docker consul自动发现服务架构 ...

  8. Docker手动构建 nginx+py3+uwsgi环境

    Docker手动构建 nginx+py3+uwsgi环境 前述 这里使用的阿里云服务器部署,云服务器ssh登陆成功后,如果几分钟没有操作的话,sshd会自动断开登陆,对于我们来说,在部署软件有时要等很 ...

  9. Dockerfile构建nginx镜像

    Dockerfile构建nginx镜像[root@bogon ~]# mkdir /opt/docker-file [root@bogon ~]# cd /opt/docker-file/ [root ...

最新文章

  1. 继承和多态 3.0 -- 菱形继承
  2. GIL+死锁与递归锁+信号量+event事件
  3. Objective-C中的常量
  4. .net里鼠标选中的text数据怎么获取_怎么利用Excel设置当天生日提醒功能
  5. python可以做什么有趣的东西-您用python做过什么有趣的事?(什么事python)
  6. Windows进程与线程学习笔记(九)—— 线程优先级/进程挂靠/跨进程读写
  7. 从mysql读取数据保存成excel_小程序读取excel表格数据,并存储到云数据库
  8. Notepad++连接VMWare中Linux只能看到/root目录
  9. 《Groovy in Action》笔记
  10. 前端到底是自学好还是培训好?
  11. 2005 mysql连接字符串_怎么用c#远程连接sql server2005,连接字符串怎么写
  12. Windows和linux(ubuntu)互传文件简便快捷的方法
  13. 结构体链表赋值与删除
  14. 沟通和编程一样,也是一门艺术系列4(沟通的原则)
  15. 怎样关闭计算机445端口,445端口怎么关闭 445端口关闭方法介绍
  16. 你所不知道的我国交通工程早期经历了怎样的发展?
  17. 求助:truffle unbox pet-shop时truffle test出错
  18. 如何解决刷新一瞬间 出现样式未加载完 或者 出现VUE代码问题
  19. 计算机word铁路试题,计算机word试题含答案
  20. 【环形dp】poj 2228 Naptime

热门文章

  1. Linux查看tcp连接数
  2. 阿里品牌数据银行分析师复习资料库——人群圈选类问题答案
  3. 【ProgrammingMicrosoftAzureServiceFabric】第四章: Actor模式
  4. Commander基本使用
  5. java 验证码 算术_java生成图形验证码(算数运算图形验证码 + 随机字符图形验证码)...
  6. 微图手机版如何导航?
  7. Problem:生日蛋糕
  8. Ajax同步设置超时时间出错逻辑解决方案
  9. Unity WebGl播放m3u8在线视频(监控,直播)解决方案
  10. 6.jQuery中的Ajax上传文件