镜像(image):
docker镜像是一个模板,可以通过模板来创建容器服务,镜像==> run ==> 容器(提供服务器)。通过镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
容器(container):
docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的
启动、停止、删除等基本命令
目前可以把容器理解为一个简易的linux系统
仓库(repository):
仓库就是存放镜像的地方,分为公有仓库和私有仓库
docker hub(默认是国外的)

安装Docker

环境准备
1、需要会一些Linux基础
2、需要linux系统和远程操作系统
系统信息
uname -r # 查看内核

  1. 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官网帮助文件,根据提示选择对应的系统进行安装

run工作流程
image.png

底层原理

docker是怎么工作的?

docker是一个Client-Server结构的系统,docker的守护进程运行在主机上。通过socket从客户端访问
dockerserver接受docker-client的指令,就会执行这个命令
image.png

docker为什么比虚拟机快?

1、docker有比虚拟机更少的抽象层
2、docker利用的是宿主机的内核,vm需要Guest OS
所以说,新建容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机加载是分钟级别的,而docker是利用宿主机的操作系统,省略了复杂的过程,是秒级的

docker的常用命令

帮助命令

docker version    # 打印docker版本信息
docker info            # 运行的镜像、容器等的统计,显示系统信息
docker 命令 -=help    # 万能命令

镜像命令

docker images # 查看本机的所有镜像

image.png

docker search # 搜索镜像

image.png

docker pull # 下载镜像

image.png
image.png

docker rmi # 删除镜像

image.png


容器命令

说明:有了镜像材料可以创建容器

新建容器并启动

docker run [可选参数] image
image.png

列出所有运行的容器

docker ps # 列出运行的容器
image.png

退出容器

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