1. Docker理论知识

一次搭建,到处运行部署,平滑移植

环境+应用

Docker:体积小、运行快(秒级)、搭建简单、基于宿主机Linux内核

传统虚拟机:体积大、运行(10秒级甚至分钟级)、搭建麻烦、基于宿主机硬件

2. Docker安装与初运行

from:官网&尚硅谷

2.1 删除旧版本

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2.2 设置yum仓库(阿里云docker-ce的yum源)

安装yum-utils包:

sudo yum install -y yum-utils

官网仓库:

sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo

阿里云仓库:

sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.3 安装Docker Engine

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

2.4 启动Docker

#启动
sudo systemctl start docker
#查看进程
sudo ps -ef | grep docker
#查看docker版本
sudo docker version

2.5 启动Docker hello-world

本地无此镜像会从远程镜像库pull,默认访问官网镜像库,未配置镜像加速可能访问失败

踩坑:腾讯云镜像无法拉取hello-world镜像,改为网易成功

http://hub-mirror.c.163.com

sudo docker run hello-world

2.6 配置腾讯云Docker镜像加速

#配置镜像腾讯云加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
#重启docker
sudo systemctl daemon-reload
sudo systemctl docker
#查看docker相关信息
sudo docker info

2.7 卸载Docker Engine

sudo yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

3. Docker命令

3.1 Docker帮助启动类命令

#启动docker服务
sudo systemctl start docker
#停止docker服务
sudo systemctl stop docker
#查看docker服务状态
sudo systemctl status docker
#重启docker服务
sudo systemctl restart docker
#设置docker服务开机自启
sudo systemctl enable docker
#查看docker概要信息
sudo docker info
#docker命令文档
sudo docker --help
#docker具体命令文档
sudo docekr 具体命令 --help

3.2 Docker镜像命令

#查看本地镜像
sudo docker images-a 列出本地所有镜像(包括历史版本镜像层)-q 只显示镜像ID
#查找镜像
sudo docker search 镜像名称--limit 数字 限制规定数量
#拉取镜像
sudo docker pull 镜像名称[:TAG]
#查看镜像/容器/数据卷所占空间
sudo docker system df
#删除镜像
sudo docker rmi 镜像名称/镜像ID-f 强制删除镜像1 镜像2 ... 多删除$(docker images -qa) 全部删除

3.3 容器命令

#拉取Ubuntu镜像
sudo docker search ubuntu
sudo docker pull ubuntu
#启动交互式容器
sudo docker run [OPTIONS] 镜像名 [COMMAND][ARG...][OPTIONS]: --name="新名称" 指定容器新名词-d 后台启动容器并返回容器ID-i 以交互模式运行容器-t 为容器分配一个伪输入终端-it 配合使用 启动交互式容器-P hostPort:containerPort 大写P 随机端口映射-p hostPort:containerPort 小写p 指定端口映射
#启动交互模式的Ubuntu容器,并执行/bin/bash交互式shell命令
sudo docker -it ubuntu /bin/bash
#指定名称
sudo docker run -it --name=myUbuntu1 ubuntu /bin/bash
#列出当前正在运行的容器
sudo docker ps [OPTIONS]-a 列出当前及历时运行过的容器-l 最近创建的容器-n 最近创建的n个容器-q 静默模式 只显示容器编号
#退出容器终端,容器停止
exit
#退出容器终端,容器不停止
ctrl+p+q
#容器操作
sudo docker start 容器Id/容器名
sudo docker restart 容器Id/容器名
sudo docker stop 容器Id/容器名
sudo docker kill 容器Id/容器名
#删除已停止容器
sudo docker rm 容器Id/容器名-f 强制删除-f $(docker -q -a) 删除多个,危险操作
#启动守护式容器,后台运行(需执行挂起的命令,不中断命令)
sudo docker run -d 镜像名 执行命令
sudo docker run -d redis
#查看容器日志
sudo docker logs 容器Id
#查看容器内进程
sudo docker top 容器Id
#查看容器内部细节
sudo docker inspect 容器Id
#进入容器 命令行交互 开启新终端,开启新进程,exit与ctrl+p+q不会导致容器停止,推荐使用
sudo docker exec -it 容器Id /bin/bash
#进入容器方式2 直接进入启动命令终端,不开启新进程,exit导致容器停止,ctrl+p+q不会导致容器停止
sudo docker attach 容器Id
#复制文件 容器->目的主机
sudo docker cp 容器Id:文件路径 目的主机路径
#导出容器为tar归档文件
sudo docker export 容器Id > 文件名.tar
#将容器tar归档文件导入为镜像
cat 文件名.tar | docker import - 用户名/镜像名:版本号

4. Docker镜像分层

联合文件系统UnionFS

通过分层镜像继承

bootFs 镜像最底层是引导文件系统

rootfs

分层为了复用

镜像层只读,容器层可写

内存加载一份base镜像,为所有容器服务

支持通过扩展现有镜像,创建新的镜像

#提交镜像
sudo docker commit -m="提交信息" -a="作者" 容器Id 创建镜像名:[标签名]
#案例:Ubuntu原始镜像添加vim命令
#进入Ubuntu容器更新软件管理、下载Vim命令
sudo apt-get update
sudo apt-get install -y vim
sudo docker commit -m="ubuntu with vim cmd" -a="hsp" 容器Id hsp/ubuntuwithvim:1.0
#本地镜像推送阿里云仓库
#创建命名空间
#创建仓库
#根据脚本push
$ docker login --username=由典铿 registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/peng-h/aliyunhsp:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/peng-h/aliyunhsp:[镜像版本号]
$ docker pull registry.cn-hangzhou.aliyuncs.com/peng-h/aliyunhsp:[镜像版本号]

5. Docker私有库Registry

Docker Registry

#pull私库镜像
sudo docker pull registry
#启动私库容器
sudo docker run -d -p 5000:5000 -v /hsp/myregistry/:/tmp/registry --privileged=true registry
#运行ubuntu
sudo docker run -it ubuntu /bin/bash
#安装net-tools
sudo apt-get update
sudo apt-get install net-tools
ifconfig
#提交为新镜像
sudo docker commit -m="ubantu with ifconfig cmd" -a="hsp" d47137996553 hsp/ubuntuwithifconfig:1.0
#查看私有库所有镜像
sudo curl http://ip:5000/v2/_catalog
#修改daemon.json文件设置私库允许http推送镜像
{"registry-mirrors": ["http://hub-mirror.c.163.com"],"insecure-registries":["192.168.216.118:5000"]
}
#设置标签
sudo docker tag 1a7f4366f331  192.168.216.118:5000/ubuntuwithifconfig:1.0
#推送至私有库
sudo docker push 192.168.216.118:5000/ubuntuwithifconfig:1.0
#再次查看私有库所有镜像
sudo curl http://ip:5000/v2/_catalog
#从私库拉取镜像
sudo docker pull 192.168.216.118:5000/ubuntuwithifconfig:1.0
#运行容器
sudo docker run -it 192.168.216.118:5000/ubuntuwithifconfig:1.0 /bin/bash
#检验 ifconfig
sudo ifconfig

6. Docker容器数据卷

centOS7及以上挂载目录被认为是不安全的行为,记得加 --privileged=true

映射宿主机目录与容器实例目录的映射,完成容器重要数据的备份、持久化与共享

数据卷独立于容器的生命周期,不随容器的删除而删除

#挂载容器卷
docker run -it -v 主机绝对路径:容器路径 --privileged=true 镜像名
#案例 挂载容器实现宿主机与容器实例之间数据的双向共享同步
docker run -it -v /tmp/hostdata:/tmp/dockerdata --privileged=true ubuntu /bin/bash
#查看挂载情况
docker inspect
#添加读写规则,默认rw可读可写 ro只读
docker run -it -v 主机绝对路径:容器路径:ro --privileged=true 镜像名
#继承其它容器容器卷规则,继承的是规则,无关父容器状态
docker run -it --volumes-from 父容器名或Id --privileged=true 镜像名

Docker学习(一):基础理论基础操作相关推荐

  1. 啃Docker之必备基础管理操作

    啃Docker之必备基础管理操作 前言 一:环境准备 二:镜像的常规操作 三:容器的常规操作 前言 对于理论可以看我之前的博客 链接: https://blog.csdn.net/m0_4721994 ...

  2. Docker学习之基础篇

    Docker 为什么会出现Docker?(why) Docker容器虚拟化对比传统虚拟机 Docker三大要素 Docker的安装 配置镜像加速器 Run的流程和Docker原理 Docker的常用命 ...

  3. 1.Docker学习之基础知识

    0x00 Docker 快速入门 1.基础介绍 2.Docker 架构 3.Docker 资源隔离 4.Docker 容器文件系统 0x01 Docker 安装 1. Linux 2. Windows ...

  4. docker镜像管理基础和操作

    #docker镜像管理基础 镜像的概念 镜像可以理解为应用程序的集装箱,而docker用来装卸集装箱. docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动容器. docker ...

  5. docker学习笔记---基础入门

    背景:最近在公司搭建一些公司没有的漏洞环境,接触到docker可以拉取一些公共的漏洞镜像环境,对于搭建漏洞环境很方便,因此学习了下docker的一些入门知识,一些常用的命令分享出来,共勉! 一.认识d ...

  6. Docker学习之数据卷操作:Day4

    数据卷基本操作 数据卷定义 数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录文件. 图解 操作命令语法 docker volume [COMMAND] docker volume命 ...

  7. OpenCV学习:基础图像操作 (四):绘制几何图形

    API简介 //基础数据结构 //点 Point p1=Point(100,100) Point p2; p2.x = 200; p2.y = 300;//矩阵 Rect rect = Rect(20 ...

  8. 【Docker学习笔记 一】Docker基本概念及理论基础

    大约4年前Docker的概念如日中天的时候打算学习学习,就写了一篇Blog,但是由于当时自己的自控力比较差,只写了一篇就烂尾了.现在工作中的应用基本都通过容器化部署到了Docker中,所以也算的上是有 ...

  9. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)--基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

最新文章

  1. android 如何调用 隐藏的 API 接口
  2. 成功解决ImportError: [joblib] Attempting to do parallel computing without protecting your import on a sy
  3. docker 安装redis
  4. 通过scatter图寻找噪音
  5. 【总有一些东西要弄清】——说说面试时一系列的CSS问题
  6. 【渝粤教育】广东开放大学 人工智能 形成性考核 (55)
  7. JavaOne大事纪:IBM谈OpenJ9和Open Liberty
  8. 【Python笔记】元组的用法
  9. 【温故而知新-Javascript】图片效果(图像震动效果、闪烁效果、自动切换图像)...
  10. 1.UNIX 环境高级编程--UNIX基础知识
  11. win10 tensorflow 和numpy兼容性问题 No module named ‘numpy.core._multiarray_umath‘
  12. 使用C#调用P6 Primavera WebService(自建服务IntegrationAPI)
  13. Facebook内部高效工作指南
  14. 根据域名快速查询IP
  15. 超详细—狂神Mybatis笔记
  16. 全球及中国中线静脉插管行业研究及十四五规划分析报告
  17. 这5个摸鱼神器太火了!程序员:知道了快删!
  18. CentOS7 开启 BBR 加速
  19. python图书管理实训报告总结_图书管理系统心得-总结报告模板
  20. Jackknife test 是什么

热门文章

  1. 计算机用户注销后不见了,注销当前用户后 Win10找不到Administrator用户登录选项怎么解决?...
  2. JavaWeb购物车项目二
  3. K-近邻算法(分类算法)
  4. Serverlet简介及理解
  5. liquibase的changelog详解
  6. 制造业大量招程序员,是拧螺丝吗?
  7. Kinect-Unity相关
  8. freetype 使用小结
  9. localhost和127.0.0.1都无法打开的解决方法
  10. 自制Darknet Yolo目标快速标注工具