最新Docker的安装与使用以及常见问题 Linux Windows

Docker安装

官方文档

推荐免费教程1:Docker从入门到实践 【开源地址】

推荐免费教程2: Docker — 从入门到实践

Linux安装

Windows安装

  • 方式一
    • 安装条件【官方说明】
      • 截至2020年3月,官方要求:64位的Windows 10 Pro专业版,Enterprise企业版或Education教育版(Build 15063或更高版本),另外由于使用到了Hyper-V,Win10系统需开启硬件虚拟化百度教程
    • Docker Desktop for Windows 下载页面、下载地址
  • 方式二
    • 使用Docker Toolbox

不满足方式一安装条件的话建议安装Linux虚拟机在其中使用docker,且可模拟真实生产环境。若你仍执迷不悟请选择升级系统:Win10家庭版升级至Win10专业版,控制面板-系统和安全-系统-更换产品密钥(百度秘钥以及系统破解工具如KMSpico)

MacOS安装

  • Docker Desktop for Mac 下载页面、下载地址
  • 与平时装软件一样,拖动至应用程序即可,可能会要求输入密码获取权限
  • 启动成功后打开终端输入docker相关命令即可使用

查看版本安装成功

  • docker --version

镜像加速

  • 国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

    • Docker官方中国registry mirror:https://registry.docker-cn.com
    • 阿里云加速器(需登录账号获取)
    • 七牛云加速器:https://reg-mirror.qiniu.com/
    • Azure中国镜像: https://dockerhub.azk8s.cn
    • 网易云加速器: https://hub-mirror.c.163.com
  • 建议不要使用Docker官方加速器(速度可能不尽人意,推荐阿里),以下使用官方加速地址仅作为示例进行演示。

Ubuntu 16.04+、Debian 8+、CentOS 7、MacOS、Win10

  • 对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写下方Json内容(若文件不存在请新建该文件)
  • MacOS 用户,在任务栏点击 Docker应用图标 -> Perferences… -> Docker Engine。在输入框中填入下方Json内容,点击Apply & Restart按钮,Docker 就会重启并应用配置的镜像地址了。
  • Win10 用户,在系统右下角托盘 Docker 图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Engine。在输入框中填入下方Json内容,点击Apply & Restart按钮
{
    "registry-mirrors": [
        "https://registry.docker-cn.com"
    ]
}
  • 也可同时配置多个加速地址
{
    "registry-mirrors": [
        "https://dockerhub.azk8s.cn",
        "https://hub-mirror.c.163.com",
        "https://reg-mirror.qiniu.com/"
    ]
}
最新Docker的安装与使用以及常见问题 Linux Windows_第1张图片
  • Ubuntu 16.04+、Debian 8+、CentOS 7需手动重新启动服务
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

检查加速器是否生效

  • 命令行执行docker info,如果从结果中看到了如下内容,说明配置成功。
Registry Mirrors:
 https://registry.docker-cn.com/

Docker-Compose安装

  • Docker for Mac 、Docker for Windows 自带 docker-compose 二进制文件,安装 Docker 之后可以直接使用,执行docker-compose --version查看版本号测试
  • Linux 系统请使用以下方法安装:https://www.kancloud.cn/docker_practice/docker_practice/469832

常用命令

  • 学会常用help命令或查看 官方文档说明
$ docker --help

Usage:	docker COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -D, --debug              Enable debug mode
      --help               Print usage
  -H, --host list          Daemon socket(s) to connect to (default [])
  -l, --log-level string   Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  container   Manage containers
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  volume      Manage volumes

Commands:
  attach      Attach to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.

基本命令

仓库相关操作

docker pull     #从远程仓库拉取镜像到本地
docker push     #推送本地镜像到远程仓库
docker search   #在仓库搜索镜像
docker login    #登录到官方仓库Docker Hub
docker logout   #退出登录

镜像相关操作

docker build    #从Dockerfile构建镜像
docker pull     #同上
docker push     #同上
docker history  #显示镜像的历史信息
docker images   #列出镜像
docker rmi      #删除镜像
docker tag      #给镜像打上tag标签
docker run      #创建容器并启动容器
docker create   #创建容器
docker commit   #将修改后的容器生成镜像
docker load     #从压缩包中加载镜像
docker import   #从归档文件中创建镜像
docker save     #将镜像保存到压缩文件

容器相关操作

docker attach   #依附到一个正在运行的容器中
docker exec     #进到正在运行的容器中执行命令
docker cp       #在容器和本地系统间复制文件
docker update   #将一个容器内所有的进程从暂停状态中恢复
docker ps       #列出主机中的容器
docker port     #查找一个nat到私有网口的公共口
docker top      #查看一个容器中正在运行的进程信息
docker logs     #查看日志文件
docker diff     #检查容器内文件系统的修改
docker status   #输出容器的资源使用统计信息
docker wait     #阻塞直到容器终止
docker start    #启动已创建的容器
docker pause    #暂停运行中的容器
docker unpause  #使暂停的容器恢复运行
docker stop     #停止容器运行
docker rename   #容器改名
docker restart  #容器重启
docker kill     #关闭运行中的容器
docker rm       #删除容器
docker export   #导出容器内容为tar包
docker run      #同上
docker create   #同上
docker commit   #同上

其他基本命令

docker events   #从服务端获取实时的事件
docker info     #查看系统相关信息
docker inspect  #显示Docker对象的具体配置信息,包括容器,镜像,网络等
docker version  #输出Docker的版本信息

管理命令

docker container    #容器管理
docker image        #镜像管理
docker network      #网络管理
docker node         #节点管理
docker plugin       #插件管理
docker secret       #管理敏感数据及普通服务配置项
docker service      #服务管理
docker stack        #栈管理
docker swarm        #集群管理
docker system       #管理系统信息
docker volume       #卷管理

找的一些命令图帮助大家记忆理解

最新Docker的安装与使用以及常见问题 Linux Windows_第2张图片

最新Docker的安装与使用以及常见问题 Linux Windows_第3张图片

快速理解相关概念

Docker

  • Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器

  • 对比传统虚拟机总结

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个
  • Docker现已成为云计算主流工具,你甚至可以理解为云计算已离不开Docker

仓库

  • 仓库(Repository)是集中存放镜像的地方
  • 和Maven一样,有公有的仓库,也可搭建私有的,比如,VMWare HarborSonatype Nexus甚至提供了用户界面以及一些高级功能。

镜像

  • Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像
  • 镜像与容器的关系类似于面向对象编程中的对象实例
  • 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
  • 镜像不包含任何动态数据,其内容在构建之后也不会被改变。

镜像包含操作系统完整的 root 文件系统,其体积往往是庞大的,但 Docker 设计时,就充分利用 Union FS 的技术,将其设计为分层存储的架构

容器

  • 容器是独立运行的一个或一组应用,以及它们的运行态环境
  • 容器的本质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的文件系统、网络配置、进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里

数据卷

  • 容器消亡时,容器存储层(例如运行服务的配置文件,数据库数据)也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失
  • 所有的文件写入操作,都应该使用数据卷(Volume)或者绑定宿主目录,直接对宿主(或网络存储)发生读写,避免配置文件或数据丢失

类比Maven快速理解

最新Docker的安装与使用以及常见问题 Linux Windows_第4张图片

Docker-Compose

  • 实现一个项目,除了项目服务容器本身,往往还需要再加上后端的数据库MySQL,中间件Redis、Elasticsearch、MQ等等。甚至可以想象一下当你的Docker中有成百上千的容器集群需要启动,如果一个个地启动那肯定是无法忍受的

  • 有了Docker-Compose你只需要编写一个文件,在这个文件里面声明好要启动的容器,配置一些参数,执行一下这个文件,Docker就会按照你声明的配置去把所有的容器启动起来

  • 可以理解为Docker-Compose是用来批量执行管理你的容器

Kubernetes

但是Docker-Compose只能管理当前主机上的Docker,无法去启动其他主机上的Docker容器

  • 因此Kubernetes就是一款用来管理多主机上的Docker容器的工具,可以负责帮你启动容器,监控容器状态,如果容器的状态不正常重新帮你启动一个新的容器来提供服务,同时也提供服务之间的负载均衡,而这些东西Docker-Compose是做不到的
  • KubernetesGoogle在2014年创建管理的,是 Google 十多年大规模容器管理技术Borg 的开源版本
  • 当然Kubernetes更加强大,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。特点如下:
    • 可移植: 支持公有云,私有云,混合云,多重云(多个公共云)
    • 可扩展: 模块化,插件化,可挂载,可组合
    • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

  • 作者:Exrick
  • 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(Docker)