Docker 入门

Docker 学习

概述

安装

命令

镜像命令

容器命令

操作命令

Docker 镜像

容器数据卷

DockerFile

Docker网络原理

IDEA 整合Docker

单机版Docker

Docker Compose

CI / CD 持续集成 / 持续开发

️ 知道的越多,不知道的越多

Docker 为什么会出现?

开发 - 运维

我的电脑上可以运行,服务器上不可用。

开发即运维。

环境配置十分麻烦,费时费力。

带着环境发布jar包。项目能不能都带上环境打包。

高级开发难求,低级开发满地都是。

Docker 可以解决以上所有问题。

java - - apk - - 发布到应用商店 - - 张三使用apk - - 安装即可

java - - jar (环境) - - 打包项目带上环境(镜像) - - Docker仓库:商店 - - 直接运行即可

Docker 给以上的问题,提供了解决方案。

Docker 的思想就来自于集装箱。

隔离是 Docker 的核心思想。

Docker 通过隔离机制,可以将服务器利用到极致。

Docker 的历史

官网:https://www.docker.com/

文档:https://docs.docker.com/ 文档超级详细

虚拟机技术缺点:

1、资源占用十分多

2、冗余步骤多

3、启动很慢

容器化技术优点:

容器化技术不是模拟一个完整的操作系统。

todo:

DevOps 开发运维

比较 Docker 和虚拟机技术的不同

传统虚拟机,虚拟出一条硬件,运行个完整的操作系统,然后在这个系统上安装和运行软件

容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响

Devops(开发、运维)

应用更快速的交付和部传统:一堆帮助文档,安装程序 Docker:打包镜像发布测试,一键运行更便捷的升级和扩缩容

使用了 Docker 之后,我们部应用就和搭积木一样!项目打包为一个镜像,扩展服务器 A!服务器 B 更简单的系统运维

在容器化之后,我们的开发,测试环境都是高度一致的

Docker 是内核级别別的虚拟化,可以再一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致。

Docker 安装

镜像(image)

docker 镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat 镜像==> run= tomcat01 容器(提供服务器)

通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)

容器(container)

Docker 利用容器技术,独立运行个或者一个组应用,通过镜像来创建的。

启动,停止,删除,基本命令!

目前可以把这个容器理解为就是一个简易的 inux 系统

仓库 (repository)

仓库就是存放镜像的地方!

仓库分为公有仓库和私有仓库!

Docker Hub(默认是国外的)

阿里云,都有容器服务器(配置镜像加速!)

安装Docker

环境准备

1、需要会一点点的 Linux 的基础

2、 Centos 7

3、我们使用 XShell 连接远程服务器进行操作!环境查看

系统内核

[root@master ~]# uname -r

3.10.0-957.el7.x86_64

系统版本

[root@master ~]# cat /etc/os-release

NAME="CentOS Linux"

VERSION="7 (Core)"

ID="centos"

ID_LIKE="rhel fedora"

VERSION_ID="7"

PRETTY_NAME="CentOS Linux 7 (Core)"

ANSI_COLOR="0;31"

CPE_NAME="cpe:/o:centos:centos:7"

HOME_URL="https://www.centos.org/"

BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"

CENTOS_MANTISBT_PROJECT_VERSION="7"

REDHAT_SUPPORT_PRODUCT="centos"

REDHAT_SUPPORT_PRODUCT_VERSION="7"

卸载旧版本

$> yum remove docker \

              docker-client \

              docker-client-latest \

              docker-common \

              docker-latest \

              docker-latest-logrotate \

              docker-logrotate \

              docker-engine

需要的安装包

yum install -y yum-utils

设置镜像的仓库

yum-config-manager \

--add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

默认是国外的,不要用这个,使用阿里云的镜像加速

yum-config-manager \

--add-repo \

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum软件包索引

yum makecache fast

安装docker的相关包

yum install docker-ce docker-ce-cli containerd.io

启动docker

systemctl start docker

检查是否启动成功

docker version

测试 hello world

docker run hello-world

docker 会去本地检查是否有hello-world镜像,没有的话,会去仓库拉取下载,下载成功后,执行这个镜像

查看下载的hello-world镜像

docker images

阿里云镜像加速

只有买了阿里云的服务器才能用

Docker 为什么比 VM 快?

1、Docker 有着比虚拟机更少的抽象层。

2、docker 利用的是宿主机的内核,m 需要是 Guest OS。

所以说,新建一个容器的时候,docker,不需要想虚拟机一样重新加载个操作系统内核,避免引导。虚拟机是加载 Guest OS,分钟级别的,而 docker 是利用宿主机的操作系统吗,省略了这个复杂的过程,秒级!

Docker 的常用命令

1、帮助命令:

docker version #显示 docker 的版本信息 docker info #显示 docker 的系统信息,包括镜像和容器的数量

docker 命令--help # 帮助命令

官方文档:https://docs.docker.com/engine/reference/commandline

2、镜像命令

官方文档:https://docs.docker.com/engine/reference/commandline/images/

【报错】

Error response from daemon: Get https://registry-1.docker.io/v2/: net/http:

原因:

https://blog.csdn.net/BigData_Mining/article/details/87869147

修改docker镜像源:

docker默认的源为国外官方源,下载速度较慢,可改为国内,加速

3、容器命令

容器命令

说明:我们有了镜像才可以创建容器,linux,下载一个 centos 镜像来测试学习

新建容器并启动。

docker run [可选参数] image

退出容器

exit #直接容器停止并退出

Ctrl+P+Q #容器不停止退出

刪除容器

docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果要强制除 rm-f

docker rm-fs (docker ps-aq) #删除所有的容器 docker ps -a -q | xargs docker rm #删除所有的容器

启动和停止容器的操作

docker start 容器id #启动容器

docker restart 容器id #重启容器

docker stop 容器id #停止当前正在运行的容器 docker kill 容器id #强制停止当前容器

常用的其他命令

后台启动容器

命令 docker run -d 镜像名

docker run-d centos

问题: docker ps,发现 centos 停止了

常见的坑:

docker 容器使用后台运行,就必须要有要一个前台进程,docker 发现没有应用,就会自动停止

nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

查看日志

docker logs -f -t --tail 10 容器,没有日志

自己编写一段 shell 脚本

docker run -d centos /bin/sh -c “while true;do echo kuangshen; sleep 1;done”

docker ps

显示日志

-tf #显示日志

—tail number #要显示日志条数

docker logs -tf --tai1 10 dce7b86171bf

Docker 学习笔记(一)的更多相关文章

  1. Docker学习笔记 — 配置国内免费registry mirror

    Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror

  2. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  3. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  4. docker~学习笔记索引

    回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...

  5. Docker学习笔记 - Docker容器内部署redis

    Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...

  6. docker学习笔记(一)—— ubuntu16.04下安装docker

    docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...

  7. Docker学习笔记总结

    Docker学习笔记 https://yeasy.gitbooks.io/docker_practice/content/   一 环境搭建 Ubuntu安装 .添加软件源的GPG密钥 curl -f ...

  8. docker学习笔记二:常用命令

    docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi ...

  9. docker学习笔记-1

    docker学习笔记一:安装 mac安装docker docker官方文档上有这么一段话: Because the Docker daemon uses Linux-specific kernel f ...

  10. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

随机推荐

  1. luogu P4166 [SCOI2007]最大土地面积 凸包 旋转卡壳

    LINK:最大土地面积 容易想到四边形的边在凸包上面 考虑暴力枚举凸包上的四个点计算面积. 不过可以想到可以直接枚举对角线的两个点找到再在两边各找一个点 这样复杂度为\(n^3\) 可以得到50分. ...

  2. ORACLE不完成恢复ORA-00392,ORA-00312,ORA-00349

    背景: 进行测试库不完全恢复,log_file_name_convert没调整好.rac-asm至单实例-文件系统,recover完成后,mount状态的database  执行 alter data ...

  3. Scala---初探

    scala语言量大特性:面向对象+函数式编程 Scala的类型 val指的是引用不可变,而不是值. 值类型 Byte Char Short Int Long Float Double 引用类型 Str ...

  4. day3. 六大标准数据类型的类型转换

    一.强制类型转换Number 1.int  强制转换成整型 var1 = 13 var2 = 13.789 var3 = True var4 = 5-7j var5 = "" va ...

  5. Android布局——单复选框(今天上课的内容总结下)

    怎么感觉最近补充的都是监听器的内容,今天学长提了一个新的监听器,看起来很牛批(因为很长) // 添加文本更改的监听器, TextWatcher是监听器的回调接口 text.addTextChanged ...

  6. 003_go语言中的变量

    代码演示: package main import "fmt" func main() { var a = "initial" fmt.Println(a) v ...

  7. -bash: !": event not found

    在linux环境下执行一下代码时 printf "The first '%s,%s!' \n" Hello world 返回结果为“-bash: !”: event not fou ...

  8. Docker 快速搭建 MySQL 5.6 开发环境

    使用 Docker 快速搭建一个 MySQL 5.6 开发环境 步骤 获取镜像 docker pull mysql:5.6 启动容器,密码 123456,映射 3306 端口 docker run - ...

  9. Python中对象实例的__dict__属性

    实例的__dict__并不是一个方法,而是存储与该实例相关的实例属性的字典,对类中定义的方法(函数),方法名也是属性变量,类的__dict__存储所有实例共享的变量和函数(类属性,方法等),类的__d ...

  10. Hexo博客中插入 Chart 动态图表

    该文基本(全部)来自于chatjs中文文档 由于使用pjax,导致页面需要二次刷新才会显示表格,故引入了自动刷新的JS,但这样会导致回退标签失效 背景 今天在谷歌上逛博客时,突然发现shen-yu大佬 ...