在docker上调用宿主机硬件_docker

一、docker介绍

容器是隔离的环境中运行的一个进程,如果进程结束,容器就会停止,

容器的隔离环境,拥有自己的IP地址,系统文件,主机名,进程管理

(一)、容器和虚拟机的区别

虚拟机

硬件cpu支持(vt虚拟化),模拟计算硬件,走正常的开机启动

启动流程

bios开机自检--根据bios启动项--读取硬盘第一个扇区grub,uefi, centos7, 加载内核,启动系统第一个进程/sbin/init systemd

容器

不需要硬件cpu的支持,共用宿主机内核,启动容器的第一个进程

(二)、docker主要内容

docker是一个cs架构, docker主要内容:镜像 容器 仓库 网络 存储 监控

docker是一个软件的打包技术

docker镜像官方仓库

Docker Hub

(三)、docker 命令分组

docker image 镜像命令

docker container 容器命令

docker volume 卷命令

docker network 网络命令

(四)、容器的作用

在docker上调用宿主机硬件_docker_第1张图片

docker使用客户端-服务端(C/S)架构模式,使用远程API来管理和创建docker容器

docker容器通过docker镜像来创建

(五)、容器优势

启动快,性能高,损耗少,轻量级

持续集成、版本控制、可移植性、隔离性和安全性

二、docker系统架构

镜像(images)

Docker镜像是用于创建Docker容器的模板。

容器(Container)

容器是独立运行的一个或一组应用。

客户端(Client)

docker客户端通过命令行或者其他工具使用Docker API与Docker的守护进程通信。

主机(Host)

一个物理或者虚拟机的机器用于执行Docker守护进程和容器。

仓库(Registry)

Docker仓库用来保存镜像,可以理解为代码控制中的代码仓库。

Docker Hub提供了庞大的镜像集合供使用。

Docker Machine

Docker Machine是一个简化Docker安装命令的命令行工具,

通过一个简单的命令行即可在相应的平台上安装Docker,

比如VirtualBox、Digital Ocean、Microsoft Azure。

在docker上调用宿主机硬件_docker_第2张图片

三、docker安装

环境准备

98bea620739c5bee2ed6f598b07b9cc2.png

第一步:安装docker-ce

1、下载yum源

wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo

2、优化yum源

sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

3、下载docker

yum install docker-ce -y

第二步:启动docker

systemctl enable docker
systemctl start docker

第三步:验证(查看docker版本信息)

docker version 

四、docker日常管理

(一)、docker镜像管理

docker镜像加速

1、编写指定文件daemon.json(默认不存在)

vim /etc/docker/daemon.json

{
    "registry-mirrors": [
        "https://registry.docker-cn.com"
    ]
}

2、重启docker服务

systemctl restart docker

2、管理命令

搜索镜像(优先选官方,stars数量多)

docker search php
#命令         镜像名称

拉取镜像(下载镜像,注意版本)

docker pull httpd:latest
#命令       镜像名称:版本

推送镜像(上传镜像)

docker container commit nginx centos6.9_nginx:v1
#命令                    容器 名称  镜像名称:版本

查看镜像属性

docker image inspect centos:6.9
#命令                   镜像名称

导入镜像

docker image load -i docker_nginx.tar.gz 
#命令         导入      镜像路径
docker image import  docker_nginx.tar.gz 
#命令         导入

import导入: 不会导入镜像的名称和版本

load导入 : 会导入镜像的名称和版本

导出镜像

docker save centos:7 -o /tmp/docker_centos7.tar.gz
#命令       镜像    导出   导出位置

查看本地镜像列表

docker image ls

删除镜像

docker image rm centos:6.9
#命令            镜像名称

删除所有镜像

docker rmi -f $(docker images -q)

给镜像打标签

docker image tag 026818835a64 oldboy:v1
#命令             镜像ID       镜像名称:版本

清理镜像

docker image prune

(二)、docker容器管理

创建并启动容器

docker  run -d  -p 80:80  --name web01 nginx:latest 

-d #后台运行容器

-p #进行端口映射(宿主机端口:容器服务端口)

--name #指定容器名称

nginx:latest #镜像名称:版本

创建并进入容器

docker run -it centos:6.9 /bin/bash

-it #分配一个交互式终端

创建容器

docker container create --name web04 nginx:latest

--name #创建容器时指定容器名称,如果不指定,系统自动生成

nginx:latest #镜像名称:版本(必须指定)

启动容器

docker container start web03 
#命令                   容器名称

停止容器

docker container stop web03 

重启容器

docker container restart web03 

强制停止容器

docker container kill web03 

显示容器相对于镜像的改变

docker diff web01

查看容器列表

docker ps -a -q

-a #查看所有容器,长格式显示

-q #只显示容器ID

-l #只显示最后一个容器

不加-a只查看挂起或者启动状态的容器

查看容器状态

docker stats 

--no-stream #只显示一次的状态信息

删除容器

docker container rm web03 
docker container rm -f web03 

-f #强制删除

批量删除所有容器:docker rm -f `docker ps -a -q`

清理容器

docker container prune

查看容器状态

docker inspect web02

查看容器日志

docker logs web02

进入正在运行的容器(分配一个新终端)

docker exec -it web /bin/bash

进入正在运行的容器(使用相同的终端)

偷偷离开的快捷键ctrl +p松开再按ctrl +q

docker container attach web01

docker端口映射

-p 宿主机端口:容器端口

docker  run -d  -p 80:80  --name web01 nginx:latest 

-p 宿主机ip1:宿主机端口:容器端口 (多个容器同时使用80端口)

docker run -d -p 10.0.0.12:85:80 nginx:latest

-p 宿主机ip1::容器端口 随机端口映射

docker run -d -p 10.0.0.12::80 --name web01 nginx:latest

-p 宿主机ip1::容器端口/udp 使用udp协议做随机端口映射

docker run -d -p 10.0.0.12::80/udp nginx:latest

-p 80:80 -p 3306:3306

docker run -d -p 10.0.0.12::80 -p 10.0.0.13::8080 --name web03 nginx:latest

-p 1111-1119:1111-1119 端口范围映射

docker run -d -p 90-95:70-75 --name web04 nginx:latest

-P 自动随机端口映射

docker run -d -P --name web05 nginx:latest 

你可能感兴趣的:(在docker上调用宿主机硬件)