10.4(Docker)DockerFile和推送阿里云

DockerFile

前面我们在绑定数据卷的时候,使用过dockerfile创建过镜像

是什么

DockerFile是用来构建Docker镜像的构建文件,是由一些列命令和参数构建的脚本

构建三步骤

  1. 编写DockerFile
  2. docker build
  3. docker run

既然Dockerfile可以构建成镜像,那么每个镜像就都是dockerfile构建的。

我们可以通过官网看到一些镜像的dockerfile

随着时间官网可能会发生变化

看到这里找到指定的镜像之后,可以去观看Dockerfile

在这里插入图片描述

FROM centos:7
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]

#  有的时候我们在执行镜像的时候在后面加上  /usr.sbin/init
#  如果dockerfile中有了,在我们执行镜像就默认在后面追加了
CMD ["/usr/sbin/init"]

下面会对该脚本进行描述

dockerFile的语法

  1. 每条保留字(关键字,和java中概念一致)都必须为大写

  2. 指令从上到下编写,顺序执行

  3. #表示注解

  4. 每条指令都会创建一个新的镜像层并对镜像进行提交

    这里和我们dockerfile是数据卷类似,我们编写一个dockerfile进行构建出一个新的镜像

dockerfile执行流程

  1. docker从基础镜像运行一个容器
  2. 编写一个dockerfile (对应上面每一个指令都会创建一个新的镜像)
  3. 执行docker buil 操作构建出一个新的镜像
  4. docker在通过新镜像创建出新容器。
  5. 执行dockerfile中的指令直到所有指令都结束

小结

从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段,

  • Dockerfile是软件的原材料
  • Docker镜像是软件的交付品
  • Docker容器则可以认为是软件的运行态。
    Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。

在这里插入图片描述

  1. Dockerfile,需要定义一个Dockerfile,Dockerfile定义了进程需要的一切东西。Dockerfile涉及的内容包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程(当应用进程需要和系统服务和内核进程打交道,这时需要考虑如何设计namespace的权限控制)等等;

  2. Docker镜像,在用Dockerfile定义一个文件之后,docker build时会产生一个Docker镜像,当运行 Docker镜像时,会真正开始提供服务;

  3. Docker容器,容器是直接提供服务的。

DockerFile的关键字

关键字描述
FROM基础镜像,当前镜像是基于那个镜像的
MAINTAINER镜像维护者的姓名和邮箱地址
RUN容器构建时候需要运行的命令。不如构建redis时候指定添加几个值
EXPOSE当前容器对外暴漏的端口
WORKDIR指定在创建容器后,终端默认登录的进来工作目录,一个落脚点 (centos例子)
ENV用来构建镜像过程中设置环境变量
ADD将宿主机目录下的文件拷贝进镜像并且add命令会自动处理URL和解压tar压缩包
COPY类似ADD,拷贝文件和目录到镜像中
VOLUME容器数据卷,用来数据保存和持久化工作(数据卷案例)
ONBUILD当构建一个被继承的DockerFile时候运行命令。父镜像在被子继承后父镜像的onbuild被触发

可以通过编写示例进行练习

Docker常用的安装

docker的基本步骤

  1. 搜索镜像
  2. 拉取镜像
  3. 查看镜像
  4. 启动镜像
  5. 停止容器
  6. 移除容器

Mysql测试

获取Mysql镜像

docker seaech mysql

docker pull mysql:5.6

在这里插入图片描述

docker run -id -p 3308:3306 -e MYSQL_ROOT_PASSWORD=111 dd3b2a5dcb48

docker run -id \
-p 330:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6

参数说明:

  • -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
  • -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
  • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
  • -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
  • **-e MYSQL_ROOT_PASSWORD=123456:**初始化 root 用户的密码。

在这里插入图片描述

使用window的sqlyong进行连接测试

在这里插入图片描述

在这里插入图片描述

注意可能会因为Mysql的版本问题连接不上去

但是基本操作就是这些

Redis测试

步骤基本上都是一致的。详细的是需要改变一点的

在这里插入图片描述

Docker镜像推送到阿里云仓库

首先要在阿里云上有一个镜像仓库

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

完成仓库之后就可以看到一些命令帮助文档

在这里插入图片描述

根据官网进行命令操作

在这里插入图片描述

在这里插入图片描述

发现上传成功

在这里插入图片描述

拉去我的镜像

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值