Dockerfile参数
指令 | 含义 |
FROM镜像 | 指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令 |
MAINTAINER名字 | 说明新镜像的维护人信息 |
RUN命令 | 在所基于的镜像上执行命令,并提交到新的镜像中 |
CMD[“要运行的程序”,“参数”,“参数2”] | 指令启动容器时要运行的命令或者脚本,Dockerfile只能有一条CMD命令,如果指定多条则只能最后一条被执行 |
EXPOSE端口号 | 指定新镜像加载到Docker时要开启的端口 |
ENV环境变量变量值 | 设置一个环境变量的值,会被后面的RUN使用 |
ADD源文件/目录目标文件/目录 | 将原文件复制到目标文件,源文件要与Dockerfile位于相同目录中,或者是一个URL |
COPY源文件/目录目标文件/目录 | 将本地主机上的文件/目录复制到目标地点,源文件/目录要与Dockerfile在相同的目录中 |
VOLUME[“目录”] | 在容器中创建一个挂载点 |
USER用户名/UID | 指定运行容器时的用户 |
WORKDIR路径 | 为后续的RUN、CMD、ENTRYPOINT指定工作目录 |
ONBULD命令 | 指定所生成的镜像作为一个基础镜像时所要运行的命令 |
构建Nginx容器
1.下载基础镜像
[root@localhost media]# docker pull centos //从互联网上下载镜像的命令
此处使用已有镜像(从光盘上下载)
[root@localhost media]# docker load <centos
f972d139738d: Loading layer [==================================================>] 208.8 MB/208.8 MB
2.建立工作目录
[root@localhost ~]# mkdir nginx
[root@localhost ~]# cd nginx/
3.创建并编写Dockerfile文件
[root@localhost nginx]# vim Dockerfile
FROM centos //设置基础镜像
MAINTAINER the centos project <--大哥专属--> //维护该镜像的用户信息
RUN yum -y install wget proc-devel net-tools gcc zlib zlib-devel make openssl-devel //安装相关依赖包
RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz // 下载并解压Nginx源码包
RUN tar zxf nginx-1.9.7.tar.gz
WORKDIR nginx-1.9.7 //编译安装Nginx
RUN ./configure --prefix=/usr/local/nginx && make && make install
EXPOSE 80 //开启80和443端口
EXPOSE 443
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf // 修改Nginx配置文件,以非daemon方式启动
WORKDIR /root/nginx //复制服务启动脚本并设置权限
ADD run.sh /run.sh
RUN chmod 775 /run.sh
CMD ["/run.sh"] // 启动容器是执行脚本
4.编写执行脚本内容
[root@localhost nginx]# vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
5.生成镜像
[root@localhost nginx]# docker build -t nginx:wyjx .
.....
Step 8/14 : EXPOSE 80
---> Running in 1d39f81e94e9
---> c28d2172c94e
Removing intermediate container 1d39f81e94e9
Step 9/14 : EXPOSE 443
---> Running in 3413206d2ae5
---> f5f60eaa040d
Removing intermediate container 3413206d2ae5
Step 10/14 : RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
---> Running in 5a786a4b3139
---> 7fb5edc00aed
Removing intermediate container 5a786a4b3139
Step 11/14 : WORKDIR /root/nginx
---> 3ef5a508d284
Removing intermediate container 2e7b0b14e8a0
Step 12/14 : ADD run.sh /run.sh
---> 04db47301cc3
Removing intermediate container 6b2514c50c42
Step 13/14 : RUN chmod 775 /run.sh
---> Running in b68b82d15b22
---> c43132e05aa0
Removing intermediate container b68b82d15b22
Step 14/14 : CMD /run.sh
---> Running in 3f4bc601d9bc
---> 3242254ee52a
Removing intermediate container 3f4bc601d9bc
Successfully built 3242254ee52a
6.启动容器进行测试
[root@localhost ~]# docker run -d -P nginx:wyjx
fc3b52be7871e42c48d2a22c67b4db1d85017fec0ee3fd2db79b6ac6a1481847
查看容器运行状态
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc3b52be7871 nginx:wyjx "/run.sh" 23 seconds ago Up 22 seconds 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp dreamy_rosalind
7.浏览器访问
http://本地IP:32769
构建Tomcat容器
Tomcat是一个免费开源的轻量级Web服务器,时开发和调试JSP程序的首选
1.创建工作目录
[root@localhost ~]# mkdir Tomcat
[root@localhost ~]# cd Tomcat/
需要把jdk软件包下载解压到工作目录
[root@localhost Tomcat]# tar zxf jdk-8u91-linux-x64.tar.gz
[root@localhost Tomcat]# ls
jdk1.8.0_91 jdk-8u91-linux-x64.tar.gz
2.创建Dockerfile文件
[root@localhost Tomcat]# vim Dockerfile
FROM centos // 设置基础镜像
MAINTAINER the centos project <--大哥专属--> // 维护该镜像的用户信息
ADD jdk1.8.0_91 /usr/local/jdk-8u91 // 设置JDK环境变量
ENV JAVA_HOME /usr/local/jdk-8u91
ENV JAVA_BIN /usr/local/jdk-8u91/bin
ENV JRE_HOME /usr/local/jdk-8u91/jre
ENV PATH $PATH:/usr/local/jdk-8u91/bin:/usr/local/jdk-8u91/jre/bin
ENV CLASSPATH /usr/local/jdk-8u91/jre/bin:/usr/local/jdk-8u91/lib:/usr/local/jdk-8u91/jre/lib/charsets.jar
RUN yum install -y wget // 安装wget工具
RUN wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.53/bin/apache-tomcat-8.5.53.tar.gz //下载tomcat软件包,注意此软件的版本号
RUN tar zxf apache-tomcat-8.5.53.tar.gz // 加压tomcat并移动到相应位置
RUN mv apache-tomcat-8.5.53 /usr/local/tomcat
EXPOSE 8080 // 开启8080 端口
ADD run.sh /run.sh // 启动容器时添加执行脚本
RUN chmod 775 /run.sh
CMD ["/run.sh"]
3.编写执行脚本内容
[root@localhost Tomcat]# vim run.sh
#!/bin/bash
/usr/local/tomcat/bin/startup.sh
tailf /tun
4.用Dockerfile生成镜像
[root@localhost Tomcat]# docker build -t tomcat:wyjx .
5.运行容器并验证
[root@localhost tomcat]# docker run -d --name zsTOMCAT -p 80:8080 tomcat:zhangsan //映射本地的80端口到容器的8080端口
9e1fdc4d3eb8420224f5481535c5ff1387a14a8a1abd700153c6ae48a3ad1303
[root@localhost tomcat]# firefox http://192.168.1.10:80
构建MySQL容器
1.下载基础镜像并创建工作目录
[root@localhost media]# docker pull centos //从互联网上下载镜像的命令
此处用本地的(光盘上)
[root@localhost media]# docker load <centos6
5d574ede99e4: Loading layer [==================================================>] 202 MB/202 MB
b077477046f8: Loading layer [==================================================>] 35.54 MB/35.54 MB
b244861945e8: Loading layer [==================================================>] 2.048 kB/2.048 kB
Loaded image: docker.io/guyton/centos6:latest
[root@localhost ~]# mkdir mysql
[root@localhost ~]# cd mysql/
2.创建Dockerfile文件
[root@localhost mysql]# vim Dockerfile
FROM guyton/centos6 //设置基础镜像
MAINTAINER the centos //维护该镜像的用户信息
RUN yum install -y mysql mysql-server // 安装mysql数据库软件包
RUN /etc/init.d/mysqld start &&\ // 开启mysql服务,并进行授权
mysql -e "grant all privileges on *.* to 'root'@'%' identified by '123456';"&&\
mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by '123456';"
EXPOSE 3306 // 开启3306端口
CMD ["mysqld_safe"] // 运行初始化脚本mysqld_safe
3.用Dockerfile生成镜像
[root@localhost mysql]# docker build -t mysqlwyjx .
如果有报错请使用这条命令
[root@localhost mysql]# docker build --network=host -t mysqlwyjx .
4.运行容器验证
[root@localhost mysql]# docker run -d -P mysql:wyjx
b0cd33a6cfe9ba5ca8789f6a38e49d7bcc3455423cf7382471cc4166f743551b
运行中出现错误:请执行
[root@localhost ~]#systemctl start docker //启动
[root@localhost ~]# sudo systemctl daemon-reload//守护进程重启
[root@localhost ~]#systemctl restart docker //重启docker服务
[root@localhost ~]#sudo service docker restart //重启docker服务
[root@localhost ~]# service docker stop //关闭docker
[root@localhost ~]#systemctl stop docker //关闭docker
[root@localhost ~]#systemctl start docker // 启动docker
然后在重新运行容器就可以正常要运行了
查看容器运行状态
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b0cd33a6cfe9 mysql:wyjx "mysqld_safe" 18 minutes ago Up 18 minutes 0.0.0.0:32768->3306/tcp dreamy_poincare
5.从本地主机登录MySQL数据库进行验证
在此使用MySQL时需要 yum install mysql 安装mariaDB客户端
YUM路径保持原先状态文件在进行yum mysql
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo
安装mysql
[root@localhost ~]# yum -y install mysql
登录验证
[root@localhost ~]# mysql -h 192.168.1.131 -u root -P 32768 -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.73 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 |
| test |
+--------------------+
3 rows in set (0.00 sec)
MySQL [(none)]> exit
Bye