docker小白第十一天

2024-01-04 00:52
文章标签 docker 小白 第十一天

本文主要是介绍docker小白第十一天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

docker小白第十一天

dockerfile分析

Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。即构建新镜像时会用到。
构建三步骤:编写dockerfile文件-docker build命令构建镜像-docker run镜像 运行容器实例。即一层一层的包装形成新镜像。

dockerfile内容基础知识

1:每条保留字(关键字)指令都必须为大写字母且后面要跟随至少一个参数。
2:指令按照从上到下,顺序执行。
3:#表示注释。
4:每条指令都会创建一个新的镜像层并对镜像进行提交。

docker执行dockerfile的大致流程

(1) docker从基础镜像运行一个容器
(2)执行一条指令并对容器作出修改
(3)执行类似docker commit的操作提交一个新的镜像层
(4) docker再基于刚提交的镜像运行一个新容器
(5)在执行一条执行对容器做出修改
(6)执行类似docker commit的操作提交一个新的镜像层
(7) docker再基于刚提交的镜像运行一个新容器
(6)循环通过以上步骤执行dockerfile中的下一条指令直到所有指令都执行完成。

1、Dockerfile,需要定义一个Dockerfile,Dockerfile定义了进程需要的一切东西。Dockerfile涉及的内容包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程。(当应用进程需要和系统服务和内核进程打交道,这时需要考虑如何设计namespace的权限控制)等等;
2、Docker镜像,在用Dockerfile定义一个文件之后,docker buildi时会产生一个Docker镜像,当运行Docker镜像时会真正开始提供服务;
3、Docker容器,容器是直接提供服务的。

dockerfile常用保留字指令

FROM 
#基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是from
MAINTAINER 
# 镜像维护者的姓名和邮箱地址
RUN <命令行指令>
# 容器构建时需要运行的命令,命令行指令等于在终端操作的shell指令。在构建镜像docker build时运行
EXPOSE
# 当前容器对外暴露出的端口
WORKDIR
# 指定在创建容器后,终端默认登陆进容器时的工作目录
USER
# 指定该镜像以什么样的用户去执行,如果都不指定,则默认是root
ENV
# 用来在构建镜像过程中设置环境变量
ADD
# 将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
COPY
# 类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
VOLUME 
CMD
# 指定容器启动后要做的事情。Dockerfile 中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换。在运行容器docker run时运行该命令
ENTRYPOINT
# 也是用来指定一个容器启动时要运行的命令
类似于CMD指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当作参数送给ENTRYPOINT指令指定的程序

dockerfile案例实践

自定义一个镜像mycentosjava8。

docker pull centos
下载一个默认的基础版本centos镜像

在这里插入图片描述

docker images
# 查看已经下载的镜像
docker run -it 5d0da3dc9764 /bin/bash
# 镜像id替换成自己的centos镜像id
vim a.txt
# 测试目前已经运行起来的centos容器是不具备vim命令的

在这里插入图片描述
需求为,原始的centos镜像具备vim+ifconfig+jdk8。

https://www.oracle.coml/java/technologies/downloads/
# jdk8下载地址

在这里插入图片描述

准备编写dockerfile文件

mkdir myfile
# 新建个文件夹叫myfile

将下载好的java8通过xftp上传到该文件夹内
在这里插入图片描述

vim Dockerfile
同目录下,新建个Dockerfile文件,D要大写
FROM centos:7.6.1810
# 基于哪个原始镜像,为避免版本冲突这里指定版本
MAINTAINER CZ
# 作者信息ENV MYPATH /usr/local
WORKDIR $MYPATH#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD是相对路径jar,把jdk-8u391-linux-i586.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置    
ADD jdk-8u391-linux-i586.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.O_391
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HONE/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80
CMD echo $MYPATH
CMD echo "success- - - - - --- ----- - ok"
CMD /bin/bash

构建dockerfile文件

docker build -t 新镜像名字:TAG .
docker build -t centosjava8:1.5 .
#注意TAG后边有个空格,有个点
docker images

可以看到构建后的新镜像有1.2个G
在这里插入图片描述

运行新建的镜像

docker run -it centosjava8:1.5 /bin/bash

可以看到启动容器后的默认登入目录为local,是dockerfile文件中设置的。
在这里插入图片描述

测试vim命令和ifconfig命令
vim test.txt
ifconfig

在这里插入图片描述

虚悬镜像

仓库名、标签都是 <none> 的镜像,俗称虚悬镜像

vim Dockerfile
# 新建一个dockerfile文件
FROM ubuntu
CMD echo 'action is success'
# dockerfile文件中增加两个命令
docker build .
# 构建镜像

在这里插入图片描述

# 虚悬镜像删除的命令
docker image prune

docker微服务实战

通过IDEA新建微服务模块

打包代码生成jar包,然后通过xftp上传到linux虚机中,自己新建的文件夹,例如mydocker中。
在这里插入图片描述

通过dockerfile发布微服务部署

1、编写Dockerfile。springBoot编写的jar包自带tomcat,无需额外添加。
在这里插入图片描述

2、将微服务jar包和Dockerfile文件搞到同一个目录下。
在这里插入图片描述
3、构建镜像

docker build -t zzyy_docker:1.6 .

在这里插入图片描述
4、运行容器

docker run -d -p 6001:6001 15a1424eae6c
# 微服务常以后台形式运行

5、测试容器

curl 127.0.0.1:6001/order/docker
# 访问微服务测试

在这里插入图片描述

这篇关于docker小白第十一天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/567625

相关文章

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

docker-compose安装和简单使用

本文介绍docker-compose的安装和使用 新版docker已经默认安装了docker-compose 可以使用docker-compose -v 查看docker-compose版本 如果没有的话可以使用以下命令直接安装 sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-c

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4

Windows与linux中docker的安装与使用

windos中安装使用docker 下载Docker_Desktop 安装包进入docker官网下载Docker_Desktop: https://www.docker.com/ 启用wsl 我们搜索“启用或关闭Windows功能”,打开后勾选适用于Linux的Windows 子系统 Docker_Desktop设置 出现Docker Engine stopped的解决

docker学习系列(四)制作基础的base项目镜像--jdk+tomcat

前面已经完成了docker的安装以及使用,现在我们要将自己的javaweb项目与docker结合 1.1准备jdk+tomcat软件 ​​我下载了apache-tomcat-7.0.68.tar.gz和jdk-7u79-linux-x64.tar.gz,存储于Linux机器的本地目录/usr/ect/wt/下(利用xshell上传)。利用linux命令 tar -zxvf apache-tom

docker学习系列(三)docker使用

紧接着之前的博客,这一篇主要写如何使用docker 系列1:docker简介:http://blog.csdn.net/u013469562/article/details/72864323 系列2: docker安装:http://blog.csdn.net/u013469562/article/details/72865167 一、docker镜像的获取 1.1搜索可用镜像

docker学习系列(二)docker安装

接着之前的博客http://blog.csdn.net/u013469562/article/details/72864323,今天写一下docker的安装和使用 1.1docker的安装前置需求 首先docker目前的版本已经到了v17.03 本文采用centos6.6版本安装docker,其他操作系统可以参考其他博客,首先docker对于centos的需求如下 C

docker学习系列(一)初识docker

在第一版本上线之后公司,我们决定将之前使用的开源api文档项目转移到本公司的服务器之上,之前用的是showdoc,showdoc利用的是php技术,作为java程序员表示需要快速部署php环境以及apach容器都需要时间,所以采用第二种方法,即利用docker进行快速部署(虽然学习成本也不比php少)。 一、docker简介 docker的官网是https://www.docker.com,