Docker镜像与制作的三种方式
1.下载初始化镜像
docker pull ubuntu
docker run -it -p 80:80 ubuntu /bin/bash
apt-get update && apt-get install vim -y
vim /etc/apt/sources.list 修改为阿里的镜像源
apt-get update
2.安装nginx以及配套软件包
apt-get install nginx wget libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev iproute2 net-tools iotop -y
开启nginx
nginx -t
nginx
修改配置文件,关闭后台运行,在/etc/nginx/nginx.conf中全局配置中添加daemon off;
3.提交容器
本终端不退出,在另一个终端里
docker commit -a "shitouweb " -m "ubuntu.nginx" 5321db21c49a ubuntu.nginx
-a 镜像作者的联系方式
-m 镜像描述信息
-c 镜像启动时自动执行的命令
容器ID
创建镜像的名称
4.启动容器
sudo docker run -it -p 8080:80 ubuntu.nginx nginx
编译方式安装
1.初始化容器
docker run -it -p 80:80 ubuntu /bin/bash
apt-get update && apt-get install gcc vim net-tools -y
2.安装配套软件包
apt-get install wget libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev iproute2 net-tools iotop gcc g++ automake build-essential -y
3.在容器中下载源码并编译安装
cd /usr/local/src && wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1 && ./configure --prefix=/apps/nginx && make && make install
4.修改配置文件
vim /app/nginx/conf/nginx.conf中全局配置中添加daemon off;
ln -sv /apps/nginx/sbin/nginx /usr/bin/ #生成软链接
5.生成镜像
本终端不退出,在另一个终端里
docker commit -a "shitouweb " -m "ubuntu.nginx.make" 5321db21c49a ubuntu.nginx:v1
6.生成容器
sudo docker run -it -p 8081:80 ubuntu.nginx:v1 nginx
如果想传递参数
sudo docker run -it -p 8081:80 ubuntu.nginx:v1 nginx “-g daemon off;”
dockerfile文件制作镜像
安装官方规则定义dockerfile文件,自动化非交互制作镜像,里面的没一个步骤都可以查询
1.变量中的指令列表支持环境变量dockerfile
ADD#添加文件,会对tar.gz的压缩包自动解压
COPY#添加文件,不能自动解压
ENV#设置容器变量,常用向容器内传递用户密码等
EXPOSE#对容器暴露端口
FROM#定义基础镜像,首先在本地找,本地没有直接下载
LABEL#维护信息LABEL maintainer="shitouweb <>"
STOPSIGNAL
USER#指定该容器运行时的用户名和UID,后续的RUN命令也会使用这面指定的用户执行
VOLUME#设置容器挂载主机目录
WORKDIR#指定工作目录
RUN#执行shell命令,整个过程非交互式的
CMD#定义启动镜像的时候默认执行的命令
2.基于dockerfile创建docker镜像
创建目录:mkdir -p /opt/dockerfile/web/nginx
创建Dcokerfile文件
vim Dockerfile #注意文件格式,第一个D必须是大写,文件名必须一模一样
#Docker image for nginx
FROM ubuntu LABEL maintainer="shitouweb <>" ENV password 123456 RUN apt-get update && apt-get install -y wget libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev iproute2 net-tools iotop gcc g++ automake build-essential unzip ADD nginx-1.16.1.tar.gz /usr/local/src RUN cd /usr/local/src/nginx-1.16.1 && ./configure --prefix=/apps/nginx && make && make install && rm -rf nginx-1.16.1 ADD static.zip /apps/nginx/html RUN cd /apps/nginx/html && unzip static.zip && rm -rf static.zip EXPOSE 80 443 CMD ["/apps/nginx/sbin/nginx" , "-g" , "daemon off;"]
创建镜像
docker build -t nginx:v2 . #注意最后的那个小点
验证容器
docker run --rm -it 80:80 nginx:v2 /bin/bash
--rm参数:退出之后自动删除。