镜像(image):
docker镜像是一个模板,可以通过模板来创建容器服务,镜像==> run ==> 容器(提供服务器)。通过镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
容器(container):
docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的
启动、停止、删除等基本命令
目前可以把容器理解为一个简易的linux系统
仓库(repository):
仓库就是存放镜像的地方,分为公有仓库和私有仓库
docker hub(默认是国外的)
安装Docker
环境准备
1、需要会一些Linux基础
2、需要linux系统和远程操作系统
系统信息uname -r # 查看内核
5.11.0-27-generic
cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
安装查看docker官网帮助文件,根据提示选择对应的系统进行安装
底层原理
docker是怎么工作的?
docker是一个Client-Server结构的系统,docker的守护进程运行在主机上。通过socket从客户端访问
dockerserver接受docker-client的指令,就会执行这个命令
docker为什么比虚拟机快?
1、docker有比虚拟机更少的抽象层
2、docker利用的是宿主机的内核,vm需要Guest OS
所以说,新建容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机加载是分钟级别的,而docker是利用宿主机的操作系统,省略了复杂的过程,是秒级的
docker的常用命令
帮助命令
docker version # 打印docker版本信息
docker info # 运行的镜像、容器等的统计,显示系统信息
docker 命令 -=help # 万能命令
镜像命令
docker images # 查看本机的所有镜像
docker search # 搜索镜像
docker pull # 下载镜像
docker rmi # 删除镜像

容器命令
新建容器并启动
列出所有运行的容器
退出容器
exit # 直接容器停止并退出
Ctrl + P + Q #容器不停止,退出
删除容器
docker rm 容器id # 删除指定的容器,不能删除正在运行的容器,如果要强制删除,rm -f
docker rm -f $(docker ps -aq) # 参数传递 删除所有的容器
docker ps -a -q | xargs docker rm # 通过Linux命令的管道符,删除所有的容器
启动和停止容器的操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器
常用其他命令
后台启动容器
# docker run -d 镜像名 # 后台启动
docker run -d centos
# 问题:docker ps。发现centos停止了
# 常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有前台应用就会自动停止
# nginx 容器启动后,发现自己没有提供服务,就会立即停止
查看日志
docker logs -f -t --tail 容器,没有日志
# 自己编写一段shell脚本
docker run -d centos /bin/sh -c 'while true;do echo kuangshen;sleep 1;done'
# 显示日志
-tf # 显示日志,format显示时间戳
--tail number # 显示日志条数
docker logs -tf --tail 10 容器id # 显示10条日志
查看容器中的进程信息
docker top 容器id
查看镜像元数据
# 查看容器内部信息
docker inspect --help
docker inspect 容器id
进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
# 命令1
docker exec -it 容器id /bin/shell
# 命令2
docker attach 容器id

