Docker入门安装、镜像与容器下载 —— 基本操作

目录

前言

Docker

[1. docker介绍](#1. docker介绍)

[2. docker安装](#2. docker安装)

[3. docker基本使用](#3. docker基本使用)

[3.1 镜像下载](#3.1 镜像下载)

[3.2 操作容器](#3.2 操作容器)


前言

**虚拟机:基于主机(物理机或虚机)的多服务实例。**在该模式下,软件开发人员可以提供单个或多个物理机或虚机,同时在每个主机上运行多个服务实例。 此模式有几种不同的实现形式,其中包括:将每一个服务实例都作为一个单独的进程,或是在同一进程 中运行多个服务实例。

**Docker:基于容器的服务实例。**在这种部署模式下,每个服务实例都运行在其各自的容器中,因此也被称为操作系统级别的虚拟化机制。

使用这一模式时,用户将服务打包为容器镜像。每个容器镜像就是一个文件系统镜像,由应用和运行服 务所需的库构成。有的容器镜像还包括完整的 Linux 根文件系统,有的则更轻量。 以部署 Java 服务为例,构建的容器镜像包括 Java 运行时、Apache Tomcat 服务器、以及编译好的 Java 应用。

一旦将服务打包为容器镜像,就启动一到多个容器。通常每个物理机或虚拟主机上会运行多个容器,会用到 Kubernetes 或 Marathon 这样的集群管理工具来管理容器。 集群管理工具把主机看做资源池,根据每个容器需要的资源和每个主机上可用的资源来调度容器。 容器的优点与虚拟机类似,服务实例之间完全隔离,也能轻松监控每个容器的资源消耗 。

Docker

1. docker介绍

Docker是一种开源的容器化平台,它可以让开发者将应用程序及其所有依赖项打包到一个轻量级、可移植的容器中,并在任何地方运行这些容器,无论是在开发、测试还是生产环境中。Docker使用了Linux容器技术来实现这个功能,通过隔离进程、文件系统和网络空间等资源,使得容器内的应用程序可以独立于宿主操作系统而运行。

Docker三要素 :

  1. **Docker仓库:**集中存放镜像文件的场所。 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。 最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。
  2. **Docker镜像:**一个只读的模板,其中包含了应用程序及其所有依赖项、运行时环境、库和配置文件等。( Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载 一 个已经做好的镜像来直接使用 )
  3. Docker容器: 指从Docker镜像创建的运行实例,它可以被启动、停止、重启、删除等。

虚拟机与容器的区别:

  • **VM(VMware)**在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓 库,然后再安装应用;
  • **Container(Docker容器)**在宿主机器、宿主机器操作系统上创建Docker引擎,在引擎的基础上再安装 应用。

2. docker安装

Docker的安装是在虚拟机上操作的,需要的请看👉 http://t.csdnimg.cn/5AVjw
旧版本的docker叫做docker或者docker-engine,如果有安装,先卸载其以及其依赖,新版本的 docker叫做docker-ce

  • docker-ce(社区版,免费)
  • docker-ee(专业版,收费)

1、安装必要的系统工具:

 yum install -y yum-utils device-mapper-persistent-data lvm2

2、配置阿里云Docker Yum源:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

**更新yum缓存:**yum makecache fast

3、安装docker-CE

yum -y install docker-ce

1)默认安装的是最新版本的稳定版

2)查看版本列表请使用如下命令:

yum list docker-ce --showduplicates | sort -r

3)如果要安装特定版本的 docker-CE 请使用如下命令格式:

yum install docker-ce-

3. docker基本使用

  • 查看服务状态

    systemctl status docker

  • 启停服务

    systemctl start docker

    systemctl stop docker

    systemctl restart docker

  • 开机自启

    systemctl enable docker

    systemctl disable docker

  • 查看宿主机上的镜像

    docker images

3.1 镜像下载

不用科学我们下载镜像是非常慢的,所以要配置一个加速器:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

安装好之后再进行查看:

接着下载所需的镜像:

docker pull 镜像名

获取一个 centos 系统的基础镜像可以使用如下的命令:

docker pull centos (未指定版本一般会使用latest(最新的)版本)

docker pull centos:版本号 (或者直接指定版本)

下载Nginx镜像:

再次查看镜像就有东西了:

镜像基本操作:

  • docker rmi 镜像ID/标签

    docker rmi centos
    docker rmi -f centos:latest

如果提示镜像被使用,需要先停止某个ID的容器,那么要先删除容器再删除镜像。或者强制删除镜像。

正确做法:先删除依赖该镜像的所有容器, 再来删除镜像

  • 重新加载daemon

    systemctl daemon-reload

  • 重启docker

    systemctl restart docker

  • 搜索镜像

    docker search 镜像名称

3.2 操作容器

  • 容器是Docker的另一个核心概念。简单来说,容器是镜像的一个运行实例。
  • 镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态
  • 创建容器
docker create -it centos:latest
docker create -it --name centos01 centos:latest

centos:latest即镜像名字:版本(或镜像ID),将使用指定镜像创建容器。

另外,Docker会检查本地是否存在指定的镜像,不存在就从公有仓库下载

-it: 是两个参数,-i:interactive容器具有交互功能,-t:容器将提供伪终端
**--name:**指定生成的容器的名字,允许空,如果不指定会自动生成

  • 查看当前的容器

    docker ps
    docker ps -a

  • 删除容器

    docker rm 容器ID
    docker rm -f 容器ID
    docker rm -f $(docker ps -aq)

  • 进入容器

    docker exec -it 容器ID/容器NAME /bin/bash
    docker exec -it 容器ID/容器NAME bash (简写)
    docker exec -it 容器ID/容器NAME sh (简写)

  • 启动、停止、重启容器

    docker start 容器ID|name|name:tag
    docker stop 容器ID|name|name:tag
    docker restart 容器ID|name|name:tag

  • 退出容器

退出时如果想继续运行容器:按顺序按【ctrl+p + q】

如果不想继续运行:按【ctrl+d】或输入exit

相关推荐
爱上语文1 小时前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
serve the people1 小时前
springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
java·spring boot·后端
m0_609000421 小时前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
qmx_072 小时前
HTB-Jerry(tomcat war文件、msfvenom)
java·web安全·网络安全·tomcat
小安运维日记2 小时前
Linux云计算 |【第四阶段】NOSQL-DAY1
linux·运维·redis·sql·云计算·nosql
为风而战2 小时前
IIS+Ngnix+Tomcat 部署网站 用IIS实现反向代理
java·tomcat
技术无疆4 小时前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入
m0_741768855 小时前
使用docker的小例子
运维·docker·容器
学习3人组6 小时前
CentOS 中配置 OpenJDK以及多版本管理
linux·运维·centos
厨 神6 小时前
vmware中的ubuntu系统扩容分区
linux·运维·ubuntu