Docker

Docker

什么是Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker的组成

  • 镜像、容器、仓库

Docker的体系结构

  • 客户端、RESTAPI、服务器(Docker守护进程)

Docker的执行流程

  1. Docker客户端

Docker容器和镜像

  • 容器:容器是运行在主机上的沙盒进程,与该主机上运行的所有其他进程隔离。这种隔离利用了Linux中已经存在很长时间的内核名称空间和cgroup功能。Docker使这些功能变得易于使用。总之,容器:
    • 是映像的可运行实例。您可以使用Docker API或CLI创建、启动、停止、移动或删除容器。
    • 可以在本地机器、虚拟机上运行,也可以部署到云中。
    • 是可移植的(并且可以在任何操作系统上运行)。
    • 与其他容器隔离,并运行自己的软件、二进制文件、配置等。
  • 镜像:镜像是文件,是只读的,提供了运行程序完整的软硬件资源,是应用程序的"集装箱
    • 正在运行的容器使用一个隔离的文件系统。这个独立的文件系统由映像提供,映像必须包含运行应用程序所需的一切-所有依赖项、配置、脚本、二进制文件等。映像还包含容器的其他配置,如环境变量、要运行的默认命令和其他元数据。

Docker容器的生命周期

主要包含:Stopped、Running、Pause、Deleted四种状态,如下图
[图片]

Dockerfile和常用指令

Dockerfile是一个包含用于组合映像的命令的文本文档
Dockerfile执行的每一步都创建一个临时的镜像

FROM
MAINTAINER
LABEL
WORKDIR
ADD
COPY
ENV
RUN #包含Shell命令格式和Exec命令格式
# 使用Shell执行时,当前shell是父进程,生成一个子shell进程
# 在子shell中执行脚本。脚本执行完毕,退出子shell,回到当前shell.
# 使用Exec方式,会用Exec进程替换当前进程并且保持PID不变
# 执行完毕,直接退出,并不会退回之前的进程环境
CMD
EXPOSE

  • ENTRYPOINT启动命令
    ENTRYPOINT(入口点)用于在容器启动时执行命令Dockerfile中只有最后一个ENTRYPOINT会被执行ENTRYPOINT["ps],推荐使用Exec格式

  • CMD默认命令
    CMD用于设置默认执行的命令如Dockerfile中出现多个CMD则只有最后一个被执行如容器启动时附加指令,则CMD被忽略CMD[“ps”,”-ef"]#推荐使用Exec格式

Docker的/bin/bash有什么用

Docker /bin/bash可以帮助开发者进入一个Docker容器的命令行界面,以便进行调试、查看日志、执行命令等操作。当需要进行容器内部的操作时,使用/bin/bash命令可以启动一个交互式的终端会话,使得开发者可以像在本地终端一样操作容器。

Docker容器间的通信

  • 单向通信
    使用link
    docker run -d --name web --link database tomcat

双向通信

  1. 构建网桥
  2. 连接网桥和容器
    docker run -d --name web tomcat
    docker run -d -it --name database centos /bin/bash

docker network ls
docker network create -d bridge [bridgeName]

docker network connect [bridgeName] web
docker network connect [bridgeName] database

docker exec -it [web cid] /bin/bash
docker exec -it [database cid] /bin/bash
[图片]

Docker间的数据共享

  • 通过设置-v参数挂载宿主机目录
  • 创建虚拟容器,通过–volumn-from共享容器内挂载点

Way 1

docker run --name t1 -v /usr/webapps:/usr/local/tomcat/webapps tomcat

Way 2

创建共享容器

docker create --name webpage -v /webapps:/tomcat/webapps tomcat /bin/true

共享容器挂载点

docker run --volumes-from webpage --name t1 -d tomcat

Docker-compose容器编排工具

  • 单机多容器部署工具
  • 通过yml文件定义多容器如何部署
  • WIN/MAC默认提供Docker Compose,Linux需安装

常用的Docker命令

service docker start

docker pull [iname]

docker images 

docker rm [cid]

docker rm -f [cid]

docker rmi [iid]

docker rmi -f [iid]

docker ps

docker build

docker run [iname] 

docker start [cid]

docker exec [-it] [cid] [command]

exit

docker stop [cid]

docker create tomcat

docker pause [cid]

docker unpause [cid]

docker inspect [cid]

docker logs
#Docker网桥构建相关命令
docker network ls
docker network create -d bridge [bridgeName]

docker network connect [bridgeName] web
docker network connect [bridgeName] database


docker-compose up -d
docker-compose down

Docker Hub

Docker远程仓库

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值