ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker-01简介

2021-02-23 07:01:05  阅读:139  来源: 互联网

标签:容器 01 简介 ce yum 镜像 Docker docker


Docker-01简介

1.是什么
Docker是一个开源的应用容器引擎,可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任意Linux机器上,及容器虚拟化技术。
Docker容器完全使用沙箱机制,相互之间不会有任何接口,且容器的开销极低。

沙箱机制:
默认情况下,一个应用程序可以访问机器上所有的资源、比如cpu、内存、文件系统、网络等。这是不安全的,如果随意操作资源,就有可能破坏其他应用程序使用的资源,或造成数据泄露。
解决这个问题有两种方案:1)为程序分配一个限定权限的账号,级利用系统的权限机制进行限制;2)为程序提供一个受限的运行环境,即沙箱机制。
沙箱是一个虚拟系统程序,沙箱提供的环境相对于每一个运行的程序都是独立的,而且不会对现有的程序产生影响。

2.干嘛用的
Docker解决的问题:docker解决开发和运维部署间的矛盾,一次封装,到处运行。
传统上,软件开发测试完成后,输出的是程序或那个编译执行的二进制文件,为了让这些程序可以顺利执行,开发团队需要准备完整的部署文件,让运维团队得以部署应用程序,开发团队需要清楚地告诉运维部署团队,用的全部配置文件+所有的软件环境,不过即使如此,仍然时常发生部署失败的情况。Docker镜像的设计,是docker打破程序即应用的观念。透过镜像(images)将作业系统核心除外,运作应用程序所需要的系统环境,由上而下打包,达到应用程序跨平台间的无法接轨运作。

3.Docker优点
Docker与传统虚拟化方式的区别:
1)传统虚拟机技术是虚拟出一套硬件后,在上面运行一套完整系统吗,在该系统上再运行所需要的应用程序,因为要运行一套完整系统,资源浪费比较严重。
2)Docker容器内的应用直接运行于宿主机的内核,容器没有自己的内核,而且容器也没有进行硬件虚拟,因此要比传统虚拟机技术节约资源。
3)Docker每个容器之间相互隔离,每个容器都有自己的文件系统,容器能能之间进程不会相互影响,能区分管理资源。

Docker带来的好处(一次构建,到处运行):1)带环境安装,更快的交付和部署;2)通过镜像运行新的容器,更便捷的升级和扩缩容;3)运行环境和镜像一致,可以通过镜像定位问题,更换镜像解决问题,系统运维更简单;3)是内核的虚拟化,节约资源,更高效的资源利用率。

4.Docker组成

 


 

Docker由客户端、Docker主机、注册中心3部分组成
Docker主机Docker_HOST由容器和镜像组成
注册中心Registry为云端仓库,存有镜像
Docker镜像images是一个个只读的模版,可以用来创建Docker容器,一个镜像可以创建很多Docker容器。
Docker容器Container可以看做是一个简易的Linux系统

Docker命令:
docker pull ,从云端下载镜像到本地
docker run ,由镜像生成一个容器并运行,如果本地镜像不存在,会去往注册中心下载。

5.Docker的安装
以下命令需要使用root权限,如果不是root用户,需要先获取root权限
1)较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,卸载它们:
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2)安装依赖包
yum -y install gcc

yum -y install gcc-c++

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

3)配置yml国内仓库地址
阿里云:
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

清华大学:
yum-config-manager \
    --add-repo \
    https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

4)更yum新软件包索引
yum makecache fast

5)安装Docker
yum install docker-ce docker-ce-cli containerd.io

6)启动服务
systemctl start docker

7)查看docker版本信息
docker version

8)配置阿里云镜像加速器
使用淘宝等账号访问登录:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
如果页面没有开通就进行开通,在左边最下面镜像中心有个镜像加速器,右边有加速器操作文档,选择需要的系统。
复制操作文档下面格式的一段代码直接执行:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xy2bm1t2q.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

上面的代码进行的操作是:
创建配置文件目录:
sudo mkdir -p /etc/docker
创建配置文件并输入配置:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xy2bm1t2q.mirror.aliyuncs.com"]
}
EOF
刷新配置重启docker:
sudo systemctl daemon-reload
sudo systemctl restart docker


6.Docker底层原理
1)Docker的组成
Docker由以下3部分组成:
镜像(image):只读模版,用于生成容器,只能下载上传,可以根据镜像new出n个容器
容器(container):运行我们程序的虚拟的地方
仓库(repository):仓库一般在网上,用于存储镜像

2)底层原理
Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端进行访问,守护进程从客户端接受命令并管理运行在主机上的容器。
容器是一个运行时环境。

7.Docker常用命令
1)帮助命令:
docker info 查看docker的运行信息
docker help 帮助文档

2)镜像命令:
docker images 查看本地镜像
docker search name 从远程仓库查找名称为name的镜像
        参数 -s 数字,列出收藏数不少于多的镜像
docker pull name[:version] 下载镜像,可以通过:version指定版本,不指定默认最新的
docker rmi nameId(或name) 删除名称id为nameId的(或名称为name的)镜像

3)容器命令:
docker run [options] IMAGE [command] [arg ...] 创建并启动容器
        参数说明:
            --name 指定容器的名字
            -d 后台运行容器(demons)
            -i 以交互模式运行容器,通常与-t同时使用
            -t 为容器重新分配一个伪输入端,即一个命令行窗口,常与-i一块使用
            -P随机端口映射
            -p指定端口映射,docker容器内如果要运行程序,占用的是容器内的端口,
                      需要映射到主机的端口才可以访问,映射格式有以下4种:
                        ip:hostPort:containerPort 
                        ip::containerPort
                        hostPort:continerPort  
                        containerPort
                     eg:
        eg:docker run -it centos
        eg:docker run -it --name ct1 centos
        特别说明1:每run一次都重新创建了一个容器。
        特别说明2:docker 容器后台运行,就必须有一个前台进程,否则docker启动容器后会立即再关闭容器(但交互模式除外,即用来-i参数的)
                比如使用命令 docker run -d --name ct4 centos 启动一个centos容器ct4,然后再用后面的ps命令查看ct4这个容器的状态,会发现这个容器启动后仅隔着1秒就停止了。
        docker run name:version 下载并生成指定版本的容器
docker ps [options] 查看正在运行的容器
        参数说明:
            -a:列出氮气所有正在运行的容器+历史上运行的容器
            -l:显示最近创建的容器
            -n:显示最近创建的n个容器,eg: docker ps -n3
exit 停止容器并退出

ctrl+p+q 退出登录,但容器不停止

docker start 容器id或名字 启动已有的容器

docker restart 容器id或名字 重新启动已有的在运行容器

docker stop  容器id或名字 停止在运行容器

docker kill 容器id或名字 强制停止在运行容器

docker rm 容器id或名字 删除容器
        参数说明:
            -f:强制

docker logs 容器id或容器名字  查看容器日志
        参数说明:
             -f 跟随打印最近日志
             -t 加入时间戳
             --tail 数字 显示最后多少行

docker top 容器id或容器名字 查看容器内的运行进程(在容器外面)

进入某个容器并以命令行交互,有多种方式:
        docker exec -it 容器id或容器名称 bashShell  bashShell为bash的全名,在容器中打开新的终端,并可以启动新的进程。
            eg:docker exec -it ct3 /bin/bash
        docker attach   容器id或容器名称 直接进入容器启动命令的终端,不会启动新的进程

docker cp 本地文件路径  容器id或容器名称:容器内目录    拷贝文件到docker


        

 

标签:容器,01,简介,ce,yum,镜像,Docker,docker
来源: https://www.cnblogs.com/ShouWangYiXin/p/14433948.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有