专业编程基础技术教程

网站首页 > 基础教程 正文

docker的基本认识(一) docker的基本使用

ccvgpt 2024-10-12 14:13:14 基础教程 10 ℃

什么是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的基本认识(一) docker的基本使用

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等服务

Tags:

最近发表
标签列表