Docker概述及安装

概述

  • Docker是开源、轻量级容器引擎
  • Docker使用容器承载应用程序,而不使用操作系统,因此开销小,性能高
  • Docker对应用程序的隔离不如虚拟机彻底

Docker存储驱动

  • 每个Docker文件都有一个本地存储空间,用户保存层叠的镜像层[Image Layer],以及挂载的容器文件系统。
  • 默认情况下,容器的所有读写操作都发生在其镜像层上或挂载的文件系统中。

Docker运维技能

  • Docker镜像下载
  • 运行容器
  • 登陆容器
  • 在容器内运行命令
  • 销毁容器

Docker两个主要组件

  • Docker客户端
  • Docker daemon[服务端,引擎]
    * daemon实现了Docker引擎的API
sudo docker version
Client: Docker Engine - Community
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        48a66213fe
 Built:             Mon Jun 22 15:45:49 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.12
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       48a66213fe
  Built:            Mon Jun 22 15:44:20 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

镜像

  • 可以将Docker镜像理解为一个包含了OS文件系统和应用的对象
  • 在Docker世界中,镜像实际上等价于未运行的容器
  • 查看Docker镜像
sudo docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              adafef2e596e        3 months ago        73.9MB
  • 镜像包含了基础操作系统,以及应用程序运行所需的代码和依赖包。
  • Docker的每个镜像都有自己的唯一ID。可以通过应用镜像的ID或名称来使用镜像。
  • 在Docker主机上获取镜像[拉取(pulling)]
docker pull ubuntu
Using default tag: latest

容器

  • 拉取镜像到本地后,可以使用 docker container run 从镜像启动容器。
  • -it [将SHELL切换到容器终端]告诉Docker开启容器的交互模式并将当前的Shell连接到容器终端
  • docker run 告诉Docker Daemon 启动新的容器
  • /bin/bash 告诉Docker,想要在容器内部运行哪个进程。
docker run -it ubuntu /bin/bash
root@5dabfa10b0a0:/#
  • 在容器内部运行ps命令查看当前正在运行的全部进程
    可以看到容器中仅包含两个进程
    PID 1 代表 /bin/bash 进程,该进程是通过docker run 命令通知容器运行的
    PID 8 代表 ps -elf 进程,查看当前运行中进程所使用的命令/程序
root@bf5f99b5ada3:/# ps -elf
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root         1     0  0  80   0 -  1063 do_wai 10:14 pts/0    00:00:00 /bin/bash
0 R root         8     1  0  80   0 -  1471 -      10:17 pts/0    00:00:00 ps -elf
  • 按 Ctrl-PQ 组合键,可以在退出容器的同时还保持容器运行
    [在容器内部使用该操作可以退出当前容器,但不会杀死容器进程]
    同时Shell返回到Docker主机终端
    再次运行 ps 命令
    与Docker容器相比,Docker主机中运行的进程数要多很多,
ps -elf | grep docker
4 S root      1370     1  0  80   0 - 151446 -     03:55 ?        00:00:01 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
0 S root      4171  1369  0  80   0 - 26909 -      07:10 ?        00:00:00 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/59dee264970f0e239e1f40acf5b05afb856835ee0abb8a143af8e43a879353c2 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc
0 S vagrant   4268  2406  0  80   0 -  3558 pipe_w 07:11 pts/0    00:00:00 grep --color=auto docker
  • 可以通过docker container ls 命令查看系统内全部处于运行状态的容器
    • -a 列出所有容器,包括处于停止状态的
docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
59dee264970f        ubuntu              "/bin/bash"         3 minutes ago       Up 3 minutes                            magical_mestorf
  • 连接到运行中的容器
    执行 docker exec 可以将Shell连接到一个运行中的容器终端
    magical_mestorf 表示上述示例容器名称
docker exec -it magical_mestorf /bin/bash
root@59dee264970f:/#
  • docker exec 命令的格式如下
    将本地Shell连接到容器是通过-it参数实现的。
docker exec <options> <container-name or container-id> <command/app>
  • 停止容器
docker container stop magical_mestorf
  • 杀死容器
docker container rm magical_mestorf

安装

  • 有多种场景和方式安装:手工安装、脚本方式安装、向导方式安装
  • 多平台支持:Windows、Mac、Linux

Linux 安装 Docker

  • 本文主要记录Linux下的Docker安装,安装社区版[CE]
  • 使用wget从https://get.docker.com获取并运行Docker安装脚本,然后采用shell中管道(pipe)的方式来执行这个脚本
wget -qO- https://get.docker.com/ | sh
// 也可通过curl获取安装脚本
// curl -sSL https://get.daocloud.io/docker | sh
  • 确认安装结果
    • 查看如下信息,版本信息与docker系统信息包含Clinet及Server则表示安装成功
docker --version
Docker version 19.03.12, build 48a66213fe
sudo docker system info
Client:
 Debug Mode: false

Server:
 Containers: 3
  Running: 0
  Paused: 0
  Stopped: 3
 Images: 1
原文地址:https://www.cnblogs.com/biby/p/14031692.html