Docker 基于centos构建nginx镜像 构建MySQL镜像

第一题. 基于centos镜像构建nginx:

编写Dockerfile制作镜像,生成镜像名为my_build:Nginx1。首先创建目录dockerfile-nginx1,保存Dockerfile文件。具体要求如下:

(1)基于镜像centos:7

(2)安装Nginx

a.安装相关依赖

b.下载并解压Nginx

(3)工作目录设为:nginx-1.9.7

(4)编译安装Nginx

(5)对外暴露80,443端口

(6)修改Nginx配置文件,以非daemon方式启动

(7)复制服务启动脚本并设置权限

(8)启动容器时执行脚本run.sh

run.sh内容如下所示:

题目要求如上,可先自行尝试。下面开始操作:

构建Dockerfile文件,并生成镜像:

创建并进入dockerfile_nginx1文件夹:

mkdir dockerfile_nginx1
cd dockerfile_nginx1

 在文件夹内编写Dockerfile文件并查看:

vim Dockerfile
cat Dockerfile

Dockerfile文件内容:

FROM centos:7
RUN yum install -y proc-devel gcc gcc-c++ zlib zlid-devel make openssl-devel wget
RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz
RUN tar -zxvf nginx-1.9.7.tar.gz
WORKDIR nginx-1.9.7
RUN ./configure --prefix=/usr/local/nginx && make && make install
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
COPY run.sh /
RUN chmod 777 /run.sh
CMD ["sh","-c","/run.sh"]

编写run.sh启动脚本内容并查看:

vim run.sh
cat run.sh

run.sh文件内容:

#!/bin/bash
/usr/local/nginx/sbin/nginx

将Dockerfile文件build成镜像,并取名my_build:nginx:

docker build -t my_build:nginx .

Docker 基于centos构建nginx镜像 构建MySQL镜像_第1张图片

使用构建的镜像生成容器: 

使用该镜像创建容器my_nginx,以后台运行的方式启动,并随机分配端口:

docker run -d -P --name my_nginx my_build:nginx

查看启动的容器,并查看容器端口:

docker ps

Docker 基于centos构建nginx镜像 构建MySQL镜像_第2张图片

 在浏览器访问nginx容器:

我们根据随机分配到的端口,在浏览器访问nginx,访问方法是 虚拟机IP地址:端口号。

Docker 基于centos构建nginx镜像 构建MySQL镜像_第3张图片

第二题:基于centos7构建nginx镜像,并修改主页内容:

编写Dockerfile制作镜像,生成镜像名为my_build:Nginx2。首先创建目录dockerfile-nginx2,保存Dockerfile文件。具体要求如下:

(1)基于镜像centos:7

(2)将nginx.repo复制到容器中的yum源定义文件位置/etc/yum.repo

(3)安装Nginx

(4)修改Nginx首页信息为“Hello!This is nginx server”

(5)对外暴露80端口

(6)启动Nignx,启动命令:Nginx -g daemon off;

yum.repo文件内容如下所示:

Docker 基于centos构建nginx镜像 构建MySQL镜像_第4张图片

开始操作:

创建并进入文件夹dockerfile_nginx2:

mkdir dockerfile_nginx2
cd dockerfile_nginx2

编写Dockerfile文件:

vim Dockerfile

Dockerfile文件内容:

FROM centos:7
COPY ./nginx.repo /etc/yum.repos.d/nginx.repo
RUN yum install -y nginx
RUN sed -i 's/Welcome to nginx!/Hello!This is nginx server/g' /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

编写nginx.repo文件:

vim nginx.repo

nginx.repo文件内容:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

将Dockerfile文件构建成镜像:

docker build -t my_build:Nginx2 .

Docker 基于centos构建nginx镜像 构建MySQL镜像_第5张图片

 使用此镜像构建容器,以后台运行的方式启动,并随机分配ip地址:

docker run -d -P my_build:Nginx2

查看启动的容器:

docker ps

Docker 基于centos构建nginx镜像 构建MySQL镜像_第6张图片

第三题:基于centos7构建mysql镜像:

编写Dockerfile制作mysql镜像,生成镜像名为my_build:mysql,具体要求如下:

(1)基于镜像guyton/centos6

(2)开放端口3306

(3)设置root密码为123456

开始操作:

创建并进入mysql文件夹:

mkdir mysql
cd mysql

编写mysql_file文件:

vim mysql_file

mysql_file文件内容:

FROM centos:7
RUN yum localinstall -y https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
RUN yum install -y yum-utils
RUN sed -i 's/gpgcheck=1/gpgcheck=0/g' /etc/yum.repos.d/mysql-community.repo && sed -i 's/gpgcheck=1/gpgcheck=0/g' /etc/yum.repos.d/mysql-community-source.repo
RUN yum install -y mysql-server mysql mysql-devel
COPY run.sh /run.sh
RUN chmod 777 /run.sh && /run.sh
EXPOSE 3386
CMD ["mysqld","--user=root"]

编写run.sh文件:

vim run.sh
cat run.sh

run.sh文件内容: 

#! /bin/bash
rm -rf /var/lib/mysql
mysqld --initialize-insecure
chown -R mysql:mysql /var/lib/mysql
mysqld --user root &
sleep 5
mysqladmin -u root password 123456

使用mysql_file文件构建镜像:

docker build -f ./mysql_file -t my_build:mysql .

 Docker 基于centos构建nginx镜像 构建MySQL镜像_第7张图片

进入Docker容器的两个方式:

方式一:

使用该镜像创建容器,并以交互式的方式启动,并随机分配端口:

docker run -it -P my_build:mysql /bin/bash

 方式二:

创建容器并以后台的方式运行:

docker run -d my_build:mysql

 以交互式的方式进入容器:

docker exec -it 07e4b4e9d9f5 /bin/bash

Docker 基于centos构建nginx镜像 构建MySQL镜像_第8张图片

进入mysql:

mysql -u root -p123456

查看数据库:

show databases;

Docker 基于centos构建nginx镜像 构建MySQL镜像_第9张图片

你可能感兴趣的:(Docker容器技术,linux,docker,容器,运维,后端)