docker基础

docker基础

简介

什么是虚拟化

​ 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。

​ 在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件 对资源充分利用

​ 虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。

docker介绍

  • 是一款在GitHub上维护的一款开源项目

  • 实现了轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。

  • 用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。

  • 基于go语言来实现的;docker ce:免费(目前基本都在用)、docker ee:收费(安全性更高)

为什么要使用docker

  • 使能够
  • 都用同样的docker开发,就不会涉及到版本问题

docker架构

  • 客户端
  • 服务端
  • 仓库

docker安装

  • centos7以上

  • 安装步骤

    sudo yum update  # 跟新yum源
    
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2  # 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
    
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  # 设置yum源为阿里云
        
    sudo yum install docker-ce -y   # 安装docker
    
    docker -v  # 安装后查看docker版本
    docker version  # 查看客户端和服务端版本(看不到服务端版本,服务端没有启动)
    systemctl start docker  # 启动服务端
    # 17之前的都叫老版本,之后的都叫新版本,两者操作不一样
    

加速配置

  • 拉取镜像时,默认是从在国外的远程仓库中获取,耗时非常长,

  • 将镜像源配置成国内的

    # 一开始没有:daemon.json 
    vi /etc/docker/daemon.json 
    # 设置成七牛源(如果启动不了,没有严格按照josn格式,排查一下即可)
    {
    "registry-mirrors": ["https://reg-mirror.qiniu.com"]
    }
    
    # 重启docker服务
    systemctl restart docker 
    
    systemctl stop docker  # 停止docker服务
    systemctl start docker # 启动docker服务
    
    systemctl status docker # 查看docker状态
    systemctl enable docker # 设置成开机启动
    docker info  # 查看docker 概要信息
    

容器和镜像

image-20200328161437278

  • 镜像是构建Docker的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的“构建”部分。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。
  • 就像类和对象的关系一样,一个镜像可以运行出多个容器
  • 容器是真正的执行,容器上运行(操作系统+软件)
  • 镜像:一堆文件,必须要运行起来,成为容器

镜像操作

镜像查找

docker search 镜像名字
https://hub.docker.com/
NAME   DESCRIPTION     STARS    OFFICIAL 
镜像名字   描述          start数   是否是官方

镜像查看

docker images
REPOSITORY   TAG      IMAGE ID         CREATED             SIZE
redis       latest    f0453552d7f2    2 weeks ago         98.2MB
名称         版本      id号             创建时间(发布)        大小

docker images -q  # 列出所有的id号

镜像下载pull

docker pull 镜像名:版本号
docker pull centos # 表示下载最新的,等同于docker pull centos:latest
docker pull centos:7
docker pull centos:centos6.6

镜像删除

docker rmi 镜像名或者id号
docker rmi `docker images -q`  # 一次性删除所有镜像

容器操作

创建与启动容器

docker run  # 创建并启动
docker reate  # 创建
docker start  # 启动
-i:# 表示运行容器
-d:# 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。
-t:# 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。加来的命令都是在容器内执行
--name : # 为创建的容器命名。
-v:# 数据卷:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p:# 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

# 交互式方式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
    
# 守护式方式创建容器:
docker run -di --name=容器名称 镜像名称:标签
    
# 登录守护式容器方式
docker exec -it 容器名称 (或者容器ID)  /bin/bash

查看容器

docker ps  # 查看正在运行的容器
docker ps -a  # 查看所有容器
docker ps -l  # 查看最后一次运行的容器
docker ps -f status=exited  # 查看停止的容器

退出当前容器

exit  # 退出之后容器也就停止了

停止与启动容器

停止容器:

docker stop 容器名称(或者容器ID)

启动容器:

docker start 容器名称(或者容器ID)

文件拷贝

如果我们需要将文件拷贝到容器内可以使用cp命令

docker cp 需要拷贝的文件或目录 容器名称:容器目录

也可以将文件从容器内拷贝出来

docker cp 容器名称:容器目录 需要拷贝的文件或目录

目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
创建容器 添加-v参数 后边为 宿主机目录:容器目录,例如:

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7

如果你共享的是多级的目录,可能会出现权限不足的提示。

这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题

查看容器IP地址

我们可以通过以下命令查看容器运行的各种数据

docker inspect 容器名称(容器ID) 

也可以直接执行下面的命令直接输出IP地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)

删除容器

删除指定的容器:

docker rm 容器名称(容器ID)
posted @ 2020-03-30 22:15  🍞面包🍞  阅读(224)  评论(0)    收藏  举报