docker的基本组成
概念:镜像(image)、容器(container)、仓库(repository)
安装docker步骤:
1、配置国内的yum源(这里使用的是aliyum)
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
2、配置环境以及安装准备
yum install -y gcc
yum install -y gcc-c++
yum install -y yum-utils
3、配置安装docker内置仓库以及镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、建立缓存加速
yum makecache fast
5、安装dokcer
yum install docker-ce docker-ce-cli containerd.io (首次安装时较慢,请耐心等待)
6、启动docker
systemctl start docker
(卸载docker指令:1、systemctl stop docker
2、yum remove docker-ce docker-ce-cli containerd.io
3、rm -rf /var/lib/docker
4、rm -rf /var/lib/containerd)
配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
加速器地址:
https://xxxxxxxxxxxxx.mirror.aliyuncs.com
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://rxxxxxxxxxx.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
测试docker run hello-world是否运行成功(出现以下截图的表示安装成功正常)
docker run 这个指令做了什么(如图所示)
docker run 会执行两步走
1、docker run 会在本地寻找本地镜像 ==》》找到了就会直接docker run执行 否下一步
docker run会在hup远程仓库寻找镜像,找到了会pull下来 再进行运行 否==》》就会返回报错,没有找到
那么docker 为什么会比VM虚拟机快呢?
docker要比虚拟机要少的抽象层( 无需实现硬件资源虚拟化,而运行docker容器上程序直接使用的是实体物理机上的硬件资源)
docker 使用的是宿主机的内核,而不需要加载操作系统OS内核
docker的常用命令
帮助启动类命令
镜像命令
容器命令
小总结
帮助启动类命令
1)systemctl start docker #启动 docker
2)systemctl stop docker #停止docker
3)systemctl restart docker #重启docker
4)systemctlstatus docker #查看docker
5)systemctl enable docker #开机启动
6)docker info #查看docker 概要信息
7)docker --help #查看docker帮助
docker 具体命令 --help #查看docker命令帮助文档
镜像命令
docker images
1)docker images -a #列出本地所有的镜像 (含历史映像层)
2)docker images -q #只显示镜像ID
3)docker search #寻找名某个xxx镜像名字
4)docker pull #拉取某个镜像名字
5)docker system df #查看镜像/容器/数据卷所占的空间
6)docker rmi #删除某个xx镜像的名字ID
扩展:docker rmi -f 强制删除单个镜像ID
docker rmi -f 镜像名1:TAG 镜像名2:TAG #强制删除多个
docker rmi -f $(docker images -qa) #删除全部镜像
查看镜像显示数量
docker images --limit 5 redis
拉取镜像
docker pull 镜像文件 (如不加版本号则自动下载最新)
什么叫docker的虚悬镜像?
仓库名、标签名都是<none>的镜像,俗称是虚悬镜像dangling image
-- name= "容器新名字" 为容器指定一个个名称
-d: 后台运行容器并返回容器ID,也即启动守护容器(后台运行);
-i :以交互模式运行容器,通常与-t 同时使用
-t : 为容器重新分配一个伪输入终端,通常与-i 同时使用;
也即启动交互式容器(前台有伪终端,等待交互);
-P:随机端口映射,大写P
-p:指定端口映射,小写p
docker run -it Ubuntu /bin/bash #进入容器但名字是随机分配
docker run -it --name=myu1 ubuntu bash #自定义名字启动进入容器
docker ps的使用模式
docker ps 使用指令常用 参数
docker ps -a #列出当前所有正在运行的容器+历史上运行过的
docker ps -l #显示最近创建的容器
docker ps -n #显示最近n哥创建的容器
docker ps -q #静默模式,只显示容器编号
docker容器的两种退出方式
1、exit #run进去容器,exit退出,容器停止
2、ctrl+p+q #run进去容器,ctrl+p+q退出,容器不停止
docker启动已停止运行的容器 #docker start 容器ID或者容器名
重启容器:docker restart 容器ID或者容器名
停止容器:docker stop 容器ID或者容器名
强制停止容器:docker kill 容器ID或者容器名
删除容器:docker rm 容器ID或者容器名
强制删除:docker rm -f 容器ID或者容器名
ps:docker rm -f $(docker ps -a -q)
docker -a -q | xargs docker rm
docker run -d 容器名 可以后台运行模式 (前提是保证有一个运行进程,要不然直接使用-d 会导致容器直接挂掉)
例如使用redis前后台启动演示:
①前台交互式启动
docker run -it redis:6.0.8
②后台守护式启动
docker run -d redis:6.0.8
扩展:docker logs +images名 #查看 容器的日志内容信息
docker top +images名 #查看容器内的资源使用情况
docker inspect images名 #查看容器内的资源使用情况 精细版
对于使用 ctrl+p+q #run进去容器,ctrl+p+q退出,容器不停止后如何回复到原来的容器内的操作
推荐使用这个docker exec -it +容器ID /bin/bash #重新回到容器内 如果使用exit 退出的话 不会导致容器的停止
重新进入docker attach 容器ID #重新回到容器内 如果使用exit 退出的话 会导致容器的停止
对于使用redis 进行容器进行查看操作
docker exec -it f1fce83e61c3 /bin/bash
redis-cli
从容器内拷文件到主机
docker cp 容器ID: 容器内路径 目的主机路径
案例:[root@agent ~]# docker cp 1c59cbf6721a:/tmp/a.txt /tmp
docker export用法:
export 导出容器的内容留作为一个tar归档文件【对应import命令】
import 从tar包中的内容创建一个新的文件系统再导入为镜像【对应export】
案例:dockerexport容器ID > 文件名.tar
cat 文件名.tar | docker import-镜像用户/镜像名:镜像版本号
简单说:将整个容器打包成一个tar文件传输到本地
docker export 容器ID > abcd.tar.gz
docker export 容器ID > 文件名.tar.gz 格式
--
将正在运行的容器误删除后如何将其恢复?
1)cat 已压缩打包.tar | docker import -镜像用户/镜像名:镜像版本号 #备份原有镜像并重新命名,把已有存在的镜像恢复
例如:cat abcd.tar | docker import - longqixiren/ubuntu:3.7
深度|docker 镜像:
概念:docker 镜像:是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(代码、运行时需要的库、环境变量和配置文件)将这个打包好的运行环境就说images镜像文件
只有通过这个镜像文件才能生成docker容器实例(类似Java中new出来一个对象)
2022/12/30