Docker容器技术

运行第一个容器

该过程可以简述为:

  • 1.从Docker hub中下载httpd镜像,镜像中已经安装好了apache http server
  • 2.启动httpd容器,并将容器的80端口映射到host的80端口
  • 3.配置完后,从浏览器访问http://{ip}/就可以访问http服务了

[parallels@localhost ~]$ sudo docker run -d -p 80:80 httpd
[sudo] password for parallels:
Unable to find image ‘httpd:latest’ locally
latest: Pulling from library/httpd
afb6ec6fdc1c: Pull complete
5a6b409207a3: Pull complete
41e5e22239e2: Pull complete
9829f70a6a6b: Pull complete
3cd774fea202: Pull complete
Digest: sha256:db9c3bca36edb5d961d70f83b13e65e552641e00a7eb80bf435cbe9912afcb1f
Status: Downloaded newer image for httpd:latest
33468c3560403e96821f547eafdd14c9e4c63639b6a8bb6489f9bd3603c810f0

容器核心知识概述

什么是容器

容器是一种轻量级、可移植、自包含的软件打包技术,容器由两部分组成:

  • 1.应用程序本身;
  • 2.依赖:比如应用程序需要的库或者其他软件在host操作系统的用户控件中运行,与操作系统的其他进程隔离。

容器是如何工作的

Docker架构
Docker采用的是client/server架构,客户端向服务器端发送请求,服务器负责构建、运行和分发容器。客户端和服务器端可以运行在同一个host上,客户端也可以通过socket或rest api与远程的服务器通信。

  • Docker客户端
    • docker命令
  • Docker服务器
    • Docker daemon是服务器组件,以linux后台服务的方式运行在docker host上,负责创建、运行、监控容器,构建、存储镜像。
    • 默认配置下,Docker daemon只能响应来自本地host的客户端请求,如果需要允许远程客户端请求,需要在配置文件中打开TCP监听。
  • Docker镜像 (构建和打包阶段)
    • 镜像有多种生成方法:
      • 从无到有开始创建镜像;
      • 下载并使用别人创建好的现成镜像
      • 在现有镜像上创建新的镜像
  • Docker容器 (启动和运行阶段)
    • 就是Docker镜像的运行实例
  • Registry
    • 存放Docker镜像的仓库,分为私有和公有两种。
    • Docker hub是默认的registory,由docker公司维护;
    • 用户也可以创建私有的registry

镜像管理命令

docker image 查看已经下载到本地的镜像
docker ps / docker container ls 显示正在运行的容器
docker build -t ubuntu-with-vi-dockerfile . 创建镜像
docker history ubuntu 显示镜像的构建历史
docker tag ubuntu-with-vi-dockerfile test/ubuntu-with-vi:v1 重命名镜像,打标签
docker push 上传镜像
docker rmi 删除镜像 eg:docker rmi demo:latest
docker rm 删除容器
docker save -o demo.tar demo:latest 导出镜像到本地
docker load -i demo.tar 从导出的本地文件中导入本地镜像

#容器管理命令
docker create xx
docker run xx 运行容器
docker ps 查看容器
docker start ** 启动容器
docker stop
docker rm xx 删除容器
docker inspect xx 查看容器信息
docker attach xx 依附容器
dokcer exec $options $containerid $args 容器内执行命令
docker logs $containerid 查看容器日志
docker events $options 容器事件监控
docker export -o $export.tar $containerid 导出容器
docker import $export.tar $imagename:tag 导入容器
docker run -v /root/datavolume:/data -it demo:latest /bin/sh 挂载一个主机目录或文件作为数据卷

镜像Dockerfile

FROM 指定构建镜像的基础镜像
MAINTAINER:指定创建镜像的用户
WORKDIR:为后续的run,cmd,entrypoint等指令指定工作目录
RUN:在当前镜像基础上执行指定的命令
ADD/COPY:复制本地主机文件、目录,添加到容器指定路径中
EXPOSE:知名容器对外开放的端口
CMD:设置启动容器时的默认运行命令,只能使用一次
ENTRYPOINT:和CMD类似,用来指定容器启动默认与运行命令,只能使用一次

分发镜像
一个特定的镜像的名字由两部分组成:repository和tag

** 搭建本地registry

  • 1.启动registry容器
    • docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
  • 2.重命名镜像(在前面加上了运行registry的主机名称和端口)repository的完整格式为 host:port/username/xxx
    • docker tag test/ubuntu-with-vi:v1 registry.example.net:5000/test/ubuntu:v1
  • 3上传镜像
    • docker push 127.0.0.1:5000/test/ubuntu:v1

两种进入容器的方法

  • docker attach
    • 可通过ctrl p然后ctrl q退出attach终端
    • 区别:attach直接进入容器启动命令的终端,不会启动新的进程。
  • docker exec
    • docker exec -it xxx bash|sh
    • 执行exit退出容器
    • 区别:exec则是在容器中打开新的终端,并且可以启动新的进程。

第5章 docker网络

docker网络从覆盖范围上可分单个host上的容器网络和跨多个host的网络。
docker安装时会自动在host上创建三个网络:可以用docker network ls命令查看,none host bridge

  • none网络
    容器创建时,可以使用–network=none,执定使用none网络;这样就是什么都没有的网络,挂在这个网络下的容器除了lo,没有任何网卡。
    适用于对安全性较高并且不需要联网的应用,比如某容器的唯一用途是生成随机密码。
  • host网络
    容器创建时,使用–network=host指定使用host网络,直接使用host的网络最大的好处是性能,如果容器对网络传输效率较高要求,可以使用host网络。
  • bridge网络
    docker安装时会创建一个命令为docker0的linux bridge,如果不指定–network,创建的容器默认都会挂载到docker0上。
  • user-defined网络
    除了none,host,bridge这三个自动创建的网络,用户用额可以根据业务需求创建user-defined网络。

重要的命令

  • brctl show 查看当前host的网络变化
  • docker network inspect bridge 查看网络的配置信息
  • docker network connect 为容器添加网卡

第六张 Docker 存储

容器进阶知识

第七章 多主机管理

多主机环境手工方式效率低且不容易保证一致性,针对这个问题,docker给出的解决方案:Docker machine。

第八章 容器网络

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值