Docker【docker使用】

时间:2024-03-19 12:19:10

文章目录

  • 前言
  • 一、概念
  • 二、常用方法
    • 1.镜像
    • 2.容器
  • 三、镜像与镜像的关系,以及镜像构建和管理


前言

上一篇文章讲了docker的安装,本片文章我们来聊聊docker的一些常用操作。以及镜像、容器之间的关系

一、概念

docker三大核心概念:镜像 Image、容器 Container、仓库 Repository

  • 镜像:
    • Docker 镜像,就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器:
    • 镜像容器,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器镜像运行时的实体。
    • 容器可以被创建、启动、停止、删除、暂停等。
    • 基于镜像可以创建容器,同一个镜像可以创建多个容器
    • 基于容器也可以创建镜像
  • 仓库:
    • 用来保存镜像镜像存放在仓库中,可以从仓库中拉取或者推送镜像仓库

二、常用方法

1.镜像

配置好仓库后可以在docker阿里云镜像仓库下载需要的镜像,像mysql nginx
例如:mysql

docker pull mysql;
docker run -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql; #初次启动要设置mysql初始密码 -d表示后台运行,否则你的终端就无法继续操作了
命令 描述 案例
pull 拉取镜像 docker pull mysql #默认拉取最新镜像
docker pull mysql:8.0.28 # 拉取指定版本镜像
search 搜索镜像 docker search mysql
tag copy镜像并重命名,源镜像仍然存在
如果镜像没有镜像名,也可以通过镜像id进行更改名称
docker tag mysql mysql2
images 查看本地已存在的镜像信息 docker images mysql # 指定镜像
docker images #所有镜像
docker images | grep mysql # 配合管道符使用
rmi 删除镜像|镜像id rmi mysql
build 基于dockerfile构建镜像 docker build
commit 基于已有容器构建镜像 docker commit

docker不能直接查看远程仓库中某个镜像的所有可用版本。但是有两个操作可以实现它

  • 1直接进入镜像仓库管理界面,这里只列举两个

    • 官方:https://hub-stage.docker.com/_/nginx/tags
    • 阿里:https://cr.console.aliyun.com/cn-hangzhou/instances/artifact。阿里的容器镜像服务是每个人都不同的,你需要登录进入
      在这里插入图片描述

  • 2 拉取镜像的所有可用版本。虽然这个命令会直接下载所有可用版本,比较耗费资源,时间也比较长。

    docker pull --all-tags [IMAGE_NAME]
    

  • 3 使用manifest inspect命令,他会打印出镜像在仓库中的清单

    docker manifest inspect library/nginx
    

    它是一个试验性的命令,如果你无法使用,则需要配置开启manifest

    vi ~/.docker/config.json
    # 添加以下内容
    {
      "experimental": "enabled"
    }
    

2.容器

容器是通过依据image创建的运行实例,把image看成class,容器就相当于class new的实例对象。一个镜像可以create出多个容器。
通过exec命令进入容器后可以通过两种方式退出容器

  • 1.exit:退出容器,并保持容器运行
  • 2 ctrl + P Q:退出容器,返回到主机命令窗口
命令 描述 参数解释
create docker create (–name=容器名) 镜像名 docker create --name=mybusybox busybox
run 运行容器,run = pull + create + start 相当于运行三个命令 docker run mybusybox
exec…-it…sh 进入容器内部 sh:表示进入 docker exec -it mybusybox sh
start 启动容器 docker start -d mybusybox # -d:后台运行
restart 重启容器 docker restart mybusybox
stop 停止容器 docker stop mybusybox
rm 删除容器 docker rm mybusybox
commit 基于已有容器构建镜像
ps 查看容器状态:docker ps -a:查看所有容器docker ps -l:查看最近操作的容器 docker pa -a
logs 查看容器日志:docker logs 容器名:查看指定容器的运行日志docker logs -f 容器名:实时查看指定容器的运行日志 docker logs -f mysql

容器在操作容器时,一些比较有用的参数

命令 说明
--name 指定容器名称:–name=容器名–name 容器名
-d 后台运行
-p 映射端口,宿主机端口:容器端口,例如:-p 3307:3306
-v 挂载目录到本地,宿主机目录:容器目录,例如:-v /usr/local/nginx:/usr/local/nginx
--restart 自动重启,例如:–restart=always,跟随docker服务的重启而重启

三、镜像与镜像的关系,以及镜像构建和管理

镜像构建以及管理的内容比较多,本文的目的是记录镜像和容器的各种操作,所以单独把这一块放到这一篇文章。