网站首页 > 基础教程 正文
什么是docker
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、
bare metal、OpenStack 集群和其他的基础应用平台。 ----来自于官方
(简单说:就是一个容器,把我们的程序与环境结合起来做统一管理)
docker的作用
- web应用的自动化打包和发布;
- 自动化测试和持续集成、发布;
- 服务型环境中部署和调整数据库或其他的后台应用;
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
docker中的名词解释
- 镜像(images):docker镜像可以理解成一个工厂,比方说nginx镜像(工厂),通过run(生成)运行,可以生成容器(产品),产品(容器)可以生成多个,如果nginx运行多个,是不是nginx集群就出现了?所以说,最终服务运行或者项目运行都是运行在容器中的
- 容器(container):docker利用容器技术,独立运行一个或一组应用,通过镜像创建,它可以有启动,停止,删除等基本命令
- 仓库(repository):仓库就是存放镜像的地方,它分为公有仓库和私有仓库,Docker Hub是在国外,在国内的话访问比较慢,需要配置镜像加速
4.配置阿里云镜像加速器(可选)
#不配置镜像加速太慢了,阿里云上的配置方法如下
- 打开阿里云控制台
- 在产品与服务中搜索容器镜像服务->镜像工具->镜像加速器复制加速器地址
- 修改daemon配置文件/etc/docker/daemon.json来使用加速器
#修改代码如下:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://646fhd4c.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
我这里由于使用Docker Desktop for windows这个软件,
所以我这配置是这样的,我用的是官方提供的国内镜像加速
2.docker中的常用命令(非常重要)
2.1 帮助命令
docker version #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #显示指定命令的使用方法
2.2 镜像命令
- docker images 显示镜像信息
#参数
-a, --all 显示所以镜像信息
--digests 显示镜像摘要
-f, --filter filter 过滤 可选值:dangling,label,before,since,reference
--format string 格式化 ,可选值 .ID,.Repository,.Tag,.Digest,.CreatedSince,.CreatedAt,.Size
--no-trunc 不中断输出
-q, --quiet 只显示id ****
- docker search搜索镜像
参数如下:
-f, --filter filter 过滤,可选值:stars,is_automated,is_official
--format string 格式化,可选值:.Name,.Description,.StarCount,.IsOfficial,.IsAutomated
--limit int 限制搜索的个数
--no-trunc 不中断输出
- docker pull 下载镜像
参数如下:
-a, --all-tags 从仓库里下载所有标签的镜像
--disable-content-trust 跳过镜像验证,默认为true
--platform string 支持多平台可以设置
-q, --quiet 不显示详细输出
#pull时可以指定tag,如果不指定tag,则摘取最新的版本
#使用最新的版本
docker pull mysql
#指定版本tag
docker pull mysql:5.7
- docker rmi 镜像删除
参数:
Options:
-f, --force 强制删除镜像
--no-prune 不删除没有标记的父类
#删除mysql
docker rmi mysql
#批量删除
docker rmi -f $(docker images -aq)
3 . 容器的基本命令
- docker run [可选参数] 镜像id 创建容器并启动
#运行容器 使用 --help查看帮助,参数非常多,只说重点
#参数说明
--name string #给容器起名字
-d #后台运行
-it #使用交互式运行 ,进入容器,查看内容
-p #指定容器的端口
-p 主机ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
容器端口
-P #随机指定端口
# 运行centos
docker run --name centos -it 镜像id
- exit退出容器
#退出容器
exit 直接退出容器
#退出容器还在运行
ctrl +p+q
- docker ps 查看运行中的容器
#参数
-a #查看运行中的和历史运行过的容器
-f, --filter filter #过滤
--format string #格式化
-n, --last int #指定显示几个容器
-l, --latest #显示最近的容器
--no-trunc Don't truncate output
-q, --quiet #只显示容器id
-s, --size #显示文件大小
- 删除容器
docker rm 容器id #不能删除运行中的容器
docker rm -f $(docker ps -aq) #强制删除
docker ps -aq |xargs docker rm -f #也可以这样强制删除
- 容器的启动和停止
#容器启动
docker start 容器id
#停止
docker stop 容器id
#强制停止
docker kill 容器id
#重启
docker restart 容器id
- 容器后台运行
#容器后台运行 -d 参数
docker run -d 镜像id
#问题
#当使用docker ps 查看时是没有运行的,
原因是:docker容器使用后台运行时,就必须要有一个前台进程在使用,如果当前容器并没有提供服务,
会被立即停止的
- 查看日志
#命令 docker logs
#参数
--details 显示详细信息
-f, --follow 日志流输出
--since string 显示时间
-n, --tail string 显示几条
-t, --timestamps Show timestamps
--until string
- 查看容器中的进程信息
#命令 docker top 容器id # 容器是运行的才可以查看哦
- 查看容器的原始数据
#查看容器的原数据
docker inspect 容器id
- 进入容器
#进入容器的二种方式
#方式一: docker exec -it 容器id /bin/bash
#方式二: docker attach 容器id
#区别
#docker exec 进入容器后会启动一个新的命令窗口
#docker attach 会直接进入运行中的窗口命令窗口
#docker exec 参数说明
-d, --detach #后台运行命令
--detach-keys string #设置详细的key
-e, --env list #设置env变量
--env-file list #在指定文件里读取env变量
-i, --interactive #与 t一起用于交互模式
--privileged Give extended privileges to the command
-t, --tty Allocate a pseudo-TTY
-u, --user string #用户名
-w, --workdir string #工作目录
- 容器中复制文件到主机上
#docker cp 容器id:路径 目标路径
附录1:官方提供的命令图解(我觉得还是非常nice的,对于小白们来说很友好,思路比较清晰)
附录2:下一篇计划写一些实操,比如安装nginx,redis,mysql等服务
猜你喜欢
- 2024-10-12 Docker扫盲级别基础操作命令 docker-cn
- 2024-10-12 docker命令讲解(二) docker 命令大全
- 2024-10-12 docker 常用命令整理 docker命令菜鸟教程
- 2024-10-12 Docker必须掌握常用命令 docker常用命令及参数
- 2024-10-12 「这些都不知道你就是个弟弟」Docker常用命令
- 2024-10-12 docker常用命令-其他常用命令 docker常用命令及参数
- 2024-10-12 聊聊 Docker 的存储 Overlay2 docker/overlay2
- 2024-10-12 Docker常用命令与构建中遇到的问题
- 2024-10-12 NVIDIA Jetson 系列文章(5):使用Docker容器的入门技巧
- 2024-10-12 一分钟学会Docker常用命令 docker常用命令大全简书
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)