文章目录

  • 1. Dockerfile介绍
  • 2. Dockerfile指令说明
  • 3. 制作Centos镜像
    • 3.1 编写Dockerfile的文件
    • 3.2 通过这个文件构建镜像(注意最后加个点!!!)
    • 3.3 测试运行
  • 4. RUN,CMD和ENTRYPOINT的区别
    • RUN命令与CMD命令的区别在哪里?
  • 5. 实战:制作Tomcat镜像并发布镜像
    • 5.1 制作Tomcat镜像
    • 5.2 发布镜像到DockerHub
      • 5.3 发布镜像到阿里云容器服务
  • 6.Docker全流程总结小结
  • 7.常用命令整理
  • 8.不懂就搜
    • Docker学习笔记合集(持续更新)

1. Dockerfile介绍

​ Dockerfile是用来构建Docker镜像的文本文件,也可以说是命令参数脚本。docker build命令用于从Dockerfile构建镜像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。

Docker镜像发布的步骤:

1、编写一个dockerfile文件

2、docker build 构建成为一个镜像

3、docker run 镜像

4、docker push 镜像(发布镜像到DockerHub、阿里云镜像仓库)

先从Docker官网进来CentOS里面看看:

很多官方镜像都是基础包,很多功能都没有,我们通常会主机搭建自己的镜像!

官方既然可以制作镜像,那我们也可以!

示例一个镜像的结构图:

Dockerfile 是面向开发的,以后发布项目,做镜像,就要编写dockerfile文件,这个文件非常简单!Docker镜像逐渐成为企业交付的标准,必须要掌握!

三步走:开发、部署、运维 缺一不可

DockerFile:构建文件,定义了一切的步骤,源代码

DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品

Docker容器:容器就是镜像运行起来提供服务器

2. Dockerfile指令说明

关于DockerFile文件的脚本注意点有:

1、每个保留关键字(指令)都必须是大写字母

2、文件中的指令从上到下顺序执行,第一个指令必须是FROM

3、# 号表示注释

4、每一个指令都会创建提交一个新的镜像层,并提交!

指令 说明
FROM 指定基础镜像
MAINTAINER 镜像是谁写的,姓名+邮箱
RUN 镜像构建的时候需要运行的命令
ADD 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
WORKDIR 镜像的工作目录
VOLUME 挂载的目录
EXPOSE 保留端口配置
CMD 指定这个容器启动的时候要运行的命令(只有最后一个会生效),可悲替代
EMTRYPOINT 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD 当构建一个被继承DockerFile,这个时候就会运行ONBUILD的指令,触发指令
COPY 功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
ENV 构建的时候设置环境变量

一个形象的解释各个指令作用的图:

以前的话大部分是用别人的,现在就是用自己的!

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。

关于Dockerfile指令的详细语法解释:Dockerfile文件详解

Dockerfile指令介绍的官方文档:https://docs.docker.com/engine/reference/builder/

3. 制作Centos镜像

Docker Hub中99%镜像都是从这个基础镜像过来的 FROM scratch

3.1 编写Dockerfile的文件

​ 下面通过编写Dockerfile文件来制作Centos镜像,并在官方镜像的基础上添加vim和net-tools工具。首先在/home/dockfile 目录下新建文件mydockerfile-centos。然后使用上述指令编写该文件。

[root@zecan dockerfile]# cat mydockerfile-centos
FROM centos
MAINTAINER zecan<861328011@qq.com>ENV MYPATH /user/local
WORKDIE $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash

逐行解释该Dockerfile文件的指令:

FROM centos:该image文件继承官方的centos,后面加冒号如centos:7,用于指定镜像的版本

ENV MYPATH /usr/local:设置环境变量MYPATH ,后面有用到

WORKDIR $MYPATH:直接使用上面设置的环境变量,指定/usr/local为工作目录

RUN yum -y install vim和RUN yum -y install net-tools:在/usr/local目录下,运行yum -y install vim和yum -y install net-tools命令安装工具,注意安装后的所有依赖和工具都会打包到image文件中

EXPOSE 80:将容器80端口暴露出来,允许外部连接这个端口

CMD:指定容器启动的时候运行命令

通过这个dockerfile构建镜像,构建镜像命令:docker build -f dockerfile文件路径 -t 镜像名[:版本号] .(这里有个小点.)

上面命令中,-t参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是latest。最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。

3.2 通过这个文件构建镜像(注意最后加个点!!!)

命令 dockers build -f 文件路径 -t 镜像名:[tag]

下面执行build命令生成image文件,如果执行成功,可以通过docker images来查看新生成的镜像文件。

[root@zecan dockerfile]# docker build -f mydockerfile-centos -t mycentos:0.1 .
Sending build context to Docker daemon  2.048kB
Step 1/10 : FROM centos---> 5d0da3dc9764
Step 2/10 : MAINTAINER zecan<861328011@qq.com>---> Running in 5e2618d4c008
Removing intermediate container 5e2618d4c008---> 3985b063c6a9
Step 3/10 : ENV MYPATH /user/local---> Running in 7350d83ea95d
Removing intermediate container 7350d83ea95d---> ff03b3e8018e
Step 4/10 : WORKDIR $MYPATH---> Running in a12b974d4efb
Removing intermediate container a12b974d4efb---> 700d6cec9746
Step 5/10 : RUN yum -y install vim---> Running in 75a41969f718
Step 6/10 : RUN yum -y install net-tools---> Running in ddc31e95af13
Last metadata expiration check: 0:00:14 ago on Wed Nov 17 03:33:49 2021.
Step 7/10 : EXPOSE 80---> Running in 06fe5019fcbc
Removing intermediate container 06fe5019fcbc---> 7df6436b8a38
Step 8/10 : CMD echo $MYPATH---> Running in f40d2f06684a
Removing intermediate container f40d2f06684a---> cffcdc10c516
Step 9/10 : CMD echo "----end----"---> Running in bba0960d3417
Removing intermediate container bba0960d3417---> 5f734cfc501d
Step 10/10 : CMD /bin/bash---> Running in e085899c8b6e
Removing intermediate container e085899c8b6e---> c4b84a15aefb
Successfully built c4b84a15aefb
Successfully tagged mycentos:0.1

3.3 测试运行

下面生成容器,测试相关命令,查看默认工作目录是否设置成功,vim和net-tools工具是否下载成功。

对比:原生的CentOS

我们增加之后的镜像:

另外,我们通过docker history 容器id命令来查看镜像的构建步骤。

可以列出本地镜像的变更历史 **docker history 镜像ID**,看一下mysql的

4. RUN,CMD和ENTRYPOINT的区别

RUN命令与CMD命令的区别在哪里?

​ 简单说,RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;CMD命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令。

​ 注意,指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否则它会覆盖CMD命令。

CMD和ENTRYPOINT的区别在哪里?

  • CMD :指定容器启动的时候要运行的命令,只有最后一个会生效

  • ENTRYPOINT :指定容器启动的时候要运行的命令,命令可以追加

首先是使用CMD指令

[root@zecan dockerfile]# vim dockerfile-CMD-test
[root@zecan dockerfile]# cat dockerfile-CMD-test
FROM centos
CMD ["ls","-a"]
[root@zecan dockerfile]# docker build -f dockerfile-CMD-test -t cmdtest .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM centos---> 5d0da3dc9764
Step 2/2 : CMD ["ls","-a"]---> Running in 5c297beafad3
Removing intermediate container 5c297beafad3---> ca06229997a1
Successfully built ca06229997a1
Successfully tagged cmdtest:latest
[root@zecan dockerfile]# docker run -it ca06229997a1
.   .dockerenv  dev  home  lib64       media  opt   root  sbin  sys  usr
..  bin     etc  lib   lost+found  mnt    proc  run   srv  tmp  var#由于使用的是 CMD指令,命令无追加,-l取代了原本的ls -a,而-l命令不存在所以报错。
如果需要用,只能加完整命令
[root@zecan dockerfile]# docker run -it cmdtest -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.

可以看到追加命令-l 出现了报错。

下面使用更高级的命令:ENTRYPOINT来构建一个镜像

[root@zecan dockerfile]# vim dorkerfile-cmd-entrypoint
[root@zecan dockerfile]# cat dorkerfile-cmd-entrypoint
FROM centos
ENTRYPOINT ["ls","-a"][root@zecan dockerfile]# docker build -f dorkerfile-cmd-entrypoint -t entrypoint-test .
Sending build context to Docker daemon  4.096kB
Step 1/2 : FROM centos---> 5d0da3dc9764
Step 2/2 : ENTRYPOINT ["ls","-a"]---> Running in 2cad1d3c0bfa
Removing intermediate container 2cad1d3c0bfa---> 5ef9eae1f783
Successfully built 5ef9eae1f783
Successfully tagged entrypoint-test:latest
[root@zecan dockerfile]# docker run 5ef9eae1f783.dockerenv
bin
dev# 可以追加命令
[root@zecan dockerfile]# docker run 5ef9eae1f783 -l
total 56
drwxr-xr-x   1 root root 4096 Nov 17 04:50 .
drwxr-xr-x   1 root root 4096 Nov 17 04:50 ..
-rwxr-xr-x   1 root root    0 Nov 17 04:50 .dockerenv
lrwxrwxrwx   1 root root    7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x   5 root root  340 Nov 17 04:50 dev[root@zecan dockerfile]#

Dockerfile的很多命令都很相似,最高效的学习方式就是对比测试。

5. 实战:制作Tomcat镜像并发布镜像

5.1 制作Tomcat镜像

1.准备镜像文件tomcat、jdk压缩包

(到官网下载,然后通过Xftp上传即可)

2.编写dockerfile文件,文件名使用官方命名:Dockerfile ,build的时候会默认寻找当前目录下的文件,不需要使用-f参数指定

[root@zecan tomcat]# vim Dockerfile
[root@zecan tomcat]# cat Dockerfile
FROM centos
MAINTAINER zecan<861328011@qq.com>COPY readme.txt /usr/local/readme.txtADD jdk-8u211-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.55.tar.gz /usr/local/RUN yum -y install vimENV MYPATH /usr/local
WORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_211
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.55
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.55
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_BASH/binEXPOSE 8080CMD /usr/local/apache-tomcat-9.0.55/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.55/bin/logs/catalina.out

3.使用该Dockerfile构建镜像

[root@zecan tomcat]# docker build -t diytomat .
Sending build context to Docker daemon  206.6MB
Step 1/15 : FROM centos---> 5d0da3dc9764
Step 2/15 : MAINTAINER zecan<861328011@qq.com>---> Using cache---> 3985b063c6a9
Step 3/15 : COPY readme.txt /usr/local/readme.txt---> 2155cd044ee3
Step 4/15 : ADD jdk-8u211-linux-x64.tar.gz /usr/local/---> 6f01d4822e24
Step 5/15 : ADD apache-tomcat-9.0.55.tar.gz /usr/local/---> 11851969fa84
Step 6/15 : RUN yum -y install vim---> Running in 839a4868c4f1
(这里会卡比较久)
Complete!
Removing intermediate container 839a4868c4f1---> 2f536132ffa0
Step 7/15 : ENV MYPATH /usr/local---> Running in b255d9684079
Removing intermediate container b255d9684079---> 8041894b3554
Step 8/15 : WORKDIR $MYPATH---> Running in ef30711e32c4
Removing intermediate container ef30711e32c4---> 8d81646632b1
Step 9/15 : ENV JAVA_HOME /usr/local/jdk1.8.0_251---> Running in db9ba64f3d66
Removing intermediate container db9ba64f3d66---> 645c12997ae2
Step 10/15 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar---> Running in 772fbf67d0c8
Removing intermediate container 772fbf67d0c8---> cf882ea0ecce
Step 11/15 : ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.55---> Running in 8f4be02d8973
Removing intermediate container 8f4be02d8973---> ddab1e64171a
Step 12/15 : ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.55---> Running in 451db0a33dcb
Removing intermediate container 451db0a33dcb---> 86071d4b4b43
Step 13/15 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_BASH/bin---> Running in 43d24ca9dfbf
Removing intermediate container 43d24ca9dfbf---> 09b3687a9254
Step 14/15 : EXPOSE 8080---> Running in 154d2460fa53
Removing intermediate container 154d2460fa53---> 101adc79334d
Step 15/15 : CMD /usr/local/apache-tomcat-9.0.55/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.55/bin/logs/catalina.out---> Running in c449e423132c
Removing intermediate container c449e423132c---> bb6e73fa1192
Successfully built bb6e73fa1192
Successfully tagged diytomat:latest

4.启动生成的镜像,构建Tomcat容器.

这里设置了数据卷,宿主机的/home/dockerfile/tomcat/test对应该容器的/usr/local/apache-tomcat-8.5.55/webapps/test。这样关于test项目的修复只需要在宿主机上修改就可以了,不需要进入到容器中修改。

[root@zecan tomcat]# docker run -d -p 8088:8080 --name zecantomcat
-v /home/zecan/build/tomcat/test:/usr/local/apache-tomcat-9.0.55/webapps/test
-v /home/zecan/build/tomcat/tomcatlogs/:/url/local/apache-tomcat-9.0.55/logs diytomcat
a9411141240a39bbee678e4ab81f80446be6ee3f7aca8c27b8104382b0fca255# 可测试
[root@zecan tomcat]# curl localhost:8088

5.在/home/dockerfile/tomcat/test的目录下,新建web.xml和index.jsp 测试Tomcat是否能正常使用。

因为设置了卷挂载所以可以直接在宿主机中进行操作。

[root@zecan WEB-INF]# vim web.xml
[root@zecan WEB-INF]# cat web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0"></web-app>
[root@zecan WEB-INF]# vim index.jsp
[root@zecan WEB-INF]# cat index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello,Zack!</title>
</head>
<body>
Hello World!<br/>
<%
System.out.println("-----my text web logs----");
%>
</body>
</html>

方法二是在test文件后面新建一个index.html

<!DOCTYPE html>
<html><head><meta charset="UTF-8"/><title>这是个标题</title></head><body><h1>这是一个一个简单的HTML</h1><p>Hello World!</p></body>
</html>

6.访问测试,浏览器访问查看是否能正常访问

之前出现过下面这个问题,主要是路径错误,找不到该文件!

如果页面显示乱码,就需要修改tomcat的server.xml文件

  <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />

这里是添加了一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat(默认ISO-8859-1编码)以UTF-8的编码处理get请求。

5.2 发布镜像到DockerHub

1.登录https://hub.docker.com/ DockerHub官网进行注册

2.进行登录,docker login -u 用户名

登录命令

[root@zecan tomcat]# docker login --helpUsage:  docker login [OPTIONS] [SERVER]Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.Options:-p, --password string   Password--password-stdin    Take the password from stdin-u, --username string   Username[root@zecan tomcat]# docker login -u zackliu123
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

3.使用docker push命令推送镜像到DockerHub上的仓库

[root@zecan tomcat]# docker push diytomcat
Using default tag: latest
The push refers to repository [docker.io/library/diytomcat]
067e3a36b33e: Preparing
a156f0e946d1: Preparing
cfbcf4623ab9: Preparing
6ab15adb2ef5: Preparing
74ddd0ec08fa: Preparing
denied: requested access to the resource is denied  #拒绝# 解决:增加tag
[root@zecan tomcat]# docker tag e323f58e6fba zecan/tomcat:1.0
[root@zecan tomcat]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED             SIZE
diytomcat             latest    e323f58e6fba   About an hour ago   716MB
zecan/tomcat          1.0       e323f58e6fba   About an hour ago   716MB# 尽量带上版本号
[root@zecan tomcat]# docker push zecan/tomcat:1.0
The push refers to repository [docker.io/zecan/tomcat]
067e3a36b33e: Preparing
a156f0e946d1: Preparing
cfbcf4623ab9: Preparing
6ab15adb2ef5: Preparing
74ddd0ec08fa: Preparing
denied: requested access to the resource is denied
# 也是按镜像的层级来上传的,虚拟机网络限制是基本无法push成功的

因为push的时候,镜像名前面需要加上用户名(zackliu123是我的用户名。如果用户名不是当前登录用户则会拒绝push请求),所以需要使用命令docker tag 镜像名 新的镜像名复制出一份镜像重新打个Tag。

5.3 发布镜像到阿里云容器服务

1.登录阿里云,找到容器镜像服务

2.创建命名空间

  • 登录容器镜像服务控制台,在左侧导航栏选择实例列表,在实例列表页面单击个人版,在个人版管理页面左侧导航栏中选择仓库管理 > 命名空间。在命名空间页面左上角单击创建命名空间,输入命名空间名称,然后单击确定说明
  • 目前一个账号可以创建3个命名空间。

3.与上面DockerHub的操作类似,按官方提供的操作指南操作即可。

[root@zecan tomcat]# docker login --username=小灿zack registry.cn-shenzhen.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
[root@zecan tomcat]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
diytomcat             latest    e323f58e6fba   2 hours ago     716MB
zecan/tomcat          1.0       e323f58e6fba   2 hours ago     716MB
[root@zecan tomcat]# docker push zecan/tomcat:1.0
The push refers to repository [docker.io/zecan/tomcat]
067e3a36b33e: Preparing
a156f0e946d1: Preparing
cfbcf4623ab9: Preparing
6ab15adb2ef5: Preparing
74ddd0ec08fa: Preparing
denied: requested access to the resource is denied

遇到过问题:上传自己的镜像被拒绝denied: requested access to the resource is denied

解决:根本就是tag重命名的镜像你要结合阿里云的路径,总之按指引说的三条命令严格执行即可!

最后可以在这里看到自己的镜像以及层信息等等。

6.Docker全流程总结小结

7.常用命令整理

8.不懂就搜

Docker删除容器与镜像

要删除全部image(镜像)的话

docker rmi $(docker images -q) 1

强制删除全部image的话

docker rmi -f $(docker images -q)

问题:curl(56) Recv failure: Connection reset by peer以及解决方案

  • linux下ps ef命令详解,linux命令中ps -ef详解

实测确实是路径问题

[

](https://blog.csdn.net/weixin_39621488/article/details/116554036)

Linux删除文件命令

  • 单个删除:rm -f + 文件名

    • eg:rm -f 2018_12_26.stderrout.log.060121612 --执行完成即将这个文件删除
  • 批量删除:rm -f + *文件关键字*

Docker学习笔记合集(持续更新)

linux入门–服务器购买—宝塔部署环境说明
Nginx简单入门–学习笔记狂神说
Docker基础01–入门总结–(狂神说docker学习笔记)
Docker基础02–Docker容器数据卷详解–(狂神说docker学习笔记)
Docker基础03–Dockerfile详解与镜像发布–(狂神说docker学习笔记)
Docker基础04–Docker网络–(狂神说docker学习笔记)
Docker进阶01–Docker Compose–(狂神说docker学习笔记)

Docker知识点翻阅手册–Docker常用命令、Dockererfile、Compose、网络等整理合集
Docker实战:Mysql、Nginx、web的Docker化部署(安装、自定义镜像、compose管理容器、自定义网络、部署问题及解决)

Docker基础03--Dockerfile详解与镜像发布--(狂神说docker学习笔记)相关推荐

  1. Dockerfile详解、镜像发布、网络详解学习

    一.DockerFile 1.Docker介绍 Dockerfile是用来构建Docker镜像的文件是命令参数脚本.docker build命令用于从Dockerfile构建镜像.可以在docker ...

  2. Docker系列07—Dockerfile 详解

    Docker系列07-Dockerfile 详解 1.认识Dockerfile 1.1 镜像的生成途径 基于容器制作  dockerfile,docker build 基于容器制作镜像,已经在上篇Do ...

  3. CNN入门详解及TensorFlow源码实现--深度学习笔记

    CNN入门详解及TensorFlow源码实现–深度学习笔记 ##一.卷积神经网络 ###1.简介 卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出 ...

  4. 生成对抗网络入门详解及TensorFlow源码实现--深度学习笔记

    生成对抗网络入门详解及TensorFlow源码实现–深度学习笔记 一.生成对抗网络(GANs) 生成对抗网络是一种生成模型(Generative Model),其背后最基本的思想就是从训练库里获取很多 ...

  5. 《极客学院 --NSAttributedString 使用详解-4-UITextKit 简介》学习笔记(待处理)...

    2019独角兽企业重金招聘Python工程师标准>>> 如果要在富文本中添加图片的话,用UITextKit才能实现. 什么是UITextKit:它就是处理富文本的框架. 什么时候使用 ...

  6. linux下串口通信详解,Linux操作系统下的串口通信学习笔记

    http://www.diybl.com/ 2008-7-5 网络 点击: [ 评论 ] - - 文章搜索:     [点击打包该文章] [本站开通在线QQ讨论群] CBAUDEX (不属于POSIX ...

  7. docker实践(2)常用命令和DockerFile详解

    <docker实践(1) 入门和springBoot实践部署> <docker实践(2)常用命令和DockerFile详解> <docker实践(3) 仓库registr ...

  8. docker build命令详解_Docker镜像与容器常用命令图文详解

    一.系统命令 #查看docker版本 docker version #查看docker的系统信息,包含镜像容器的数量 docker info #查看docker的所有命令 docker --help ...

  9. 『中级篇』Dockerfile详解(17)

    一般的,Dockerfile 分为四部分:基础镜像信息.维护者信息.镜像操作指令和容器启动时执行指令. ####官网学习 https://docs.docker.com/engine/referenc ...

最新文章

  1. jenkins-svn配置
  2. 使用spark计算文档相似度
  3. 第八篇、盒子模型和距中的设置方法
  4. 页面布局_word页面布局
  5. 牛客挑战赛47 D Lots of Edges(最短路+递归枚举子集)
  6. OpenCV测试程序
  7. matlab conv2
  8. 【数值分析】基础理论归纳
  9. addeventlistener监听ajax请求_基于h5的history改善ajax列表请求体验
  10. 超详细!使用 LVS 实现负载均衡原理及安装配置详解
  11. TinyGAN: Distilling BigGAN for Conditional Image Generation
  12. 中央气象台气象监测数据爬取Python实战分析
  13. phP imageMagic抠图,使用 Lua + ImageMagick 轻松批量抠图
  14. html作业介绍家乡,dreamweaver网页大作业 我的家乡
  15. linux取得redis数据库中hash类型的所有feild或者所有value
  16. 安装linux之后没有网
  17. 前端开发——Ionic 3.0【爱创课堂专业前端培训】
  18. 进击的巨人 《兵王》6月28日启动新服【游戏资讯】
  19. 实时监控linux的日志命令
  20. 不同装修风格如何选择地板?极家精装好吗?

热门文章

  1. 平板触控笔哪种好?主动式电容笔推荐
  2. 电子科技大学计算机专业分班,2020成都电子科技大学实验中学小升初入学方式+分班情况+住宿情况+作息时间...
  3. 命令行下通过jlink烧录Navota小记
  4. 【CSS 选择器】鱼骨图记忆
  5. 火车票提前11天电话95105105订票流程~预知步骤节省时间
  6. FreeImage的图像处理软件
  7. 我在工地晒的阙黑一月八千,他在家吹空调做招商团长一月两万多。
  8. 数学女博士奥运会摘金!没有教练,用数学知识和计算机软件自己训练,网友:真·学好数理化,走遍天下都不怕...
  9. python爬取cctalk视频_python爬虫urllib使用和进阶 | Python爬虫实战二
  10. USACO 1.5.3 SuperPrime Rib 特殊的质数肋骨