Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器的使用
怎么拉容器
映射目录
进入容器
查看容器日志
Docker 命令
镜像命令
下载镜像:docker [image] pull NAME [:TAG]
示例:获取一个 Ubuntu 23.04系统的基础镜像:$ docker pull ubuntu : 23.04
注:
不指定TAG会默认选择latest标签,一般来说镜像的latest标签意味着镜像的内容会随版本更新,造成内容不稳定。
执行命令行代码以$开头,表明为普通用户,以#开头,表明为特权用户(root)
利用镜像创建容器,在其中执行bash应用,执行打印“Hello world"命令:
$是用户权限标记,不能放命令里
列出镜像:docker image
注:
REPOSITORY:镜像来自哪个仓库
TAG :镜像的标签信息
IMAGE ID:镜像ID,唯一标识镜像
CREATED:镜像的更新时间
SIZE:镜像的大小
使用TAG 命令添加镜像标签
示例:docker tag hello-world:latest hello:latest
hello-world:latest和 hello:latest实际上是指向同一镜像文件,只是不同别名。
查看镜像详细信息:docker inspect NAME [:TAG]
示例:docker inspect ubuntu : 23.04
查看镜像历史:history
示例:history ubuntu : 23.04
注:过长的命令一般会被自动截断,可使用--no--trunc输出完整的命令
删除镜像: docker rmi\docker image rm NAME [:TAG]/IMAGE ID
使用标签删除镜像
示例:docker rmi hello:latest
注:使用 镜像ID 删除镜像,当镜像有创建的容器时,镜像文件是无法删除的,可使用-f参数强行删除(不建议),先删除依赖镜像的所有容器,再来删除镜像。
使用prune 命令清理镜像:docker image prune
创建镜像:commit、import和build
基于已有容器创建 :docker commit 已有容器ID或名称 新镜像名:标签
基于本地模板导入
基于Docker file创建
存出和载入镜像:save和load
导出本地镜像ubuntu : 23.04为文件ubuntu_23.04.tar
示例:docker save -o ubuntu_23.04.tar ubuntu : 23.04
从文件ubuntu_23.04.tar 导入镜像到本地镜像列表
示例: docker load -i ubuntu_23.04.tar
上传镜像:docker push NAME [:TAG]
容器命令
容器是镜像的一个运行实例。
创建容器:create
示例:docker create -it ubuntu : latest
启动容器: docker start;新建并启动容器: docker run;等待容器退出并打印返回结果: 实docker container wait 守护态运行:docker run -d;查看容器输出:docker logs
注:-it:保持标准输入打开,并且分配一个伪终端
停止容器:pause/unpause,stop和prune
暂停容器:docker pause
解除暂停:docker unpause
终止容器:docker stop
先终止再重启:docker restart
打开容器:attach,exec
使用-d参数时,容器启动后会自动进入后台,用户无法看到信息,也不能进行操作,这时候需要进入采取attach,exec命令。
删除容器:docker rm
不能删除处于运行状态的容器,可以添加-f强制删除。
导入和导出容器:export和import
导出容器是指导出一个创建的容器到一个文件,此时可以不管容器的运行状态。
导出的文件可以通过docker import 命令导入变成镜像。
docker load与docker import的区别:
容器快照文件将丢失所有的历史记录和元数据信息,镜像储存文件将保持所有记录,体积更大。
查看容器:inspect、top和stats
查看容器详情:docker container inspect
查看容器内进程:docker top
查看统计信息:docker stats
Docker容器服务访问
端口映射
从外部访问容器内应用:
使用-P随机映射
可以看到,本地主机的32768被映射到了容器的5000端口,访问宿主主机的49155端口即可访问容器内web应用提供的界面。
使用-p指定映射端口
此时默认会绑定本地所有接口上的所有地址,多次使用-p标记可以绑定多个端口。
映射到指定地址的指定端口
示例:docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
映射到指定地址的任意端口
示例:docker run -d -p 127.0.0.1: :5000 training/webapp python app.py
查看映射端口配置:docker port
容器互联
容器的互联是一种让多个容器中的应用进行快速交互的方式。
--link name:alias
数据库应用
MySQL(关系型数据库)
启动MySQL:docker run --name 容器名-e MYSQL_ROOT_PASSWORD=root用户密码 -d mysql[:TAG]
Redis(非关系数据库)
启动Redis
待补充。。。。。。