docker入门学习

前言

搞清楚docker、镜像和容器之间的关系,学习docker就很简单了

docker定义

Docker是一个开源的、轻量级的容器引擎(函数库、软件、工具),用于创建、管理和编排容器

docker获取

Docker引擎可以从Docker网站下载,也可以基于Github上的源码进行构建,有linux和Windows版本

docker安装

Docker安装涉及两个部件:Docker客户端和Docker daemon (服务端);daemon实现了Docker引擎的API

docker version

docker version 命令来检测客户端和服务端是否都已经成功运行

docker掌握

docker的镜像下载、运行新的容器、登录新容器、在容器内运行命令,以及销毁容器
对应运维人员远远不止这些

镜像定义

  • 将Docker镜像理解为一个包含了OS文件系统和应用的对象
  • 镜像等价于未运行的容器,如果作为一名开发者,可以将镜像比作类
  • docker image ls 查看拉取的有哪些镜像
  • 镜像包含了基础操作系统,以及应用程序运行所需的代码和依赖包
  • Docker的每个镜像都有自己的唯一ID,用户可以通过引用镜像的ID或名称来使用镜像
  • 从镜像仓库服务中拉取镜像到本地Docker主机,使用该镜像启动一个或者多个容器
  • 镜像内部是一个精简的操作系统,同时还包含应用运行所必须的文件和依赖包
  • 镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象
  • 镜像就像停止运行的容器(类),镜像可以理解为一种构建时结构,而容器可以理解为一种运行时结构
  • 使用docker container run 和docker service create 命令从某个镜像启动一个或多个容器
  • 容器目的就是运行应用或者服务,这意味着容器的镜像中必须包含应用/服务运行所必须的操作系统和应用文件

镜像仓库服务

  • Docker镜像存储在镜像仓库服务(Image Registry)中, 镜像仓库服务包含多个镜像仓库(Image Repository),每个镜像仓库包含多个镜像
  • 官方和非官方镜像

镜像命名和标签

  • 只需要给出镜像的名字和标签,就能在官方仓库中定位一个镜像,如 docker image pull ubantu:latest
  • 从非官方仓库拉取镜像(Docker Hub下的账户)
  • 从第三方镜像仓库服务拉取镜像(非Docker Hub)

镜像与分层

  • Docker镜像由一些松耦合的只读镜像层组成
  • Docker负责堆叠这些镜像层,并且将它们表示为单个统一的对象
  • 查看镜像分层:docker image inspect ubantu:latest
  • docker history 命令显示了镜像的构建历史记录
  • 镜像树

共享镜像层

  • 多个镜像之间可以并且确定会共享镜像层,这样可以有效节省空间并提升性能

多层架构的镜像

  • Docker最值得称赞的一点就是使用方便,例如,运行一个应用就像拉取镜像并运行容器这么简单。无需担心安装、依赖或者配置
  • 多层架构镜像解决了不同平台和不同架构的兼容问题

容器

  • 如果本地有镜像,可以使用docker container run命令从镜像来启动容器 , 例如 docker container run -it ubuntu:latest /bin/bash
  • -it 参数会将shell切换到容器终端
  • ps -elf : 在容器内部运行ps命令查看当前正在运行的全部进程
  • 按Ctrl+PQ组合键,可以在退出容器的同时还保持容器运行,这样shell就会返回到主机终端,可以通过查看shell提示符来确实
  • docker container ls 命令查看系统内全部处于运行状态的容器
  • docker container exec命令:可以将shell连接到一个运行中的容器终端
  • 通过docker container stop和docker container rm命令来停止并杀死容器
  • 容器是镜像的运行时实例,用户可以从单个镜像上启动一个或多个容器
  • 虚拟机和容器最大的区别是容器更快并且更轻量级,与虚拟机运行在完整的操作系统之上相比,容器会共享其所在主机的操作系统/内核
  • docker container run 启动容器
  • docker container run 启动所需的镜像以及要运行的应用
  • 容器随着其中运行应用的退出而终止,linux容器会在bash shell退出后终止
  • docker container stop 手动停止容器运行
  • docker container start 再次启动该容器
  • docker container rm 删除容器

容器与虚拟机

  • 虚拟机是硬件虚拟化,将硬件物理资源划分为虚拟资源
  • 容器是操作系统虚拟化,容器将系统资源划分为虚拟资源

docker用法及常用命令

  • docker / docker --help
    • Usage:docker [OPTIONS] COMMAND
    • Options:
    • Management Commands:
    • Commands:
    • run ‘docker COMMADN --help’ for more information on a command
  • docker version # 显示docker的版本信息
  • docker info # 显示docker的系统信息,包括镜像和容器情况等
  • docker history # show the history of an image
  • docker history centos:latest
  • docker images # Commands 查看本机上所有镜像
  • docker images -a, docker images -f, docker images -q
  • docker kill # Kill one or more running containers
  • docker kill a58c8f8bb494
  • docker ps # List containers
  • docker pull / docker push # 下载和上传镜像
  • docker rename # Rename a container
  • docker restart # Restart one or more containers
  • docker rm # Remove one or more containers
  • docker rmi # 删除镜像
  • docker run # Run a command in a new container
  • docker search # 搜索镜像
  • docker stop # Stop one or more running containers
  • docker start # Start one or more stopped containers
  • docker stats # 展示容器资源利用情况

docker镜像管理

  • docker image
    • docker image build # build an image from a Dockerfile
    • docker image history # show the history of the image
    • docker image inspect # display detailed information on one or more images
    • docker image ls # 查看本机上的镜像
    • docker image pull,docker image push # 拉镜像和上传镜像 ( docker pull / docker push 也可以)
    • docker image pull mysql / docker image pull mysql:5.7
    • docker image rm # 删除镜像 (docker rmi 也可以, docker rmi -f image_id # 强制删除镜像)

docker容器管理

  • docker container # Manage container 容器管理
    • docker container cp # Copy files/folders between a container and the local filesystem
    • docker container create # Create a new container
    • docker container exec # 终端重新连接到运行的容器
    • docker container inspect # 查看容器的详细信息
    • docker container kill # 杀死正在运行的容器
    • docker container logs # 取容器的日志
    • docker container ls # 查看所有容器
    • docker container pause # 暂停容器中的进程
    • docker container port # 查看容器的端口映射
    • docker container prune # 删除全部停止的容器
    • docker container rm # 删除容器
    • docker container run # run a command in a new container
    • docker container start # Start one or more stopped containers
    • docker container stop # Stop one or more running containers
    • docker container top # Display the running processes of a container
    • docker container unpause # Unpause all processes within one or more containers

docker实操案例

启动简单容器的例子:

  • 1.下载需求镜像到本地
    • docker pull centos # 下载
    • docker images # 查看
  • 2.启动容器并运行应用
    • docker container run -it centos:latest app.exe
    • 若尝试在容器内执行一些基础命令,可能会发现某些指令无法正常工作,这意味着某些命令或者包可能没有安装。
  • 3.容器进程
    • ps -elf # 在容器内查看进程
    • 容器当前只运行了一个进程 /bin/bash
    • exit # 退出bash shell,那么容器也会退出(终止)
    • Ctrl+PQ组合键 # 退出容器但并不终止容器运行,这样会切回到主机Docker主机的shell,并保持容器在后台运行
    • docker container ls # 观察当前系统正在运行的容器列表
    • docker container exec -it 92c542538820 /bin/bash # 终端重新连接到docker
    • 重新连接容器后,会创建新的shell进程,这意味着在当前shell输入exit并不会导致容器终止
    • 1.在当前shell下输入exit;2.docker container ls;3.docker container stop 92c542538820;4.docker container ls;5.docker container rm 92c542538820;6.docker container ls

docker run命令解读

有了镜像就可以创建和启动容器
新建容器并启动
docker run # run a command in a new container 在新的容器中运行命令

  • Usage:docker run [OPTIONS] IMAGE [COMMADN] [ARG…]
  • docker run IMAGE -it # 将shell切换到容器终端
  • docker run IMAGE -p # 设置端口号(Publish a container’s port(s) to the host)
  • docker run IMAGE -v # 绑定装载卷(Bind mount a volume)
  • docker run IMAGE --env # 设置环境变量(Set environment variables)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值