序言
docker基本原理和常用命令
虚拟机
- Host OS和Guest OS
- VMWare这类软件直接操作硬件或通过Host OS操作硬件,如下图
- 多台虚拟机运行会造成大量的硬件资源浪费,docker技术应运而生
容器
-
容器和虚拟机的区别 -
操作系统层虚拟化。容器将应用和运行库打包 -
App + Lib的组合就是一个容器,也就是docker的集装箱container -
相较虚拟机,容器的特点 @ 启动迅速。容器没有虚拟机硬件的初始化,没有guest os的启动过程,节约启动时间,“开箱即用” @ 占用资源少。没有运行Guest OS所需的内存开销,无需为虚拟机预留运行内存,无需安装、运行App不需要的运行库/操作系统服务,内存占用、存储空间占用都小的多 @ 内核崩溃影响大。容器共用内核,通过控制组cgroup隔离,不如虚拟机彻底。内核崩溃则所有容器崩溃,不同虚拟机之间影响没这么大
docker
-
docker的两大口号 build, ship and run. build once, run anywhere. -
和三大概念 镜像:image, docker镜像 容器:container, docker容器 仓库:repository, docker仓库 -
docker其他概念 docker registry:公共仓库,docker镜像管理,有很多镜像 镜像:一种特殊的文件系统,包含运行时所需的程序、库、资源、配置等。 容器:是指image运行时,包含了文件资源和系统资源。文件资源:image展开;系统资源:变成process存在于系统中 docker swarm: docker公司推出的容器调度平台 kubernetes: k8s, google主导的容器调度平台 容器调度平台:m个master节点和n个worker节点组成的集群。整合主机资源,完成网络、存储、CPU和内存等资源的管理,将容器运行在不同主机上
docker常用命令
sudo groupadd docker // 添加docker任务组
sudo gpasswd -a $USER docker // 将登陆用户加入到docker用户组中
newgrp docker // 更新用户组
docker ps -a // 测试docker命令正常使用
docker // 查看docker所有命令
docker version // 查看docker版本
docker info // 查看docker容器信息
docker images // 查看所有下载的镜像
docker images -q // 显示镜像id
docker search ubuntu // 镜像搜索。显示所有ubuntu镜像
docker search mysql // 显示mysql的所有镜像
docker pull ubuntu // 将ubuntu基本镜像下载到本地
docker pull redis // 下载最新镜像
docker pull -a redis // 下载仓库所有redis镜像
docker pull image_Name // 选择需要的镜像
docker rmi redis // 单个镜像删除
docker rmi -f redis // 强制删除
docker rmi -f redis tomcat // 删除多个镜像,空格分隔
镜像构建:
docker ps -a // 查看有哪些docker容器,正在运行+历史运行
docker ps // 查看正在运行的容器
docker ps -n 3 // 显示最近创建的3个容器
docker start containerId // 重新启动容器
docker stop containerId // 停止容器
docker kill containerId // 杀掉一个正在运行的容器
docker rm containerId // 删除一个已停止的容器
docker rm -f containerId // 删除一个正在运行的容器,否则会占内存 -f强制
docker rm -f $(docker ps -a -q) // 删除所有容器
docker exec -it containerId /bin/bash // 常用。进入容器,退出容器终端不会导致容器停止
docker run -it ubuntu:18.04 /bin/bash // 用18.04镜像为基础来启动容器
docker run -it --name myubuntu /bin/bash // 指定容器名字
docker create ubuntu:18.04
docker run -itd -p 6800:6800 image_name // 启动容器
-i 交互式操作
-t 终端
-d 后台启动容器,终端关闭仍运行
-p 指定端口号
/bin/bash 放在镜像名后的是命令,表示shell交互
exit // 关闭容器并退出
docker logs containerId // 显示容器日志
docker logs -f -t --tail=20 containerId // 跟踪显示带时间戳的最新20条日志
docker cp containerId:file_path/file local_path // docker到host
docker cp local_path containerId:file_path // host到docker
// 文件和文件夹拷贝都是cp,不用家加-r,不同于scp
参考文章: docker原理通俗讲解 docker常用命令 (推荐) docker使用
created by shuaixio, 2021.11.11
|