Docker的安装和基本命令使用详解

目录

1、docker简介

1.1、docker基本介绍

 1.2、容器与虚拟机比较

2、docker安装

2.1、安装基本环境

2.2、Docker的基本组成

2.3、安装docker

2.4、卸载docker

2.5、配置阿里云镜像加速器

2.6、helloworld示例

3、docker的常用命令

3.1、帮助启动类命令

3.2、镜像命令

3.2.1、列出本机主机上的镜像

3.2.2、搜索镜像

3.2.3、拉取镜像

3.2.4、查看镜像/容器/数据卷所占空间

3.2.5、删除镜像

3.3、容器命令

3.3.1、启动/停止/删除容器

3.3.2、列出当前正在运行的所有容器

3.3.3、退出容器

3.3.4、进入容器

3.3.5、容器导入导出(备份)

1、docker简介

1.1、docker基本介绍

1、docker解决的问题

  • 在传统的软件开发中,任务安装配置环境非常复杂,且过程冗余重复,尤其是在跨平台时软件的移植,部署;即便如此,仍然常常发生部署失败的状况。Docker的出现使得Docker得以打破过去「程序即应用」的观念。透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。

2、docker的优势

  • Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。
  • Linux容器技术的出现就解决了跨平台的问题,而 Docker 就是在它的基础上发展过来的。将应用和服务打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,可以一键部署到其他服务器,大大简化了操作。
  • 总结:解决了运行环境和配置问题的软件容器, 方便做持续集成并有助于整体发布的容器虚拟化技术。
  • 容器的优势:
    • 一次构建、随处运行
    • 更快速的应用交付和部署
    • 更便捷的升级和扩缩容
    • 更简单的系统运维
    • 更高效的计算资源利用

 1.2、容器与虚拟机比较

1、传统虚拟机技术

  • 虚拟机(virtual machine)本质就是带环境安装(虚拟底层系统的软硬件资源)的一种解决方案。
    • 它可以在一种操作系统里面运行另一种操作系统,比如在Windows10系统里面运行Linux系统CentOS7。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。
    •   传统虚拟机技术是基于安装在主操作系统上的虚拟管理系统(如:VIrtualBox、VMWare等),创建虚拟机(虚拟出各种硬件),然后在虚拟机上安装操作系统,并在操作系统上安装部署各种应用。
  • 虚拟机的缺点:
    • 资源占用多
    • 冗余步骤多 
    • 启动慢

2、docker安装

docker官网:Docker: Accelerated Container Application Development

Docker Hub(仓库)官网: https://hub.docker.com/

2.1、安装基本环境

  • 目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上;
  • 要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.x,虚拟运行内存至少4G。
  • 查看centOS版本
    • 命令:cat /etc/redhat-release
  • 查看系统相关信息
    • 说明:uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)
    • 命令:uname -r

2.2、Docker的基本组成

  • 镜像(image)
    • Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
    • 它也相当于是一个root文件系统。比如官方镜像 centos:7 就包含了完整的一套 centos:7 最小系统的 root 文件系统。
    • 相当于容器的“源代码”,docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。
  • 容器(container)
    • 1、从面向对象角度
      • Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。
      • 就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。
      • 容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
    • 2、从镜像容器角度
      • 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
  • 仓库(repository)
    • 仓库(Repository)是集中存放镜像文件的场所。
    • 类似于:
      • Maven仓库,存放各种jar包的地方;
      • github仓库,存放各种git项目的地方;
      • Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。
    • 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
      • 公有仓库:最大的公开仓库是 Docker Hub(https://hub.docker.com/), 存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等

2.3、安装docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

  • 2、yum安装gcc相关

yum -y install gcc
yum -y install gcc-c++

  • 3、安装需要的依赖工具包

 sudo yum install -y yum-utils

  • 4、设置stable镜像仓库,推荐使用国内镜像源,使用官网的镜像源可能出现连接失败,超时的情况

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

  • 5、更新yum软件包索引

yum makecache fast

  • 6、安装docker

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

  • 7、启动docker

 systemctl start docker

  • 8、查看docker是否安装成功

docker version

2.4、卸载docker

  • 卸载命令如下

# 关闭docker服务
systemctl stop docker
# 卸载docker
yum remove docker-ce docker-ce-cli containerd.io
# 删除docker相关文件
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

2.5、配置阿里云镜像加速器

  • 2、复制脚本直接执行

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://vvfbuv5q.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2.6、helloworld示例

  • 1、启动docker运行容器hello-world

doucker run hello-world

  • 输出这段提示以后,hello world就会停止运行,容器自动终止

3、docker的常用命令

3.1、帮助启动类命令

启动docker: systemctl start docker

停止docker: systemctl stop docker

重启docker: systemctl restart docker

查看docker状态: systemctl status docker

开机启动: systemctl enable docker

查看docker概要信息: docker info

查看docker总体帮助文档: docker --help

查看docker命令帮助文档: docker 具体命令 --help

3.2、镜像命令

3.2.1、列出本机主机上的镜像

docker images
OPTIONS说明:
-a :列出本地所有的镜像(含历史映像层)
-q :只显示镜像ID。

  • 各个选项说明:

REPOSITORY:表示镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

特别说明:
同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,使用 REPOSITORY:TAG 来定义不同的镜像。
如果不指定一个镜像的版本标签,例如只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

3.2.2、搜索镜像

docker search [OPTIONS] 镜像名字

OPTIONS说明:
--limit : 只列出N个镜像,默认25个;示例:docker search --limit 5 redis

  • 各个选项说明:

NAME:镜像名称
DESCRIPTION:镜像说明
STARS:点赞数量
OFFICIAL:是否是官方的
AUTOMATED:是否是自动构建的

3.2.3、拉取镜像

# 拉取最新版本的镜像,没有tag就是拉取最新版本
docker pull XXX   XXX表示具体镜像名称 示例:docker pull ubuntu
等价于
docker pull XXX:latest

# 拉取指定版本的名称
docker pull XXX:TAG TAG表示镜像的版本号 示例:docker pull redis:6.0.8

3.2.4、查看镜像/容器/数据卷所占空间

docker system df

3.2.5、删除镜像

# 删除单个镜像
docker rmi -f 镜像名称/镜像ID

# 删除多个镜像
docker rmi -f 镜像名1:TAG 镜像名2:TAG

# 删除所有镜像
docker rmi -f $(docker images -qa)

3.3、容器命令

3.3.1、启动/停止/删除容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明(常用):有些是一个减号,有些是两个减号
--name="容器新名字"       为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);但实际是容器运行了然后又自动退出了
 
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用; 也即启动交互式容器(前台有伪终端,等待交互);
 
-P: 随机端口映射,大写P
-p: 指定端口映射,小写p

示例:

  • 1、启动交互式容器

docker run -it ubuntu /bin/bash 

说明:使用镜像ubuntu:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
参数详细说明:
-i: 交互式操作。
-t: 终端。
ubuntu : ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,希望有个交互式 Shell,因此用的是 /bin/bash。
要退出容器,直接输入 exit;容器停止

  • 2、停止、重启容器

# 停止容器
docker stop 容器ID或者容器名

# 强制停止容器
docker kill 容器ID或容器名

# 启动已停止运行的容器
docker start 容器ID或容器名

# 重启容器
docker restart 容器ID或者容器名

  • 3、删除容器

# 删除运行中的容器
方式一:先停止容器再删除

docker stop 容器ID/容器名
docker rm  容器ID/容器名

方式二:强制删除
docker rm -f  容器ID/容器名 【注意:rmi 表示删除镜像】

3.3.2、列出当前正在运行的所有容器

docker ps [OPTIONS]

OPTIONS说明(常用):  
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n :显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
无参数:直接列出当前正在运行的所有容器

3.3.3、退出容器

  • 1、退出并停止容器运行

# 在容器里面执行
exit

  • 2、退出但不停止容器运行

# 在容器里面操作
ctrl + p + q

3.3.4、进入容器

  • 1、启动守护式容器(后台服务器)

docker run -d 容器名  -d:指定容器的后台运行模式

  • 问题:然后docker ps -a 进行查看, 会发现容器已经退出
    • 特别说明:Docker容器后台运行,就必须有一个前台进程;注意有些容器可以使用-d参数启动,实现后台运行;有些容器不能使用-d参数启动
      • 如:ubuntu不能使用-d参数启动;redis可以使用-d参数启动
    • 原因分析:
      • docker机制:容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),会自动退出
      • 比如web容器,以nginx为例,正常情况下, 配置启动服务只需要启动响应的service即可。例如service nginx start ;
      • 但是,docker这样做,docker为后台进程模式运行,就导致docker前台没有运行的应用,这样的容器后台启动后,会立即自杀因为他觉得他没事可做了,所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行, 常见就是命令行模式,表示还有交互操作,不要中断。
    • 解决方式:使用前台交互式方式启动,如:docker run -it redis:6.0.8 【此列的redis启动也可以使用-d参数】
  • 2、查看运行中容器日志

docker logs 容器ID

  • 3、查看容器中运行的进程

docker top 容器ID

  • 4、查看容器内部细节(包括停止和运行中的容器)

docker inspect 容器ID

  • 5、进入正在运行的容器并以命令行交互(推荐)
    • exec 是在容器中打开新的终端,并且可以启动新的进程 用exit退出,不会导致容器的停止。

docker exec -it 容器ID bashShell

  • 6、重新进入容器
    • attach 直接进入容器启动命令的终端,不会启动新的进程 用exit退出,会导致容器的停止。

docker attach 容器ID/容器NAME

3.3.5、容器导入导出(备份)

  • 说明:将容器导出到当前主机,或将容器导入到当前的主机的docker中,实现容器备份。

1、导出容器

  • export 导出容器的内容留作为一个tar归档文件[对应import命令]

docker export 容器ID > 文件名.tar 【默认导入到当前的文件目录下】

2、导入容器

  • import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export] 【注意:导入的是一个镜像】

cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值