Docker

小编 2026-07-11 阅读:1872 评论:0
目录1.1    容器引擎核心技术    1 1.2    特性    11.3    说明  ...

目录

1.1    容器引擎核心技术    1

1.2    特性    1

1.3    说明    1

1.4    部署    2

1.5    操作    2

1.6    Docker Image制作    5

1.7    Docker Image发布    7

1.8    容器端口映射    8

 

  1. 容器引擎核心技术

    Namespace:实现Container的进程、网络、消息、文件系统和主机名的隔离;

    Cgroup:实现对资源的配额和度量;

  2. 特性

    文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里;

    资源隔离:系统资源根据需求分配到不同的容器中;

    网络隔离:么米格容器运行在自己的网络空间,虚拟接口和IP地址;

    日志记录:Docker会 手机并记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索;

    变更管理:容器文件系统的变更可提交到新的镜像中,并可重复使用以创建更多的容器,无需使用模板或手动配置;

    交互式Shell:Docker可分配一个虚拟终端并关联到任何容器的标准输入上。

  3. 说明

    Docker镜像及数据存放于/var/lib/docker目录

    [root@kazihuo ~]# du -sh /var/lib/docker/*

    24K    /var/lib/docker/containers

    406M    /var/lib/docker/devicemapper

    664K    /var/lib/docker/image

    44K    /var/lib/docker/network

    0    /var/lib/docker/swarm

    0    /var/lib/docker/tmp

    0    /var/lib/docker/trust

    24K    /var/lib/docker/volumes

  4. 部署

    [root@kazihuo ~]# mv local.repo local.repo.bak

    [root@kazihuo ~]# wget -O /etc/yum.repos.d/Centos_Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    [root@kazihuo ~]# yum -y install docker-io

    [root@kazihuo ~]# systemctl start docker

    [root@kazihuo ~]# docker search centos

    #从Docker Hub中搜索符合条件的镜像

    [root@kazihuo ~]# docker pull centos

    #从Docker Hub中拉取或更新指定镜像

    or

    本地导入指定image

    [root@kazihuo ~]# docker load -i centos-latest-docker-image.tar

    # -i:指定载入的镜像归档

  5. 操作

    查看所有本地镜像:

    [root@kazihuo ~]# docker images

     

    运行容器:

    [root@kazihuo ~]# cat /etc/redhat-release

    CentOS Linux release 7.2.1511 (Core)

    [root@kazihuo ~]# docker run -it --name=test-centos docker.io/centos:latest /bin/bash

    #-i:以交互模式运行容器;-t:为容器重新分配一个伪输入终端;-d 表示守护模式, 容器在后台运行;--name 为容器命名;docker.io/centos:latest 格式为镜像名:版本;/bin/bash 进入bash命令行

    [root@a94e89783f11 /]# cat /etc/redhat-release

    CentOS Linux release 7.4.1708 (Core)

     

    长久运行:

    [root@kazihuo ~]# JOB=$(docker run -d centos /bin/bash -c "while true;do echo hello world;sleep 1;done")

    # -d:后台运行容器,并返回容器ID;-c:待完成

    [root@kazihuo ~]# echo $JOB

    64f37b2fb689076e9b3c169ab9ab4505448c394388c312643a6d54f05fda3756

     

    容器日志读取:

    [root@kazihuo ~]# docker logs $JOB

    hello world

    ···

    hello world

    hello world

     

    查看运行中容器:

    [root@kazihuo ~]# docker ps

     

    查看所有容器:

    [root@kazihuo ~]# docker ps -a

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

    64f37b2fb689 centos "/bin/sh -c 'while tr" 13 minutes ago Up 13 minutes desperate_albattani

    a94e89783f11 centos "/bin/bash" 4 hours ago Exited (137) 18 minutes ago elegant_kare

    12fe2d95c2a2 centos "/bin/bash" 4 hours ago Exited (127) 4 hours ago sleepy_banach

     

    杀死容器:

    [root@kazihuo ~]# docker kill 64f37b2fb689

     

    启动、停止、重启:

    [root@kazihuo ~]# docker start 64f37b2fb689

    [root@kazihuo ~]# docker stop 64f37b2fb689

    [root@kazihuo ~]# docker restart 64f37b2fb689

     

    删除容器:

    [root@kazihuo ~]# docker rm 64f37b2fb689

    注:正在运行的容器在删除前先将容器关闭,或者加-f强制删除

     

    查看容器网络:

    [root@kazihuo ~]# ifconfig

    docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

    inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0

    inet6 fe80::42:8fff:fed0:be33 prefixlen 64 scopeid 0x20<link>

    ether 02:42:8f:d0:be:33 txqueuelen 0 (Ethernet)

    RX packets 28641 bytes 1172564 (1.1 MiB)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 30689 bytes 105377292 (100.4 MiB)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

     

    配置容器root密码:

    [root@01b16f44a3f9 ~]# echo 000000|passwd --stdin root

    注:默认无密码

  6. Docker Image制作

    法一:

    docker commit

    #保存container的当前状态到image后,生成对应的image

    法二:

    docker build

    #使用Dockerfile自动化制作image

     

    法一实操:

    [root@kazihuo ~]# docker run -ti centos /bin/bash

    [root@c4e377bf5c01 ~]# yum -y install net-tools

    [root@c4e377bf5c01 ~]# exit

    [root@kazihuo ~]# docker images

    REPOSITORY TAG IMAGE ID CREATED SIZE

    docker.io/centos latest 3fa822599e10 5 weeks ago 203.5 MB

    [root@kazihuo ~]# docker ps -a

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

    c4e377bf5c01 centos "/bin/bash" 18 minutes ago Exited (0) About a minute ago reverent_kare

    [root@kazihuo ~]# docker commit c4e377bf5c01 centos:net-tool

    sha256:c45c0a7b6a1a2d0db6c94d5d932b741f408507b86da50ab41280421258d86e68

    [root@kazihuo ~]# docker images

    REPOSITORY TAG IMAGE ID CREATED SIZE

    centos net-tool c45c0a7b6a1a 15 seconds ago 350.3 MB

    docker.io/centos latest 3fa822599e10 5 weeks ago 203.5 MB

    [root@kazihuo ~]# docker run -ti centos:net-tool /bin/bash

    [root@0f1037105498 /]# rpm -qa net-tools

    net-tools-2.0-0.22.20131004git.el7.x86_64

     

    法二实操:

    [root@kazihuo ~]# mkdir /docker-build

    [root@kazihuo ~]# cd /docker-build/

    [root@kazihuo /docker-build]# cat Dockerfile

    FROM centos

    MAINTAINER kazihuo <kazihuo@sina.com>

    RUN yum -y install httpd

    ADD start.sh /usr/local/bin/start.sh

    ADD index.html /var/www/html/index.html

     

    注释:

    FROM #基于指定镜像

    MAINTANER #镜像创建者

    RUN #安装软件

    ADD #将文件<src>拷贝到container的文件系统对应的路径<dest>,所有拷贝到container中的文件和文件夹权限是07555,uid和gid是0

     

    [root@kazihuo /docker-build]# echo "/usr/sbin/httpd -DFOREGROUND"> start.sh

    注:以上相当于执行systemctl start httpd

    [root@kazihuo /docker-build]# chmod a+x start.sh

    [root@kazihuo /docker-build]# echo "docker image build test" > index.html

     

    build创建新的image语法:

    # docker build -t 父镜像名:自己定义的镜像名 Dockerfile文件所在路径

    [root@kazihuo /docker-build]# docker bulid -t centos:httpd .

    [root@kazihuo /docker-build]# docker images

    REPOSITORY TAG IMAGE ID CREATED SIZE

    centos httpd 40aba19c5ebb 20 seconds ago 327 MB

    centos net-tool c45c0a7b6a1a 35 minutes ago 350.3 MB

    docker.io/centos latest 3fa822599e10 5 weeks ago 203.5 MB

  7. Docker Image发布

    法一:

    Save Image To TarBall

    法二:

    Push Image To Docker Hub

     

    法一实操:

    保存image到tar包

    语法:docker save -o 导出的镜像名.tar 本地镜像名

    [root@kazihuo /docker-build]# docker save -o centos-httpd-docker-image.tar centos:httpd

    [root@kazihuo /docker-build]# ls

    centos-httpd-docker-image.tar Dockerfile index.html start.sh

  8. 容器端口映射

    使用centos:httpd镜像启动一个容器,将容器中的80端口映射到docker物理上的9000端口

    [root@kazihuo ~]# docker run -d -p 9000:80 centos:httpd /bin/bash -c /usr/local/bin/start.sh

    01b16f44a3f96814c5368e417c07ef48fad2fe7013ff78718293ff012e97421b

    [root@kazihuo ~]# docker ps

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

    01b16f44a3f9 centos:httpd "/bin/bash -c /usr/lo" 23 seconds ago Up 22 seconds 0.0.0.0:9000->80/tcp elegant_hopper

    [root@kazihuo ~]# curl http://127.0.0.1:9000

    docker image build test

    [root@kazihuo ~]# docker exec -ti 01b16f44a3f9 /bin/bash

    [root@01b16f44a3f9 ~]# echo kazihuo > /var/www/html/test.html

    [root@kazihuo ~]# curl http://127.0.0.1:9000/test.html

    kazihuo

-------------------------------------------------------------

作者:罗穆瑞
出处:http://www.cnblogs.com/kazihuo/

转载请保留此段声明,且在文章页面明显位置给出原文链接,谢谢!

------------------------------------------------------------------------------

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

------------------------------------------------------------------------------

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表