Docker学习(一):基础理论基础操作
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学习(一):基础理论基础操作相关推荐
- 啃Docker之必备基础管理操作
啃Docker之必备基础管理操作 前言 一:环境准备 二:镜像的常规操作 三:容器的常规操作 前言 对于理论可以看我之前的博客 链接: https://blog.csdn.net/m0_4721994 ...
- Docker学习之基础篇
Docker 为什么会出现Docker?(why) Docker容器虚拟化对比传统虚拟机 Docker三大要素 Docker的安装 配置镜像加速器 Run的流程和Docker原理 Docker的常用命 ...
- 1.Docker学习之基础知识
0x00 Docker 快速入门 1.基础介绍 2.Docker 架构 3.Docker 资源隔离 4.Docker 容器文件系统 0x01 Docker 安装 1. Linux 2. Windows ...
- docker镜像管理基础和操作
#docker镜像管理基础 镜像的概念 镜像可以理解为应用程序的集装箱,而docker用来装卸集装箱. docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动容器. docker ...
- docker学习笔记---基础入门
背景:最近在公司搭建一些公司没有的漏洞环境,接触到docker可以拉取一些公共的漏洞镜像环境,对于搭建漏洞环境很方便,因此学习了下docker的一些入门知识,一些常用的命令分享出来,共勉! 一.认识d ...
- Docker学习之数据卷操作:Day4
数据卷基本操作 数据卷定义 数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录文件. 图解 操作命令语法 docker volume [COMMAND] docker volume命 ...
- OpenCV学习:基础图像操作 (四):绘制几何图形
API简介 //基础数据结构 //点 Point p1=Point(100,100) Point p2; p2.x = 200; p2.y = 300;//矩阵 Rect rect = Rect(20 ...
- 【Docker学习笔记 一】Docker基本概念及理论基础
大约4年前Docker的概念如日中天的时候打算学习学习,就写了一篇Blog,但是由于当时自己的自控力比较差,只写了一篇就烂尾了.现在工作中的应用基本都通过容器化部署到了Docker中,所以也算的上是有 ...
- Docker:学习笔记(1)——基础概念
Docker:学习笔记(1)--基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...
最新文章
- android 如何调用 隐藏的 API 接口
- 成功解决ImportError: [joblib] Attempting to do parallel computing without protecting your import on a sy
- docker 安装redis
- 通过scatter图寻找噪音
- 【总有一些东西要弄清】——说说面试时一系列的CSS问题
- 【渝粤教育】广东开放大学 人工智能 形成性考核 (55)
- JavaOne大事纪:IBM谈OpenJ9和Open Liberty
- 【Python笔记】元组的用法
- 【温故而知新-Javascript】图片效果(图像震动效果、闪烁效果、自动切换图像)...
- 1.UNIX 环境高级编程--UNIX基础知识
- win10 tensorflow 和numpy兼容性问题 No module named ‘numpy.core._multiarray_umath‘
- 使用C#调用P6 Primavera WebService(自建服务IntegrationAPI)
- Facebook内部高效工作指南
- 根据域名快速查询IP
- 超详细—狂神Mybatis笔记
- 全球及中国中线静脉插管行业研究及十四五规划分析报告
- 这5个摸鱼神器太火了!程序员:知道了快删!
- CentOS7 开启 BBR 加速
- python图书管理实训报告总结_图书管理系统心得-总结报告模板
- Jackknife test 是什么