目录
1.概述
为什么要用到容器
Docker概述
容器与虚拟机的区别
Linux namespace的六大类型
Docker核心概念
镜像
容器
仓库
2.安装Docker
设置阿里云镜像源安装docker
查看docker版本信息
3.Docker镜像操作
搜索镜像
获取镜像
镜像加速下载
查看下载到本地的所有镜像
获取镜像详细信息
为本地的镜像添加新的标签
删除镜像
存出镜像
载入镜像
上传镜像
4.Docker容器操作
容器创建
查看容器的运行状态
启动容器
创建并启动容器
终止容器运行
容器的进入
复制到容器中
容器的导出与导入
删除容器
总结:docker是用go语言开发并开源的容器引擎,用来运行容器里的应用。docker也是可用来管理容器和镜像的一种工具。
实验准备:
目前 Docker 只能支持 64 位系统。
systemctl stop firewalld.service
setenforce 0
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
--------------------------------------------------------------------------------------------
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
--------------------------------------------------------------------------------------------
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker.service
systemctl enable docker.service
--------------------------------------------------------------------------------------------
安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。
--------------------------------------------------------------------------------------------
docker version
docker info
格式:
docker search 关键字
格式:
docker pull 仓库名称[:标签]
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。
浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pbt7lb0q.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest a8758716bb6a 3 months ago 187MB
--------------------------------------------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;
--------------------------------------------------------------------------------------------
格式:
docker inspect 镜像ID号
●lowerdir是镜像层,目录或者文件是只读的,其实就是rootfs,image layer可以分很多层,所以对应的lowerdir是可以有多个目录
●upperdir是在lowerdir之上的容器层,这层是可读可写的,在启动一个容器时候会进行创建,所有的对容器数据更改都发生在这里层
●MergedDir是表现层,是容器的挂载点
●WorkDir 工作目录
格式:
docker tag 名称:[标签] 新名称:[新标签]
格式:
docker rmi 仓库名称:标签 [-f] #当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号 #会彻底删除该镜像
注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像
格式:
docker save -o 存储文件名 存储的镜像
格式:
docker load < 存出的文件
或者
docker load -i 存出的文件
默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。
docker tag nginx:latest soscscs/nginx:web #添加新的标签时必须在前面加上自己的dockerhub的username
docker login #登录公共仓库
Username:yy
password:123
docker push soscscs/nginx:web #上传镜像
格式:
docker create [选项] 镜像
常用选项:
-i:让容器开启标准输入接受用户输入命令
-t:让 Docker 分配一个伪终端 tty
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell
docker ps -a #-a 选项可以显示所有的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2f3d88e85e2f nginx:1.20 "/docker-entrypoint.…" 44 seconds ago Created inspiring_curran
容器的ID号 加载的镜像 运行的程序 创建时间 当前的状态 端口映射 名称
格式:
docker start 容器的ID/名称
docker ps -a
注意:容器是一个与其中运行的 shell 命令/进程共存亡的终端,命令/进程运行容器运行, 命令/进程结束容器退出。
当利用 docker run 来创建容器时,Docker 在后台的标准运行过程是
语法:
docker run -d [-i -t --name --rm] 镜像名:标签 [容器启动命令]
docker stop 容器名|容器ID #发送 SIGTERM 信号,默认等待10s
或
docker kill 容器名|容器ID #发送 SIGKILL 信号,强制停止容器
格式:
docker exec -it 容器ID/名称 /bin/bash
-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端。
exit #退出容器后,容器仍在运行
docker ps -a
从容器复制文件到主机
docker cp 宿主机文件路径 容器名|容器ID:绝对路径
复制到容器中
docker cp 容器名|容器ID:绝对路径 宿主机文件路径
导出格式
docker export 容器ID/名称 > 文件名
或
docker export -o 容器模板文件 容器名|容器ID
导入格式
cat 文件名 | docker import – 镜像名称:标签
或
docker import 容器模板文件 -- 镜像名:标签
格式:
docker rm [-f] 容器ID/名称