文章目录
一、Docker概述
Docker是什么
- 是一种轻量级的“虚拟机”
- 在Linux容器里运行应用的开源工具
Docker与虚拟机的区别
docker | 虚拟机 | |
---|---|---|
资源 | 少 | 多 |
启动时间 | 短,十几毫秒 | 长,几分钟 |
安全 | 共享内核,不安全 | 系统逻辑隔离,安全 |
服务 | 一个容器只跑一个服务 | 可以运行多个服务 |
Docker的使用场景
- 打包应用程序简化部署
- 可脱离底层硬件任意迁移
- 例:服务器从腾讯云迁移到阿里云
二、安装Docker
Docker的核心概念
- 镜像
- 一个面向Docker容器引擎的只读模板
- 容器
- 从镜像创建的运行实例
- 仓库 (分:公、私–harbor)
- 集中保存镜像的地方
安装方式
- CentOS安装Docker的两种方式
- 使用CURL获得Docker的安装脚本进行安装
- 使用YUM 仓库来安装Docker
==具体操作请看我的另一个博客==https://blog.youkuaiyun.com/ycycyyc_/article/details/108695756
三、Docker镜像创建与操作
3.1 Docker镜像操作
查看docker版本
docker version
或
docker -v
搜索nginx镜像(公有仓库)
docker search 关键字
下载nginx镜像
-
AUFS(联合文件系统)若干层下载,存储在多个节点
-
下载后存放在 /var/lib/docker
-
/var/lib/docker/image/overlay/repositories.json //下载文件信息
docker pull 仓库名称[:标签]
查看镜像列表
docker images 仓库名称[:标签]
获取镜像信息
docker inspect 镜像ID号
或者
docker inspect 仓库名称[:标签]
添加新标签
- 并不是修改,而是增加了一个新标签,ID是一样的,删除其中一个,不会影响另一个
docker tag 名称[:标签] 新名称[:新标签]
例:
docker tag nginx:latest nginx:web
删除镜像
- i:image镜像、如果有别名镜像存在(不同标签),只留下一个,不然无法删除
docker rmi 仓库名称[:标签]
或
docker rmi 镜像ID号
存出镜像命名
docker save -o 存出文件名 存出的镜像
例:
docker save -o /opt/nginx nginx:latest ##存出镜像命名为nginx存在/opt目录下
载入镜像
docker load < 存出文件名
或
docker load --input 存出文件名
例:
docker load < /opt/nginx ##导回来
上传镜像
docker push 仓库名称[:标签]
例:
docker push abner/nginx:web
3.2 Docker容器操作
容器创建
- -i: 让容器的标准输入保持打开
- -t: 让Docker分配一个伪终端
docker create [选项]镜像运行的程序
例:
docker create -it nginx:latest /bin/bash
查看容器运行状态
- -a:列出所有的容器,包括未运行的容器
docker ps -a
启动容器
docker start 容器的ID/名称
创建容器并启动执行shell命令
- 执行完成后直接关闭,状态是Exited
docker run [选项]镜像运行的程序 执行的命令
例:
docker run paigeeworld/centos:7 /usr/bin/bash -c ls / ##查看容器里有没有centos7,没有就下载,查看里面有什么(一次性任务)
- -d:持续在后台执行
docker run -d paigeewold/centos:7 /bin/bash -c "while true;do echo hello;done"
进入容器
docker exec [选项]容器的ID/名称 /bin/bash
例:
docker exec -it 5d85d07f322e /bin/bash
导出容器
docker export 容器的ID/名称 > 文件名
例:
docker export bf4eff9c5a06 > /opt/nginx_c
导入容器
- 导入文件一定要是模板文件
cat 文件名| docker import -生成的镜像名称:标签
例:
cat nginx_c | docker import - nginx:web
删除容器
- 运行中的容器不能删除,先关闭,再删
docker rm [选项]容器的ID/名称
批量删除容器
docker ps -a | awk '{print "docker rm "$1}' | bash