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镜像推送到阿里云仓库

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

根据官网进行命令操作

在这里插入图片描述

在这里插入图片描述

发现上传成功

在这里插入图片描述

拉去我的镜像

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值