docker基础学习笔记一:docker概述和安装(代码片段)

温暖@ 温暖@     2023-01-06     135

关键词:

容器的起源

假设你们公司正在秘密研发下一个“今日头条”APP,我们姑且称为明日头条,程序员自己从头到尾搭建了一套环境开始写代码,写完代码后程序员要把代码交给测试同学测试,这时测试同学开始从头到尾搭建这套环境,测试过程中出现问题程序员也不用担心,大可以一脸无辜的撒娇,“明明在人家的环境上可以运行的”。

测试同学测完后终于可以上线了,这时运维同学又要重新从头到尾搭建这套环境,费了九牛二虎之力搭建好环境开始上线,糟糕,上线系统就崩溃了,这时心理素质好的程序员又可以施展演技了,“明明在人家的环境上可以运行的”。

从整个过程可以看到,不但我们重复搭建了三套环境还要迫使程序员转行演员浪费表演才华,典型的浪费时间和效率,聪明的程序员是永远不会满足现状的,因此又到了程序员改变世界的时候了,容器技术应运而生。

什么是容器

容器技术起源于Linux开源平台,并且经历了比较长时间的发展阶段,其中最重要的成果是Linux容器(Linux Containers,LXC)技术

IBM DeveloperWorks网站关于容器技术的描述是这样的:“容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。”

直白的翻译过来就是这样的:如果认为虚拟机是模拟运行的一整套操作系统(包括内核、应用运行态环境和其他系统环境)和跑在上面的应用,那么容器就是独立运行的一个(或一组)应用,以及它们必需的运行环境

容器中运行的就是一个或者多个应用程序,以及应用运行所需要的环境。容器直接运行在操作系统内核之上的用户空间。容器技术可以让多个独立的用户空间运行在同一台宿主机上。容器既可以运行在物理机也可以运行在虚拟机上,当然也可以运行在公有云主机上。

Docker是什么

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

Docker基于Go语言开发的!开源项目!

一个完整的Docker有以下几个部分组成:

  1. DockerClient客户端
  2. Docker Daemon守护进程
  3. Docker Image镜像
  4. DockerContainer容器

Docker容器为什么这么火

在容器技术出来之前,我们都是使用虚拟机技术!

虚拟机:在window中装一个VMware,通过这个软件我们可以虚拟出来一台或者多台电脑!笨重!

虚拟机也属于虚拟化技术,Docker容器技术,也是一种虚拟化技术!

Docker容器技术:可以独立运行的一个(或一组)应用,以及它们必需的运行环境

Docker能做什么?

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

  • 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
  • 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
  • 每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响

Docker的安装(centos8中)

docker官网:https://www.docker.com/
官方安装文档url:https://docs.docker.com/engine/install/centos/

注意:此操作都是在root用户下操作,如果权限不够在centos操作命令时输入sudo;

环境准备:

Linux要求内核3.0以上

[root@localhost ~]uname -r  #查看内核版本
4.18.0-305.19.1.el8_4.x86_64
[root@localhost ~]cat /etc/os-release #查看系统版本
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"

安装

#使用yum下载需要的安装包
[root@localhost ~]yum install -y yum-utils 
Last metadata expiration check: 11:30:39 ago on Sun 26 Sep 2021 02:28:03 AM CST.
Package yum-utils-4.0.18-4.el8.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!
 #设置镜像的仓库,官方文档默认的是国外的,这里用的是国内的
[root@localhost ~]yum-config-manager \\
>     --add-repo \\
>     https://download.docker.com/linux/centos/docker-ce.repo
Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
#更新系统,为了下载最新的docker
[root@localhost ~] yum -y update
Docker CE Stable - x86_64                                                         7.4 kB/s |  15 kB     00:02    
Dependencies resolved.
Nothing to do.
Complete!
#安装docker相关的 docker-ce 社区版 而ee是企业版 containerd.io是容器,因为我已经安装过了
[root@localhost ~]yum install docker-ce docker-ce-cli containerd.io
Last metadata expiration check: 0:01:37 ago on Sun 26 Sep 2021 02:13:27 PM CST.
Package docker-ce-3:20.10.8-3.el8.x86_64 is already installed.
Package docker-ce-cli-1:20.10.8-3.el8.x86_64 is already installed.
Package containerd.io-1.4.9-3.1.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
#启动docker
[root@localhost ~]# systemctl start docker
# 使用docker version查看是否安装成功
[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:53:39 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Fri Jul 30 19:52:00 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

测试hello-word

[root@localhost ~] docker run hello-world
Unable to find image 'hello-world:latest' locally #没有这个镜像,需要从外网下载
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:393b81f0ea5a98a7335d7ad44be96fe76ca8eb2eaa76950eb8c989ebf2b78ec0
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/ #下载的真实地址
 
#查看一下下载的这个hello-world镜像
[root@localhost ~]docker images
REPOSITORY    TAG       IMAGE ID       CREATED      SIZE
hello-world   latest    feb5d9fea6a5   2 days ago   13.3kB

卸载

#1. 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
#2. 删除资源
rm -rf /var/lib/docker
# /var/lib/docker 是docker的默认工作路径!

docker学习笔记——docker安装启动(代码片段)

...器虚拟化的优缺点2.容器所涉及内核技术NameSpceCGroups二、Docker安装和基本使用1.获取yum源2.安装docker-ce3.启动docker一、虚拟化分类1.主机虚拟化和容器虚拟化的优缺点主机虚拟化应用程序运行环境强隔离虚拟机操作系统与底层操作... 查看详情

docker学习笔记——docker安装启动(代码片段)

...器虚拟化的优缺点2.容器所涉及内核技术NameSpceCGroups二、Docker安装和基本使用1.获取yum源2.安装docker-ce3.启动docker一、虚拟化分类1.主机虚拟化和容器虚拟化的优缺点主机虚拟化应用程序运行环境强隔离虚拟机操作系统与底层操作... 查看详情

docker基础学习笔记

...里面可以有多个镜像,每个镜像可以生成多个容器。 docker属于C/S结构支持三种连接方式:unix:///var/run/docker.socktcp://host:portfd://socketfd docker在Centos7安装1、yum安装docker  查看详情

docker学习笔记docker基础操作实,docker仓库数据卷,网络基础学习

Docker学习笔记【3】Docker仓库实操,创建私有仓库,实操数据卷、数据卷容器,实操网络基础 ---------高级网络配置和部分实战案例学习=============================================================Docker学习笔记【1】Docker相关概念,基本操作... 查看详情

docker学习笔记之docker安装配置使用

简介Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、baremetal、OpenStack集群和其他的基础... 查看详情

docker学习笔记-安装(代码片段)

Docker学习笔记基础概念/名词解释准备工作安装启动Docker服务Docker常用命令卸载参考资料基础概念/名词解释名词说明image镜像docker封装好的一个模板,里面是一个可运行的服务,以及运行此服务所需要的依赖环境。container... 查看详情

docker学习笔记-安装(代码片段)

Docker学习笔记基础概念/名词解释准备工作安装启动Docker服务Docker常用命令卸载参考资料基础概念/名词解释名词说明image镜像docker封装好的一个模板,里面是一个可运行的服务,以及运行此服务所需要的依赖环境。container... 查看详情

docker学习笔记(1-5)安装docker启动和停止docker

Docker学习笔记(1-5)安装docker、启动和停止docker Docker只支持64位,ubuntu、centos、redhat、macos、windows Linux内核版本>3.10,检查版本:#uname-ix86_64#uname-r 3.13.0.40-generic ubuntu系统上用apt-get安装软件 #更新仓库 查看详情

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

技术资料docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔记:http://www.open-open.com/lib/view/open1423703640748.html 深入浅出docker:http://www.infoq 查看详情

docker学习docker概述及安装(代码片段)

1、Docker介绍Docker官网:https://www.docker.com/Docker文档地址:https://docs.docker.com/Docker仓库地址:https://hub.docker.com/Docker是一个开源的应用`容器引擎`,让开发者可以打包自己的应用和依赖到一个可移植的`镜像&# 查看详情

docker学习笔记(代码片段)

Docker概述开发、上线两套环境,应用环境、应用配置集群隔离,docker核心思想,打包装箱,每个箱子是相互隔离的轻巧基于Go语言开发,开源虚拟机技术:虚拟出一套硬件,运行一个完整的操作系统ÿ... 查看详情

docker学习笔记

基础知识与准备:一、基础知识:1.Dockerruntime  runtime是容器真正运行的地方。借助JAVA中JVM的概念来理解。  lxc、runc、rkt是目前主流的三种容器runtime。  lxc是Linux上老牌的容器runtime。Docker最初也是用lxc作为runtime的。  r... 查看详情

docker学习笔记(代码片段)

Docker概述类似集装箱隔离,jar—容器(mysql,redis)----发布到仓库-----从仓库下载Docker历史2010年dotcloud公司成立2013Docker开源2014年4月9日,Docker1.0发布在此之前都是用的虚拟机基于go语言开发Docker安装#卸载旧版本yumremo... 查看详情

docker学习笔记(99-1)centos6.8上安装docker

一、升级操作系统,准备工作1、检查linux内核版本号和是否支持aufs[[email protected]~]#uname-r2.6.32-642.el6.x86_64[[email protected]~]#grepaufs/proc/filesystems3.1以后才支持 2、升级linux内核,安装aufsyum安装带aufs模块的3.10内核(或到这... 查看详情

docker学习笔记--如何安装docker

...址:http://blog.csdn.net/we_shell/article/details/38352837 1.前言Docker的英文本意是“搬运工”,在程序员的世界里,Docker搬运的是集装箱(Container),集装箱里装的是任意类型的App,开发者通过Docker可以将App变成一种标准化的、... 查看详情

docker学习笔记总结(代码片段)

文章目录1.卸载docker服务步骤(实用!!)2.docker私有库3.容器数据卷的使用4.容器卷和主机互通互联5.容器卷ro和rw读写规则6.卷的继承和共享7.docker安装tomcat8.docker安装mysql8.1运行mysql容器8.2dockermysql容器卷配置(非常重要)8.3docke... 查看详情

docker学习笔记什么是docker

Docker学习笔记(一)什么是Docker Docker:容器技术是虚拟化技术的一种,是操作系统的虚拟化。 传统硬件虚拟化:虚拟硬件,事先分配资源,在虚拟的硬件上安装操作系统,虚拟机启动起来以后资源就会被完全占用。操作... 查看详情

docker概述与安装(官网译)(代码片段)

1、Docker概述原文地址:https://docs.docker-cn.com/engine/docker-overview/#docker-engineDocker是一个开发,集装,运行应用程序的开放平台。Docker使您可以将应用程序与基础架构分离,以便快速交付软件。使用Docker,您可以像管理应用程序一样... 查看详情