文章目录

  • 一. Docker 镜像与制作
    • 手动制作nginx 镜像(不建议)
    • DockerFile 制作nginx 镜像(建议)
    • 手动制作编译版本 nginx 镜像(不建议)
      • 提交为镜像:
    • 装数据库
  • 二. 构建基础镜像:基础的命令等
    • 1. 基础镜像
    • 2. 构建jdk镜像
    • 3. 构建 tomcat Base 镜像
      • tomcat构建业务镜像 1
      • tomcat 构建业务镜像 2
    • 简单方法直接复制
  • 三. haproxy 镜像
    • 基于官方apline基础镜像制作
    • 基于官方Ubuntu基础镜像制作
  • 四. 实现动静分离
    • 切记里面的iptables规则
  • 五. 本地镜像上传至官方 docker 仓库
    • 1. 阿里云
    • 2.docker hub

一. Docker 镜像与制作

从镜像大小上面来说,一个比较小的镜像只有十几 MB,而内核文件需要一百多兆, 因此镜像里面是没有内核的,镜像在被启动为容器后将直接使用宿主机的内核,而镜像本身则只提供相应的 rootfs,即系统正常运行所必须的用户空间的文件系统,比如/dev/,/proc,/bin,/etc 等目录,所以容器当中基本是没有/boot目录的,而/boot 当中保存的就是与内核相关的文件和目录。

为什么没有内核
由于容器启动和运行过程中是直接使用了宿主机的内核,所以没有直接调用过物理硬件,所以也不会涉及到硬件驱动,因此也用不上内核和驱动,另外有内核的那是虚拟机

Docker 制作类似于虚拟机的镜像制作,即按照公司的实际业务务求将需要安装的软件、相关配置等基础环境配置完成,然后将其做成镜像,最后再批量从镜像批量生产实例,这样可以极大的简化相同环境的部署工作
Docker 的镜像制作分为手动制作和自动制作(基于 DockerFile)

手动制作nginx 镜像(不建议)

下载镜像并初始化系统
基于某个基础镜像之上重新制作,因此需要先有一个基础镜像,本次使用官方提供的 centos 镜像为基础:

[root@docker-server1 ~]# docker pull centos
[root@docker-server1 ~]# docker run -it docker.io/centos /bin/bash
[root@37220e5c8410 /]# yum install wget -y
[root@37220e5c8410 /]# cd /etc/yum.repos.d/#更改 yum 源
[root@37220e5c8410 yum.repos.d]# rm -rf ./*
[root@37220e5c8410 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo[root@37220e5c8410 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-7.repo

yum 安装并配置 nginx

 #yum 安装 nginx
[root@37220e5c8410 yum.repos.d]# yum install nginx –y #安装常用命令
[root@37220e5c8410 yum.repos.d]# yum install -y vim wget pcre pcre-devel zlib \
zlib-devel openssl openssl-devel iproute net-tools iotop

关闭 nginx 后台运行

 #关闭 nginx 后台运行
[root@37220e5c8410 yum.repos.d]# vim /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
daemon off; #关闭后台运行

自定义 web 页面

[root@37220e5c8410 yum.repos.d]# vim /usr/share/nginx/html/index.html
[root@37220e5c8410 yum.repos.d]# cat /usr/share/nginx/html/index.html
Docker Yum Nginx #自定义 web 界面

提交为镜像
在宿主机基于容器 ID 提交为镜像
另一个窗口,不能关闭上一个窗口

     -a指定邮箱-m 备注-c 指定原生的docker指令
[root@docker-server1 ~]# docker commit -m "nginx image" f5f8c13d0f9f entos-nginx:v1

带 tag 的镜像提交
提交的时候标记 tag 号: #标记 tag 号,生产当中比较长用,后期可以根据 tag 标记启动不同版本启动 image启动

[root@docker-server1 ~]# docker commit -m "nginx image" f5f8c13d0f9f centos-nginx:v1

从自己镜像启动容器

[root@docker-server1 ~]# docker run -d -p 80:80 --name my-centos-nginx jack/centos-nginx /usr/sbin/nginx
ce4ee8732a0c4c6a10b85f5463396b27ba3ed120b27f2f19670fdff3bf5cdb62

访问测试

DockerFile 制作nginx 镜像(建议)

DockerFile 可以说是一种可以被 Docker 程序解释的脚本,DockerFile 是由一条条的命令组成的,每条命令对应 linux 下面的一条命令,Docker 程序将这些DockerFile 指令再翻译成真正的 linux 命令,其有自己的书写方式和支持的命令,Docker 程序读取 DockerFile 并根据指令生成 Docker 镜像,相比手动制作镜像的方式,DockerFile 更能直观的展示镜像是怎么产生的,有了 DockerFile,当后期有额外的需求时,只要在之前的 DockerFile 添加或者修改响应的命令即可重新生成新的 Docke 镜像,避免了重复手动制作镜像的麻烦


下载镜像并初始化系统

docker pull centosdocker run -it docker.io/centos /bin/bash cd /opt/ #创建目录环境mkdir dockerfile/{web/{nginx,tomcat,jdk,apache},system/{centos,ubuntu,redhat}} -pv

目录结构按照业务类型或系统类型等方式划分,方便后期镜像比较多的时候进行分类

cd dockerfile/web/nginx/pwd
/opt/dockerfile/web/nginx

编写 Dockerfile
vim ./Dockerfile #生成的镜像的时候会在执行命
令的当前目录查找 Dockerfile 文件,所以名称不可写错,而且 D 必须大写

vim  Dockerfile
#My Dockerfile"#"为注释#第一行先定义基础镜像,后面的本地有效的镜像名,如果本地没有会从远程仓库下载,第一行很重要#FROM 是父镜像
FROM centos #镜像维护者的信息
MAINTAINER qcq 123456@qq.com#USER #容器运行时的用户名和 UID#WORKDIR /a #当前工作目录
#WORKDIR b #指定工作目录,最终为/a/b#VOLUME ["/dir_1", "/dir_2" ..] 设置容器挂载主机目录#容器环境变量
ENV HOST 192.168.1.120# RUN 命令也会使用这面指定的用户执行
RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUN yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop#自动解压压缩包#包文件导入ADD nginx-1.10.3.tar.gz /usr/local/src/ RUN cd /usr/local/src/nginx-1.10.3 && ./configure --prefix=/usr/local/nginx --with-http_sub_module && make && make installRUN cd /usr/local/nginx/#将配置好的文件导入ADD nginx.conf /usr/local/nginx/conf/nginx.confRUN useradd nginx -s /sbin/nologinRUN ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx
RUN echo "test nginx page" > /usr/local/nginx/html/index.htmlEXPOSE 80 443 #向外开放的端口#运行的命令,每个 Dockerfile 只能有一条,如果有多条则只有最后一条被执行
CMD ["nginx"]

Dockerfile 构建的镜像里面的 CMD 命令,即指定的命令优先级更高,Dockerfile 的优先级较低一些

准备源码包与配置文件

  #配置文件关闭后台运行
cp /usr/local/nginx/conf/nginx.conf .#nginx 源码包
cp /usr/local/src/nginx-1.10.3.tar.gz .

执行镜像构建

如果Dockerfile有改变重新构建就可以

 # 最后面是在那个目录下
docker build -it jack/nginx-1.10.3:v1 /opt/dockerfile/web/nginx/


开始构建

查看是否生成本地镜像
docker images

从镜像启动容器

docker run -d -p 80:80 --name yum-nginx nginx:v2 /usr/sbin/nginx#只是测试一下
docker run -it --rm -p 80:80 --name yum-nginx nginx:v2 bash

手动制作编译版本 nginx 镜像(不建议)

过程为在 centos 基础镜像之上手动编译安装 nginx,然后再提交为镜像。

下载镜像并初始化系统

docker pull centos
docker run -it docker.io/centos /bin/bash 、[root@86a48908bb97 /]# yum install wget -y
[root@86a48908bb97 /]# cd /etc/yum.repos.d/#更改 yum 源
[root@86a48908bb97 yum.repos.d]# rm -rf ./*
[root@86a48908bb97 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo[root@86a48908bb97 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo  http://mirrors.aliyun.com/repo/epel-7.repo

编译安装 nginx

 #安装基础包
[root@86a48908bb97 yum.repos.d]# yum install -y vim wget tree lrzsz gcc gcc-c++ \
automake pcre pcre-devel zlib zlib-devel openssl \
openssl-devel iproute net-tools iotop [root@86a48908bb97 yum.repos.d]# cd /usr/local/src/
[root@86a48908bb97 src]# wget http://nginx.org/download/nginx-1.10.3.tar.gz
[root@86a48908bb97 src]# tar xvf nginx-1.10.3.tar.gz
[root@86a48908bb97 src]# cd nginx-1.10.3
[root@86a48908bb97 nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --withhttp_sub_module
[root@86a48908bb97 nginx-1.10.3]# make && make install
[root@86a48908bb97 nginx-1.10.3]# cd /usr/local/nginx/

关闭 nginx 后台运行

[root@86a48908bb97 nginx]# vim conf/nginx.conf
user nginx;
worker_processes auto;
daemon off;#创建软连
[root@86a48908bb97 nginx]# ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx

创建用户及授权

[root@86a48908bb97 nginx]# useradd nginx -s /sbin/nologin
[root@86a48908bb97 nginx]# chown nginx.nginx /usr/local/nginx/ -R

自定义 web 界面

[root@86a48908bb97 nginx]# echo "My Nginx Test Page" >
/usr/local/nginx/html/index.html

提交为镜像:

[root@docker-server1 ~]# docker commit -m "test nginx" 86a48908bb97 jack/nginxtest-image
sha256:fce6e69410e58b8e508c7ffd2c5ff91e59a1144847613f691fa5e80bb68efbfa[root@docker-server1 ~]# docker commit -m "test nginx" 86a48908bb97 jack/nginx-test-image:v1
sha256:474cad22f28b1e6b17898d87f040dc8d1f3882e2f4425c5f21599849a3d3c6a2

从自己的镜像启动容器

[root@docker-server1 ~]# docker run -d -p 80:80 --name my-centos-nginx
jack/nginx-test-image:v1 /usr/sbin/nginx
8042aedec1d6412a79ac226c9289305087fc062b0087955a3a0a609c891e1122

访问测试
查看 Nginx 访问日志:在容器当中

装数据库

docker run -it -p 3306:3306 -d  -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.34


在另一个窗口打开

在另一个机器上安装客户端

二. 构建基础镜像:基础的命令等

作用:用于制作指定镜像前的操作
也就是会将这个镜像提交为一个base基础镜像
制作其他镜像以这个镜像为基础

缺点:如果给最上面的镜像加东西
就得把下面所有的镜像重新构建build

1. 基础镜像

vim /opt/centos/Dockerfile
FROM centosRUN yum install  vim iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl  openssl-devel zip unzip zlib-devel  net-tools lrzsz tree  telnet lsof tcpdump wget libevent libevent-devel bc  systemd-devel bash-completion traceroute  -yRUN useradd nginx -u 1101 && useradd tomcat -u 1102#修改 时区
RUN rm -rf /etc/localtime &&  ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

构建镜像

     在本地
docker build -t centos-base:v1 .

构建镜像---->脚本

执行bash build-command.sh

最后测试:主要是命令—时区

docker  run -it --rm centos-base:v1 bash

2. 构建jdk镜像

cd /opt/web/jdk上传 jdk 二进制包
rz[root@ jdk]#vim Dockerfile #父镜像为centos-base:v1
FROM centos-base:v1该文件必须在本目录下
ADD jdk-8u211-linux-x64.tar.gz /usr/local/src
RUN ln -sv /usr/local/src/jdk1.8.0_211 /usr/local/jdk该文件必须在本目录下
ADD profile /etc/profile
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib/
ENV PATH $PATH:$JAVA_HOME/bin

通过脚本构建

[root@docker-server1 jdk]# cat build-command.sh
#!/bin/bash
docker build -t jdk-base:v1 .

最后测试

docker  run -it --rm jdk-base:v1 bash

将镜像上传到 harbor

[root@docker-server1 jdk]# docker push 192.168.10.205/centos/centos-7.2.1511-
jdk1.7.0.79

镜像仓库验证

从其他 docker 客户端下载镜像并启动 JDK 容器: #启动的时候本地没有镜像,会从仓库下载,然后从镜像启动容器

3. 构建 tomcat Base 镜像

编辑 Dockerfile

[root@docker-server1 tomcat8-base]# pwd
/opt/dockerfile/system/centos/tomcat8-base
[root@docker-server1 tomcat8-base]# cat Dockerfile
#Tomcat Base Image
FROM centos-7.5-jdk:v1ADD apache-tomcat-8.0.49.tar.gz /apps
RUN ln -sv /apps/apache-tomcat-8.0.49 /apps/tomcat && mkdir -p /data/tomcat/webapps

上传 tomcat 压缩包

[root@docker-server1 tomcat8-base]# ll apache-tomcat-8.0.49.tar.gz
-rw-r--r-- 1 root root 9413703 Jul 2 10:06 apache-tomcat-8.0.49.tar.gz

通过脚本构建 tomcat 基础镜像

[root@docker-server1 tomcat8-base]# cat build-command.sh
#!/bin/bash
docker build -t tomcat-base:v1 .

执行构建


测试:端口映射

docker  run -it --rm -p 8080:8080 tomcat-base:v1 bash


tomcat构建业务镜像 1

创建 tomcat-app1 和 tomcat-app2 两个目录,代表不同的两个基于 tomcat 的业务

准备 Dockerfile

[root@docker-server1 tomcat-app1]# pwd
/opt/dockerfile/system/centos/tomcat-app1[root@docker-server1 tomcat-app1]# cat Dockerfile
#Tomcat Web Image
FROM tomcat-base:v1 ADD run_tomcat.sh /apps/tomcat/bin/run_tomcat.sh#将数据与配置分开写
RUN mkdir /data/tomcat/webapps/myapp/ADD myapp/* /data/tomcat/webapps/myapp/ADD server.xml  /apps/tomcat/conf#增加权限
RUN chown -R tomcat.tomcat /apps/tomcat/ /apps/apache-tomcat-8.5.42/  /data/tomcat/CMD ["/apps/tomcat/bin/run_tomcat.sh"]EXPOSE 8080 8009

需要修改server.xml文件

也就是修改<Host目录# 前提是自己配置好s
ADD server.xml /apps/tomcat/conf

准备自定义 myapp 页面

mkdir myapp
echo "Tomcat Web Page1" > myapp/index.htmlcat myapp/index.html
Tomcat Web Page1

准备容器启动执行脚本

[root@docker-server1 tomcat-app1]# cat run_tomcat.sh
#!/bin/bash
echo "1.1.1.1 abc.test.com" >> /etc/hosts
echo "nameserver 223.5.5.5" > /etc/resolv.conf
/apps/tomcat/bin/catalina.sh start
su - tomcat -c "tail -f /etc/hosts"chmod +x run_tomcat.sh

准备构建脚本:

[root@docker-server1 tomcat-app1]# cat build-command.sh
#!/bin/bash
docker build -t tomcat-web:app1 .

执行构建

从镜像启动容器测试: 不需要加bash

[root@docker-server1 tomcat-app1]# docker run -it -d -p 8888:8080 tomcat-web:app1

访问测试

tomcat 构建业务镜像 2

准备 Dockerfile

[root@docker-server1 tomcat-app2]# pwd
/opt/dockerfile/system/centos/tomcat-app2
[root@docker-server1 tomcat-app2]# cat Dockerfile
#Tomcat Web2 Image
FROM tomcat-base:v1
ADD run_tomcat.sh /apps/tomcat/bin/run_tomcat.sh
ADD myapp/* /apps/tomcat/webapps/myapp/
RUN chown www.www /apps/ -R
CMD ["/apps/tomcat/bin/run_tomcat.sh"]
EXPOSE 8080 8009

准备自定义页面

[root@docker-server1 tomcat-app2]# mkdir myapp
[root@docker-server1 tomcat-app2]# echo "Tomcat Web Page2" > myapp/index.html
[root@docker-server1 tomcat-app2]# cat myapp/index.html
Tomcat Web Page2

准备容器启动脚本

[root@docker-server1 tomcat-app2]# cat run_tomcat.sh
#!/bin/bash
echo "1.1.1.1 abc.test.com" >> /etc/hosts
echo "nameserver 223.5.5.5" > /etc/resolv.conf
su - www -c "/apps/tomcat/bin/catalina.sh start"
su - www -c "tail -f /etc/hosts"

准备构建脚本

[root@docker-server1 tomcat-app2]# cat build-command.sh
#!/bin/bash
docker build -t tomcat-web:app2 .

执行构建:


从镜像启动容器

[root@docker-server1 tomcat-app2]# docker run -it -d -p 8889:8080 tomcat-web:app2

访问测试

简单方法直接复制

cd /opt/dockerfile/web/tomcat/
mkdir tomcat-app2/
cp tomcat-app1/* tomcat-app2/ -pv
cd tomcat-app2/
vim myapp/index.html
Tomcat Web Page2
cat tomcat-app2/build-command.sh
#!/bin/bash
docker build -t tomcat-app2-base:v1 .
docker run -it -d -p 8889:8080 tomcat-app2-base:v1
如果失败 给后面加一个 bash

三. haproxy 镜像

前提准备两个页面

准备 Dockerfile

[root@docker-server1 haproxy]# pwd
/opt/dockerfile/system/centos/haproxy
[root@docker-server1 haproxy]# cat Dockerfile
FROM centos-base:v1                                                                                                                            RUN yum install make -yADD haproxy-1.8.17.tar.gz /usr/local/srcRUN cd /usr/local/src/haproxy-1.8.17 && make ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy && cp haproxy /usr/sbin/ && mkdir /usr/local/haproxy/run ADD haproxy.cfg /etc/haproxy/ADD run_haproxy.sh /usr/binEXPOSE 80 9999CMD ["/usr/bin/run_haproxy.sh"]

准备 haproxy 源码文件:

准备 haproxy 配置文件

[root@docker-server1 haproxy]# cat haproxy.cfg
global
chroot /usr/local/haproxy
#stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
uid 99
gid 99
daemon
nbproc 1
pidfile /usr/local/haproxy/run/haproxy.pid
log 127.0.0.1 local3 info
defaults
option http-keep-alive
option forwardfor
mode http
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms
listen stats
mode http
bind 0.0.0.0:9999
stats enable
log global
#打开这项功能
stats uri /haproxy-status
stats auth haadmin:123456listen web_port
bind 0.0.0.0:80
mode http
log global
balance roundrobin
server web1 192.168.100.101:8888 check inter 3000 fall 2 rise 5
server web2 192.168.100.101:8889 check inter 3000 fall 2 rise 5

运行脚本

cat run_haproxy.sh
#!/bin/bash
haproxy -f /etc/haproxy/haproxy.cfg
tail -f /etc/hostschmod +x run_haproxy.sh

准备构建脚本

[root@docker-server1 haproxy]# cat build-command.sh
#!/bin/bash
docker build -t centos-haproxy-base:7.5-1.8.12 .

执行构建 haproxy 镜像
从镜像启动容器:

[root@docker-server1 haproxy]# docker run -it -d -p80:80 -p9999:9999 centos-haproxy-base:7.5-1.8.12脚本如果不成功: 启动
haproxy  -f /etc/haproxy/haproxy.cfg 

web 访问验证

基于官方apline基础镜像制作


基于官方Ubuntu基础镜像制作

四. 实现动静分离

首先在本机实现tomcat镜像
并且在web界面访问成功
然后通过镜像打包

docker save tomcat-app1:v1 > /opt/tomcat-app1.tar.gz
docker save tomcat-app2:v1 > /opt/tomcat-app2.tar.gz

将镜像分别拷贝到101和102

scp

然后在主机101和102
分别导入镜像

 在101
docker load -i /opt/tomcat-app1.tar.gz在102
docker load -i /opt/tomcat-app2.tar.gz

在100的haproxy配置后端两个tomcat的地址

最后测试

切记里面的iptables规则

一般需要备份
iptables-restore < iptables-rule.txt

五. 本地镜像上传至官方 docker 仓库

1. 阿里云

http://cr.console.aliyun.com

  1. 准备账户
    登录到 docker hub 创建官网创建账户,登录后点击 settings 完善账户信息



然后在管理中看具体操作

登陆

打标签

上传

下载

2.docker hub

https://hub.docker.com/

在虚拟机使用自己的账号登录
docker login https://hub.docker.com/

查看认证信息

登录成功之后会在当前目录生成一个隐藏文件用于保存登录认证信息

给镜像做 tag 并开始上传

docker images #查看镜像 ID
#为镜像做标记

docker tag 678e2f074b0d docker.io/zhangshijie/centos-nginx

上传至仓库

docker login #默认即登录到 docker 官方网站docker push docker.io/zhangshijie/centos-nginx

下载

本地hub仓库(建议)

(三)Docker----基础镜像(制作镜像),实现动静分离,本地镜像上传docker仓库相关推荐

  1. docker 打包上传到仓库

    步骤1:先在docker中注册 地址:Docker Hub 步骤2:创建仓库 步骤3: 将容器 commit 生成镜像 commit 讲解:coomit 讲解: https://www.runoob. ...

  2. docker镜像制作(二)——构建企业镜像LAMP+BBS

    docker镜像制作(二)--构建企业镜像LAMP+BBS 一.LAMP概述 二.进行搭建 1.启动基础镜像容器 2.容器中优化yum源,并安装软件 3.软件初始化 ①.ssh的开启 ②.mysql的 ...

  3. Docket学习2《docker安装nginx、安装tomcat、安装Centos7、容器导入导出、镜像上传到仓库》

    上一篇:Docker学习1<环境准备.原理.常用命令> 目录 一.安装nginx镜像 1.获取nginx的版本 2.下载nginx 3.运行nginx 4.开放端口 5.测试 6.端口暴露 ...

  4. 初学者制作自己的网站详细流程(可以上传自己做的网页)

    制作自己的网站详细流程(可以上传自己做的网页) 自己以前做网页都是仅仅做一下,在本地看一下效果.但是最近需要做一个网站在手机上来展示自己网页内容,搜了一下资料,需要用到域名与主机.可能部分朋友不知道它 ...

  5. 本地文件上传至docker容器

    本地文件上传至docker容器 Linux系统下区别对比(~./home与/root) Linux下~./home与/root的区别: 1.在root用户下,~等同于/root 2.在普通用户下,~等 ...

  6. Kubernetes学习笔记三:Docker安装,Docker使用,编写Dockerfile,制作容器镜像,上传docker镜像

    文章目录 Docker的安装 Docker的使用:docker run命令 查看本地存在的镜像:docker images命令 编写Dockerfile,制作容器镜像 docker build制作镜像 ...

  7. linux docker安装 制作Elasticsearch容器镜像 并上传docker hub

    1 linux docker下载安装 创建操作系统并启动容器 1.ubuntu系统下载docker apt-get install -y docker.io #查看docker版本 docker ve ...

  8. Docker镜像讲解,教你如何自制并上传一个镜像

    Docker镜像讲解 镜像是什么 Docker镜像加速原理 UnionFS(联合文件系统) Docker镜像加载原理 分层理解 Commit镜像 实战测试 镜像是什么 镜像是一种轻量级.可执行的独立软 ...

  9. 上传docker镜像到hub.docker

    首先必须得在hub.docker.com上注册账号 如何将镜像上传到hub.docker.com  docker pull caixia/ubuntu14.04 docker p_w_picpaths ...

最新文章

  1. 解决ubuntu里面的sudo: /etc/sudoers is mode 0640, should be 0440
  2. 【冰极峰教程系列之二】:牢不可破的九宫格布局
  3. 微信小程序界面跳转(2)——按钮
  4. android StringBuffer实现换行
  5. 【操作系统】对操作系统的了解
  6. laydate根据开始时间或者结束时间限制范围
  7. 《你的灯亮着吗》 读书笔记三
  8. c++运动学正反解 ros_朔州智能【机器人关节臂】哪家强
  9. 【三层】无法直接启动带有“类库输出类型”的项目
  10. iOS 搭建XMPP环境时添加依赖库报错及解决
  11. Centos5.5系统备份
  12. 一行命令获取当前JVM所有可设置的参数以及当前默认值
  13. qt实现类似windows的屏幕保护(小球碰撞动画)
  14. 简单的Latex模板
  15. 冷高轮时间王思聪吃热狗windows电脑壁纸下载
  16. 广州科二化龙考场_广州市机动车驾驶人化龙考场交通路线攻略
  17. php集成环境总结(php新手)
  18. 树莓派 or 香橙派 部署c# .net 并设置开机启动
  19. Python爬虫——爬取博物馆新闻 + 情感倾向分析 + 导入数据库
  20. 怎么提取pdf中的表格数据_如何从pdf第1部分中提取表格数据

热门文章

  1. 什么品牌蓝牙耳机音质好?五款音质好的蓝牙耳机推荐
  2. 中断 promise链
  3. Atlas 200 DK开发者套件环境部署(1.0.9.alpha)极简版
  4. 利用数组栈实现简单的四则运算
  5. Cocos2d-x《雷电大战》(2)-精灵随手指移动,你点哪我走哪!
  6. 手机访问服务器网站出现广告,【洗白白】浏览器老是弹出运营商的“小广告”?三招完美解决!...
  7. 知识点滴 - 折叠锻打和大马士革钢
  8. 算法 - 内部排序方法总结
  9. 现在创业什么行业比较好?
  10. 计算机在聚合物中的应用缩写,常用高分子聚合物的中英文名称缩写对照