2. Docker基础用法

Docker 架构

docker 是C/S架构的软件,无论是client端还是Server端都是由 docker 一个程序提供,这个程序有很多子程序。

docker daemon 就是其中一个子程序,当运行 docker daemon 时,主机就运行成一个守护进程服务器,它可以监听在某个套接字上,为了安全,默认只提供 Unix sock 文件的套接字。

docker 支持三种类型套接字:

  1. ipv4套接字
  2. ipv6套接字
  3. Unix sock套接字

DOCKER_HOSTS 是真正运行容器的主机,Container : 容器,Images: 镜像

Clicent -> DOCKER_HOST 使用 https协议

DOCKER_HOST -> Registry 使用https协议

docker 有企业版和社区版之分:

  • docker-ce 社区版
  • docker-ee 企业版

仓库

一个 docker registry 上有三种功能:

  1. 提供镜像存储的仓库
  2. 提供用户来获取镜像的时的认证
  3. 所有镜像索引搜索

一般来说,一个应用程序作为一个仓库。而通过 镜像名:标签 的形式来描述一个具体的镜像文件。

如果在获取镜像时,只给出了镜像名而没有提供标签,则获取最新的镜像文件(latest 会指向仓库中最新的版本),一个镜像有多个标签。docker 镜像是只读文件,不允许任何修改。

仓库就是用来存放镜像的, 镜像和容器的关系,容器是基于镜像创建的,就像进程和程序的关系。
镜像是静态的不会运行。容器是有生命周期的,类似与进程。

任何一个 resfull风格的API都是可以进行增删改查的,docker也不例外

images、containers、networks、volumes、plugins 都是可以进行增删改查的。

安装和使用docker

安装docker要求:

  • 64 bits CPU
  • Linux Kernel 3.10+
  • Linux Kernel cgroups and namespaces

为了更好的支持docker 推荐使用 Centos7

安装docker-ce

#wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#yum install docker-ce -y
#rpm -ql docker-ce
/usr/bin/docker-init
/usr/bin/docker-proxy
/usr/bin/dockerd
/usr/lib/systemd/system/docker.service
/usr/lib/systemd/system/docker.socket

=== docker 加速 ===
#mkdir /etc/docker
#vim /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com"
    ]
}
#systemctl start docker
可通过 docker info  查看是否生效

查看docker版本

#docker version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:03:45 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:02:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

查看docker详细信息

#docker info

常用操作命令

常见示例:

=== 下载镜像到本地 ===
#docker pull nginx:alpine

=== 查看镜像 ===
#docker images

=== 查看docker关于容器的操作 ===
#docker container --help

=== 查看docker网络 ===
#docker network ls

=== 启动一个最基本的容器 ===
#docker run --name b1 -it busybox:latest

=== 查看容器b1的详细信息 ===
#docker inspect b1

=== 启动停止的容器 ===
#docker start -ai b1

=== 启动容器并运行在后台 ===
#docker run --name web1 -d nginx:alpine

=== 绕过容器边界进入容器 ===
#docker exec -it kvstor1 /bin/sh

=== 查看容器日志 ===
#docker logs web1

docker 容器状态转换各常用命令

docker0 是 nat 桥接模式。

一个容器只是为了运行一个程序,在容器中的程序不能跑在后台,否则一启动容器就终止。

因为docker容器仅在它的进程(PID为1)运行时,会保持运行。如果1号进程退出了, docker容器也就退出了。

原文地址:https://www.cnblogs.com/hukey/p/14056945.html