学习Docker,看这一篇就够了!

什么是容器

依托于linux内核的虚拟化技术

什么是Docker

能够把应用程序自动部署到容器的开源引擎

Docker的基本组成

在这里插入图片描述

Docker Client客户端

Docker Daemon守护进程

Docker Image镜像

容器的基石

层叠的只读文件系统

联合加载

Docker Container容器

通过镜像启动

启动和执行阶段

写时复制

Docker Registry仓库

共有

Docker Hub

私有

Docker在线演示地址

Docker的C/S模式

Docker的守护进程

  1. 查看守护进程
    ps -ef | grep docker
    systemctl status docker
  2. 使用service命令管理
    sudo service docker start/stop/restart
  3. Docker 的启动选项
    docker -d [OPTIONS]
  • 运行相关:
    -D,–debug=false
    -e,–exec-driver=‘native’
    -g,–graph=’/var/lib/docker’
    -icc=true
    -l,–log-level=‘info’
    –label=[]
    -p,–pidfile=’/var/run/docker.pid
  • Docker服务器连接相关
    -G,–group=‘docker’
    -H,–host=[]
    -tls=false
    -tlsverify=false
  • Remote API相关
    –api-enable-cors=false
  • 存储相关
    -s,–storage-driver=’’
    –selinux-enabled=false
    –storage-opt=[]
  • Registry 相关
    –insecure-registry=[]
    –registry-mirror=[]
  1. 启动配置文件
    /etc/default/docker/

Docker的远程访问

守护进程设置

修改配置文件 /etc/default/dcoker
DOCKER_OPTS=" --label name=docker_server_1 -H tcp://0.0.0.0:2375"
重启docker service docker resart

客户端配置
  • 使用环境变量
    export DOCKER_HOST='tcp://ip:端口' (这里的ip是要连接的远程主机IP)

Dcoker的容器

容器的基本操作

  • 启动容器
    docker run IMAGE [COMMAND][ARG...]
    run 在新容器中执行命令
    eg : docker run centos echo 'hello world'
  • 启动交互式容器
    docker run -i -t IMAGE /bin/bash
    要开启以下设置 为容器始终打开标准输入
    -i --interactive=true|false 默认是false
    为创建的容器分配一个tty终端
    -t --tty=true|false 默认是false
    在这里插入图片描述
  • 查看容器
    docker ps [-a] [-l]
    在这里插入图片描述
  • 查看容器的信息
    docker inspect ID/NAMES
    eg: docker inspect 71f344799cfc
  • 自定义容器名字
    docker run --name=自定义名字 -i -t IMAGE /bin/bash
    在这里插入图片描述
  • 重新启动已经停止的容器
    docker start [-i] 容器名
  • 删除容器
    docker rm 容器名

Docker 守护式容器

什么是守护式容器?

  • 能够长期运行
  • 没有交互式会话
  • 适合运行应用程序和服务
启动守护式容器

方法1
docker run --name=容器名 -i -t /bin/bash
在这里插入图片描述
使用Ctrl + p Q退出,不使用exit
在这里插入图片描述
附加到运行中的容器:
docker attach 容器名

方法2
docker run -d 镜像名 [COMMAND] [ARG...]
在这里插入图片描述

查看容器日志

docker logs [-f] [-t] [--tail] 容器名
-f --follows=true 默认为false
-t --timestamps=true 默认为false
–tail=“all”
在这里插入图片描述

查看容器内进程

docker top 容器名

在运行中的容器中启动新进程

docker exec [-d] [-i] [-t] 容器名 [COMMAND] [ARG...]
在这里插入图片描述

停止守护式容器
  • docker stop 容器名
    给运行中的容器发送一个停止信号,等待容器停止后,命令会返回容器的名字。
  • docker kill 容器名
    立刻杀死
可以使用man命令查看docker具体命令的详细介绍
例如:`man docker exec`

在Dokcer中部署静态网站

设置容器的端口映射

  • docker run [-P]
    大写P 为容器暴露的所有端口进行映射。端口映射命令:
    docker run -P -i -t centos /bin/bash
  • docker run [-p]
    指定映射哪些端口
    1. 容器端口 containerePort
      docker run -p 80 -i -t centos /bin/bash
    2. 宿主机端口:容器端口 HostPort:containerPort
      docker run -p 8080:80 -i -t centos /bin/bash
    3. IP::容器端口 IP:containerPort
      docker run -p 0.0.0.0:80 -i -t centos /bin/bash
    4. IP:宿主机端口:容器端口 ip:HostPort:containerPort
      docker run -p 0.0.0.0:8080:80 -i -t centos /bin/bash

Nginx 部署流程

  • 创建映射80端口的交互式容器
    docker run -p 80 --name web -i -t centos /bin/bash
  • 安装Nginx
    yum install nginx
  • 安装文本编辑器Vim
    yum install vim
  • 创建静态页面
  • 修改Nginx配置文件
  • 运行Nginx
  • 验证网站访问

Docker 镜像

容器的基石

层叠的只读文件系统

联合加载技术

列出镜像

docker images [OPTIONS] [REPOSITORY]

-a ,–all=false 显示所有镜像
-f ,–filter=[]
–no-trunc=false 不使用截断的方式显示数据
-q, --quiet=false 只显示镜像的唯一ID
在这里插入图片描述

  • REPOSITORY 一系列镜像的集合
    Registry 仓库 是docker镜像的存储服务
  • TAG
    镜像的标签。
    创建容器时可以指定 镜像标签,不指定默认使用latest

查看镜像

docker inspect [OPTIONS] CONTAINER | IMAGE [CONTAINER | IMAGE]
既支持容器的查看,也支持镜像的查看。
在这里插入图片描述
在这里插入图片描述

删除镜像

docker rmi [OPTIONS] IMAGE [IMAGE] ...
-f, --force=false
–no-prune=false

查找镜像

  • Docker Hub 官网
    • https://registry.hub.docker.com
  • docker search [OPTIONS] TERM
    • –automated=false
    • –no-trunc=false
    • -s,–stars=0 星级 最低几个星星

拉取镜像

docker pull [OPTIONS] NAME [:TAG]
-a, --all-tags=false
如果慢的话可以使用国内的docker仓库镜像服务器拉取
使用 --registry-mirror 选项

  1. 修改:/etc/default/docker
  2. 添加:DOCKER_OPTS="–registry-mirror=http://xxxx" xxx从daocloud获取

推送镜像

docker push [REPOSITORY NAME]

如何在本地构建镜像?

  • 保存对容器的修改,并再次使用
  • 自定义镜像的能力
  • 以软件的形式打包并分发服务及其运行环境
  1. docker commit 通过容器构建
    docker commit [OPTINOS] CONTAINER [REPOSITORY[:TAG]]
    -a,–author=""
    -m,–message=""
    -p,–pause=true
    在这里插入图片描述
  2. docker build 通过Dockerfile文件构建
    创建第一个Dockerfile
    #First Dockerfile
    FROM ubuntu:14.04
    MAINTAINER liunan "youremail@outlook.com"
    RUN apt-get update
    RUN apt-get install nginx
    EXPOSE 80
    
    1. 创建目录 mkdir -p dockerfile/df_test
    2. 编写 dockerfile文件
      在这里插入图片描述
    3. 执行 docker build 命令
      docker build [OPTIONS] PATH | URL | -
      –force-rm=false
      –no-cache=false
      –pull=false
      -q,–quiet=false
      –rm=true
      -t,–tag="" 指定构建的镜像的名字
      在这里插入图片描述
    4. 使用刚才build 的镜像
      docker run -d --name nginx_use_df -p 80 ln/df_test nginx -g "daemon off;"

Dockerfile指令

注释 #
指令 命令大写

FROM
  • 已经存在的镜像
  • 基础镜像
  • 必须是第一条非注释的指令
FROM <image>
FROM <image>:<tag>
MAINTAINER

指定镜像的作者信息,包含镜像的所有者和联系信息

MAINTAINER liunan "liunan@gmail.com"
RUN

指定当前镜像中运行的命令

  • RUN (shell模式)
/bin/sh -c command
RUN echo hello
  • RUN [“executable” ,“param1”,“param2”] (exec模式)
RUN ["/bin/bash" , "-c" ,"echo hello"]
EXPOSE

指定运行该镜像的容器使用的端口

EXPOSE <port> [<port> ...]

使用EXPOSE指定了端口,启动容器的时候 也要指定端口
docker run -p 80 -d youimages nginx -g "daemon off;"

CMD

指定在容器运行时执行的命令

ENTERYPOINT

指定在容器运行时执行的命令

ADD

设置镜像的目录文件
ADD包含类似tar的解压功能

COPY

设置镜像的目录文件
如果单纯的复制文件,Docker推荐使用COPY

VOLUME

设置镜像的目录文件
VOLUME["/data"]

WORKDIR

镜像在构建 及 运行时的环境设置

WORKDIR /path/to/workdir
ENV

镜像在构建 及 运行时的环境设置

ENV<key><value>
ENV<key>=<value>....
USER

镜像以什么样的用户运行

USER daemon
USER nginx (使用哪个用户启动docker)
USER user:group 
USER user:gid
ONBUILD

镜像触发器
当一个镜像被其他镜像作为基础镜像时执行
会在构建过程中插入指令

Dockerfile的构建过程

Dockerfile的执行过程
  • 从基础镜像运行一个容器
  • 执行一条指令,对容器作出修改
  • 执行类似 docker commit 的操作,提交一个新的镜像层
  • 再基于刚提交的镜像运行一个新容器
  • 执行 Dockerfile 中的下一条指令,直至所有指令执行完毕
构建镜像的中间层调试

以上步骤中,中间层容器会在执行完后删除,但中间层镜像不会被删除。
中间层镜像的优点:

  • 使用中间层镜像进行调试
  • 查找错误
Dockerfile 的镜像缓存

Dockerfile构建过程中可以 构建缓存

  • 构建缓存 use cache
  • 不使用缓存
    $ docker build --no-cache
    
    # 在 dockerfile 文件中 添加
    ENV REFRESH_DATE 2015-04-01
    # 利用环境变量标记  缓存刷新的时间  这句命令后面的语句不会使用缓存
    
查看镜像的构建过程
$ docker history [image]

在这里插入图片描述

Docker容器的网络基础

  • Liunx 虚拟网桥特点
    • 可以设置IP地址
    • 相当于拥有一个隐藏的虚拟网卡
      在这里插入图片描述
# 安装网桥管理工具
sudo yum install bridge-utils
sudo brctl show
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值