Docker 三篇 之一

1  Docker 基础

1.1 Docker 简介: 

Docker 是一个开源的应用容器引擎,是直接运行在宿主操作系统之上的一个容器,使用沙箱机制完全虚拟出一个完整的操作,容器之间不会有任何接口,从而让容器与宿主机之间、容器与容器之间隔离的更加彻底。每个容器会有自己的权限管理,独立的网络与存储栈,及自己的资源管理能,使同一台宿主机上可以友好的共存多个容器。

1.2 Docker 与 虚拟机 差在哪?

如果物理机是一幢住宅楼,虚拟机就是大楼中的一个个套间,而容器技术就是套间里的一个个隔断。

应用场景不同

虚拟机更擅长于彻底隔离整个运行环境。如: 云服务提供商通常采用虚拟机技术隔离不同的用户。

Docker通常用于隔离不同的应用,例如前端,后端以及数据库。

资源的使用率不同

虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。

1.3 Docker 版本信息....了解

Docker-CE -> 社区版

    - Stable 版

            稳定版

            一个季度更新一次

    - Edge 版

            非稳定版

            一个月更新一次

 Docker-EE

            收费的, 企业版




1.4 Docker架构与核心组件


Docker 三篇 之一_第1张图片
docker框架

客户端 -> linux终端

        执行对应的命令, 完成对应的功能

docker服务器 -> 后台守护进程

        不与用户交互

        没有输入输出

docker 镜像

        有了镜像之后才能启动一个容器

        只占用磁盘空间

        来源:

                    自己制作

                    从官方下载 -> 命令

        一个镜像对应的是一个操作系统

                    redis镜像

                                    一个操作系统, 里边安装了redis

                    ubuntu镜像

                                    一个ubuntu操作系统

 容器

                    镜像 启动之后就叫容器

                                    容器占用cpu, 内存资源, 不占硬盘资源

                    容器启动之后相当于操作系统启动了

 镜像仓库

                    官方的镜像仓库 -> docker hub



1.5 Docker 安装 和 卸载

安装 : 

# 1. 安装基本软件

    $ sudo apt-get update

    $ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common lrzsz -y

# 2. apt仓库添加并阿里云的docker软件包

# 把下载的key添加到本地trusted数据库中。

    $ sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

    $ sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# 3. 升级软件源

    $ sudo apt-get update

# 4. 安装docker

    $ sudo apt-get install docker-ce -y

# 5. 测试docker

    $ docker version


卸载 :

# 卸载软件

    sudo apt remove docker-ce  -------  只删除安装程序

    sudo apt purge docker-ce ------- 删除安装程序和对应配置文件

# 删除一下目录

    /etc/docker

    /var/lib/docker

        - 镜像

        - 挂载的数据卷目录等

# 命令, 删除root用户目录

sudo rm -rf 目录名

docker加速器设置 -> 可选 : 

# docker安装完成之后, 启动docker容器需要镜像, 镜像需要从官方下载, 可以通过配置加速器, 提高下载速度

# 访问 https://dashboard.daocloud.io 网站,登录 daocloud 账户

# 提交下载镜像的速度

# 打开加速页面, 拷贝下边的命令到linux终端, 执行

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

# 可以去 /etc/docker/daemon.json

这个文件中添加了一句话:

{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}

# 重启docker服务

sudo systemctl restart docker

1.6 权限问题

$ docker version

Client:

Version:          18.09.0

API version:      1.39

Go version:        go1.10.4

Git commit:        4d60db4

Built:            Wed Nov  7 00:49:01 2018

OS/Arch:          linux/amd64

Experimental:      false

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/version: dial unix /var/run/docker.sock: connect: `permission denied`

# 解决方案1: 在docker命令前加sudo

# 解决方案2: 只需要操作一次

1. 将当前用户加入到docker组中

sudo gpasswd -a 用户名 用户组 ---> sudo gpasswd -a go docker

表示当前用户: $USER

2. 将当前用户切换到docker组中

newgrp - docker

# 第三种解决方案: 只要docker服务重启, 就需要重新设置一次

cd /var/run

sudo chmod 666 docker.sock

1.7 Docker 服务相关操作命令

# 启动

sudo systemctl start docker

# 关闭

sudo systemctl stop docker

# 重启

sudo systemctl restart docker

# 查看状态

sudo systemctl status docker

2   Docker 镜像管理

2.1 镜像的搜索/获取/查看

镜像搜索 : 

# 查看docker中的所有指令

docker --help

# 搜索镜像

docker search 镜像名

# 头

NAME: 镜像名                                                 

DESCRIPTION: 镜像描述                               

STARS: 下载量           

OFFICIAL: 是不是官方制作的镜像         

AUTOMATED: 镜像是不是自动生成的 (Dockerfile)

获取镜像 : 

# 载远程仓库(如Docker Hub)中的镜像

docker pull 镜像名

# 镜像下载到本地之后, 存储在什么地方?

/var/lib/docker

查看镜像 : 

# 命令

# 查看的是本地镜像

# 查看所有本地镜像

docker images == docker image ls

# 查看某个指定的镜像

docker image ls 镜像名

# 头信息

REPOSITORY:镜像名         

TAG: 镜像的版本, 默认是latest               

IMAGE ID: 镜像的ID, 这是唯一的           

CREATED: 创建时间           

SIZE: 镜像大小

# 细节:

表示镜像的时候有两种方式:

- 名字

- 如果镜像的tag==latest, 表示镜像的时候tag可以省略

- 如果镜像的tag不等于latest, 表示名字的时候 => 镜像名:tag

- 镜像ID

2.2 镜像别名/删除

镜像别名: 

# 命令

docker tag 原来的镜像名:[tag] 新的名字[:TAG]

# 别名只是名字不同, 镜像的同一个, 不会复制

删除镜像 :

# 命令

docker rmi == docker image rm

docker rmi [OPTIONS] IMAGE [IMAGE...]

参数:

OPTIONS: -f, --force: 强制删除镜像

IMAGE: 要删除的镜像的名字/ID

# 细节:

- 镜像有别名 -> 只能根据名字删除

- 如果有三个名字, 删除一个还是两个, 再删剩一个, 再删没有(镜像就被删除了)

- 镜像没有别名 -> 只有一个名字

可以根据ID, 镜像名删除

2.3 镜像的导入删除

镜像导出 -> 镜像备份和分发 :

# 将本地仓库中的镜像导出的磁盘目录

docker save [OPTIONS] IMAGE [IMAGE...]

Options:

    -o, --output 导出的镜像名(随便起名)  写一个文件, 替换标准输入出

IMAGE: 要导出的镜像(ID/名字)

镜像导入 :

# 将外部镜像, 导入到本地的镜像仓库中

docker load [OPTIONS]

Options:

      -i, --input string  要导入的镜像的磁盘文件


docker load < 镜像文件名

2.4 镜像的历史和详情信息

查看镜像的历史信息 :

# 制作镜像的时候的操作步骤

docker history

查看镜像的详细信息 : 

# 镜像的属性信息, 以json格式输出的

docker inspect 镜像名/镜像ID

2.5 总结图


Docker 三篇 之一_第2张图片


3. docker容器管理


docker将镜像文件启动, 得到一个容器, 一个容器可以被看做一个操作系统1

3.1 容器的查看/创建/启动

容器查看

Docker 三篇 之一_第3张图片

容器创建


Docker 三篇 之一_第4张图片

容器启动

            启动创建的容器


Docker 三篇 之一_第5张图片

            创建新容器并启动


Docker 三篇 之一_第6张图片

3.2 容器的暂停 / 重启


Docker 三篇 之一_第7张图片

3.3 容器的关闭 / 终止 / 删除


Docker 三篇 之一_第8张图片

3.4 容器的进入 / 退出


Docker 三篇 之一_第9张图片

3.5 容器的日志 / 信息 / 端口 / 重命名


Docker 三篇 之一_第10张图片

3.6 基于容器的镜像导入导出


Docker 三篇 之一_第11张图片


Docker 三篇 之一_第12张图片

3.6 总结 图


Docker 三篇 之一_第13张图片

你可能感兴趣的:(Docker 三篇 之一)