谷粒商城 集群篇 (十) ——— Docker 深入

  • Post author:
  • Post category:其他





一、Dockerfile

在这里插入图片描述

在 Docker 中创建镜像最常用的方式,就是使用 Dockerfile。Dockerfile 是一个Docker 镜像的描述文件,我们可以理解成火箭发射的 A、B、C、D…的步骤。Dockerfile 其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。



1. 示例

#基于 centos 镜像
FROM centos
#维护人的信息
MAINTAINER My CentOS <534096094@qq.com>
#安装 httpd 软件包
RUN yum -y update
RUN yum -y install httpd
#开启 80 端口
EXPOSE 80
#复制网站首页文件至镜像中 web 站点下
ADD index.html /var/www/html/index.html
#复制该脚本至镜像中,并修改其权限
ADD run.sh /run.sh
RUN chmod 775 /run.sh
#当启动容器时执行的脚本文件
CMD ["/run.sh"]

在这里插入图片描述

官方文档:

https://docs.docker.com/engine/reference/builder/#from


B、复杂一点的示例

#在 centos 上安装 nginx
FROM centos
#标明著作人的名称和邮箱
MAINTAINER xxx xxx@qq.com
#测试一下网络环境
RUN ping -c 1 www.baidu.com
#安装 nginx 必要的一些软件
RUN yum -y install gcc make pcre-devel zlib-devel tar zlib
#把 nginx 安装包复制到/usr/src/目录下,如果是压缩包还会自动解压,是网络路径会自动下载
ADD nginx-1.15.8.tar.gz /usr/src/
#切换到/usr/src/nginx-1.15.8 编译并且安装 nginx
RUN cd /usr/src/nginx-1.15.8 \
&& mkdir /usr/local/nginx \
&& ./configure --prefix=/usr/local/nginx && make && make install \
&& ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ \
&& nginx
#删除安装 nginx 安装目录
RUN rm -rf /usr/src/nginx-nginx-1.15.8
#对外暴露 80 端口
EXPOSE 80
#启动 nginx
CMD ["nginx", "-g", "daemon off;"]



2. 常用指令

类型 命令
基础镜像信息 FROM
维护者信息 MAINTAINER
镜像操作指令 RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME 等
容器启动时执行指令 CMD、ENTRYPOINT



二、镜像操作


A、创建项目 dockerfile

FROM java:8
EXPOSE 8080

VOLUME /tmp
ADD target/*.jar  /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","-Xms128m","-Xmx300m","/app.jar","--spring.profiles.active=prod"]


B、上传项目到服务器


C、进入项目,构建镜像到本地仓库

(1)

docker build -t nginx:GA-1.0 -f ./Dockerfile .

别忘了最后的小数点。

(2)

docker images

查看镜像

(3)

docker exec -it 容器 id /bin/bash;

进入容器,修改容器

(4)

docker commit -a “leifengyang” -m “nginxxx” 容器 id mynginx:GA-2.0



docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]


② OPTIONS 说明:

1)

-a

:提交的镜像作者;

2)

-c

:使用 Dockerfile 指令来创建镜像;

3)

-m

:提交时的说明文字;

4)

-p

:在 commit 时,将容器暂停。

(5)

docker login

:登陆到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub



docker login -u 用户名 -p 密码

(6)

docker logout

: 登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub


D、推送镜像到 docker hub

(1) 标记镜像,

docker tag local-image:tagname username/new-repo:tagname


(2) 上传镜像,

docker push username/new-repo:tagname


E、保存镜像,加载镜像

(1) 可以保存镜像为 tar,使用 u 盘等设备复制到任意 docker 主机,再次加载镜像

(2) 保存:

docker save spring-boot-docker -o /home/spring-boot-docker.tar

(3) 加载:

docker load -i spring-boot-docker.tar


F、阿里云操作

(1) 登录阿里云,密码就是开通镜像仓库时 的密码

docker login --username=qwertyuiopasdf_aa registry.cn-hangzhou.aliyuncs.com

(2) 拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/atguigumall/gulimall-nginx:v1.0

(3)推送镜像

docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/atguigumall/gulimall-nginx:v1docker push registry.cn-hangzhou.aliyuncs.com/atguigumall/gulimall-nginx:v1



版权声明:本文为m0_51111980原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。