当前位置:   article > 正文

认识Docker及基本管理_docker容器技术可以在一台主机上轻松地为任何应用创建一个()、()、()的容器。

docker容器技术可以在一台主机上轻松地为任何应用创建一个()、()、()的容器。

一、了解Docker

1.1 什么是 Docker

  • 是一种轻量级的“虚拟机”

  • Linux容器里运行应用的开源工具

如果要方便的创建运行在云平台上的应用,必须要脱离底层的硬件,同时还需要任何时间地点可获取这些资源,这正是 Docker 所能提供的。Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大的提高了工作效率。

 

1.2 Docker使用场景

  • 打包应用程序简化部署

  • 可脱离底层硬件任意迁移

1.3 Docker的优势

  • Docker 容器运行速度很快,启动和停止可以在秒级实现,比传统虚拟机要快很多;

  • Docker 更加节省的硬件资源提供给用户更多的计算资源;

  • Docker 容器除了运行其中的应用之外,基本不消耗额外的系统资源,在保证应用性能的同时,又减小了系统开销,使得一台主机上同时运行数千个 Docker 容器成为可能;

  • Docker 操作方便,可以通过 Dockerfile 配置文件支持灵活的自动化创建和部署。

1.4 Docker 容器技术与传统虚拟机的特性的区别

特性Docker 容器虚拟机
启动速度秒级分钟级
计算能力损耗几乎无损耗 50%左右
性能接近原生弱于
系统支持量(单机)上千个几十个
隔离性资源限制完全隔离

1.5 Docker的核心概念

  • 镜像

    一个面向Docker容器引擎的制度模板

  • 容器

    从镜像创建的运行实例

  • 仓库

    集中保存镜像的地方

1.6 Docker安装方式

  • 方式一:yum安装:

 yum install -y yum-utils device-mapper-persistent-data lvm2 
 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 yum -y install docker-ce docker-ce-cli containerd.io
 # 启动服务
 systemctl start docker
 systemctl enable docker
  • 方式二:curl获取官方安装脚本

 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
 # 启动服务
 systemctl start docker
 systemctl enable docker

1.7 Docker镜像

  • 应用发布的标准格式

  • 支撑一个Docker容器的运行

  • 镜像的创建来源

    1. 基于本地模板创建,通过共有仓库或私有仓库,导入操作系统模板文件可以生成镜像

    2. 基于已有镜像创建,通过已有服务来打包镜像。基于现有镜像创建主要使用 docker commit 命令,即把一个容器里面运行的程序以及该程序的运行环境打包起来生成新的镜像

    3. 基于dockerfile创建,通过dockerfile来定制化生成镜像。Dockerfile 是由一组指令组成的文件,其中每条指令对应 Linux 中的一条命令,Docker 程序将读取Dockerfile 中的指令生成指定镜像。

  • 镜像的分层

    • Dockerfile中的每个指令都会创建一个新的镜像层

    • 镜像层将被缓存和复用

    • 当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效

    • 某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效

    • 镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件

二、Docker容器常用命令

  • 搜索镜像

 # 语法:docker search [搜索的镜像名]
 docker search nginx
  • 下载镜像

 # 语法:docker pull [镜像名:标签]  不加标签默认是 latest 最新的
 docker pull nginx
  • 查看本地已有镜像

 # 语法一:
 docker images
 # 语法二:
 docker image ls
 REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
 镜像名称      标签        镜像ID     创建时间   镜像大小   
  • 上传镜像

 # 语法:docker push [镜像文件] 
  • 查看镜像详细信息

 # 语法:docker inspect  [镜像ID]或者[镜像名:标签]
 docker inspect ad4c705f24d3
 docker inspect nginx:latest
  • 更改镜像名字(镜像ID不变)

 # 语法:docker tag [原镜像名:原标签]或[镜像ID]   [新镜像名:新标签]
 docker tag nginx:lateste nginx:kgc
  • 删除镜像

 # 语法:docker rmi  [源镜像名:源标签]或[镜像ID]
 docker rmi nginx:kgc
  • 镜像导出

 # 语法:docker save -o [导出的镜像文件名] [需要导出的镜像:标签]
 docker save -o nginx_latest.tar nginx:latest
  • 镜像导入

 # 语法一:docker load -i [导出的镜像文件]
 # 语法二:docker load < 
 docker load -i nginx_latest.tar
 docker load < nginx_latest.tar
  • 创建容器

 # 语法:docker create -it [选择的镜像:标签] [执行环境]
 -i 让容器的输入保持打开
 -t 让 Docker 分配一个伪终端
 --name 指定容器名
 docker create -it nginx:latest  /bin/bash
  • 查看容器(仅启动的容器)

 # 语法:docker ps
 docker ps
 CONTAINER ID   IMAGE    COMMAND    CREATED     STATUS     PORTS    NAMES
 容器ID          镜像      执行环境    创建时长     启动时长     端口     容器名称             
  • 查看容器(全部,含未启动的容器)

 # 语法:docker ps -a
 docker ps -a
  • 启动容器

 # 语法:docker start [容器ID]或者[容器名称]
 docker start fcdba5ac9ebc
  • 关闭容器

 # 语法:docker stop [容器ID]或者[容器名称]
 docker stop compassionate_rosalind
  • 删除容器

 # 语法:docker rm [容器ID]或者[容器名称]
 docker rm fcdba5ac9ebc
  • 同步创建和启动容器

 # 语法:docker run -dit --name [容器名称]  [-P] [-p 宿主机端口:容器服务端口] [选择的镜像:标签] [执行环境]
 ## 当选择的镜像不存在时会先下载镜像
 --name 指定容器名
 -d 守护进程,后台保持进程
 -p 自定义端口映射
 -P 随机分配端口
 -i 让容器的输入保持打开
 -t 让 Docker 分配一个伪终端
 docker run -dit --name nginx -p 8080:80 nginx:latest /bin/bash
  • 登入容器

 # 语法:docker exec -it [容器名]或者[容器ID] [bash]
 docker exec -it nginx bash
  • shell中执行容器内操作

 # 语法:docker exec -it [容器名]或者[容器ID] [执行动作]
 docker exec -it nginx  ls /root
  • 将容器生成为镜像

 # 语法:docler commit [容器名称]或[容器ID] [生成的镜像名:标签] 
 docker commit kc20_nginx nginx:v1
  • 容器内创建目录

 # 语法:docker run -dit -v [创建文件目录路径名称] --name [容器名称] [选择的镜像:标签] [执行环境]
 -v 表示文件目录(一个-v表示一个目录,每加一个目录都需要前面加一个-v) 
 docker run -dit -v /data/  --name nginx_v1 nginx:latest
  • 将本地目录与容器目录进行挂载(仅在创建容器时执行)

 # 语法:docker run -dit -v [本地文件目录路径]:[容器中的目录路径] --name [容器名称] [选择的镜像:标签] [执行环境]
 docker run -dit -v /data:/var/log/nginx  --name nginx_v1 nginx:latest
  • 容器共享(仅在创建容器时执行)

 # 语法:docker run -dit --volume-from [共享容器的名字] --name [新容器名称] [选择的镜像:标签][执行环境]
 ## 创建容器kgc,并共享web容器
 docker run -dit -v /data1 -v /data2 --name web nginx:latest
 docker run -it --volumes-from web --name kgc nginx:latest /bin/bash
  • 将本地文件复制上传到容器中

 # 语法:docker cp [上传本地文件路径] [容器名称]:[上传到容器内的位置路径]
  • 将容器内的文件下载到本地

 # 语法:docker cp [容器名称]:[容器内文件路径] [下载到本地位置路径] 

三、操作练习

1、下载centos:7.6.1810镜像

 docker pull centos:7.6.1810

2、给这个镜像修改名字叫centos7:kgc

 docker tag centos:7.6.1810  centos7:kgc

3、基于centos7:kgc启动一个名字叫nginx的容器

 docker run -dit --name nginx centos7:kgc 
 ​

4、进入这个nginx容器,在里面安装nginx服务

 # 启动容器
 docker exec -it nginx bash
 # 升级
 yum -y update
 # 安装yum工具
 yum -y install yum-utils
 # 配置nginx的yum源
 vim /etc/yum.repos.d/nginx.repo
 [nginx-stable]
 name=nginx stable repo
 baseurl=http://nginx.org/packages/centos/7/$basearch/
 gpgcheck=1
 enabled=1
 gpgkey=https://nginx.org/keys/nginx_signing.key
 yum -y install nginx
 # 启动nginx
 nginx

5、把这个nginx容器提交为镜像,名字叫nginx:v1、基于nginx:v1镜像启动容器并把宿主机的/data目录挂载到容器的日志目录

 # 将容器导出为镜像
 docker commit nginx nginx:v1
 # 基于nginx:v1镜像启动容器并把宿主机的/data目录挂载到容器的日志目录
 docker run -dit -v /data:/var/log/nginx  -p 9090:80 --name nginx_server nginx:v1 /bin/bash
 curl 172.16.10.10:9090
 ll /data
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/215097
推荐阅读
相关标签
  

闽ICP备14008679号