Docker基础用法

什么是docker

docker中的容器:

  • lxc --> libcontainer --> runC

OCI&OCF

OCI

Open Container-initiative

  • 由Linux基金会主导于2015年6月创立
  • 旨在围绕容器格式和运行时制定一个开放的工业化标准
  • contains two specifications
    • the Runtime Specification(runtime-spec)
    • the Image Specification(image-spec)

OCF

打开容器格式

runC是一个CLI工具,用于根据OCI规范生成和运行容器

  • 容器作为runC的子进程启动,并且可以嵌入到各种其他系统中,而无需运行守护进程
  • runC是建立在libcontainer之上的,libcontainer是一种支持数百万Docker引擎安装的容器技术

docker提供了一个专门容纳容器镜像的站点:https://hub.docker.com

docker架构

docker镜像与镜像仓库

为什么镜像仓库名字是Registry而不是repository?在docker中仓库的名字是以应用的名称取名的

镜像是静态的,而容器是动态的,容器有其生命周期,镜像与容器的关系类似于程序与进程的关系。镜像类似于文件系统中的程序文件,而容器则类似于将一个程序运行起来的状态,也即进程。所以容器是可以删除的,容器被删除后其镜像是不会被删除的

docker对象

使用docker时,您正在创建和使用图像、容器、网络、卷、插件和其他对象。

  • 图像
    • 图像是一个只读模板,其中包含创建docker容器的说明。

    • 通常,一个图像基于另一个图像,并进行了一些额外的定制。

    • 您可以创建自己的图像,也可以只使用其他人创建并在注册表中发布的图像。

  • 容器
    • conntainer是映像的可运行实例。

    • 您可以使用docker API或CLI创建、运行、停止、移动或删除容器。

    • 您可以将容器连接到一个或多个网络,将存储连接到容器,甚至可以基于其当前状态创建新映像

安装及使用docker

docker安装

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# curl -o docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
[root@localhost yum.repos.d]# sed -i 's@https://download.docker.com@https://mirrors.tuna.tsinghua.edu.cn/docker-ce@g' docker-ce.repo
[root@localhost ~]#yum clean all
[root@localhost ~]# yum -y install docker-ce
[root@localhost ~]# systemctl start docker

docker加速

docker-ce的配置文件是/etc/docker/daemon.json,此文件默认不存在,需要我们手动创建并进行配置,而docker的加速就是通过配置此文件来实现的。

docker的加速有多种方式:

  • docker cn
  • 中国科技大学加速器
  • 阿里云加速器(需要通过阿里云开发者平台注册帐号,免费使用个人私有的加速器)

[root@localhost ~]# vim /etc/docker/daemon.json
{
      "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}

docker常用操作

命令 功能
docker search 在docker仓库中搜索镜像
docker pull 在仓库中下载镜像
docker images 列出主机上的镜像
docker create 创建一个新的容器但不启动
docker start 启动一个或多个已经被停止的容器
docker run 创建一个新的容器并运行
docker attach 连接到正在运行中的容器
docker ps 列出当前正在运行的容器
docker logs 查看容器日志
docker restart 重启容器
docker stop 停止一个运行中的容器
docker kill 杀掉一个运行中的容器
docker rm 删除一个或多个容器
docker exec 在运行的容器中执行命令
docker info 现实docker系统信息,包括镜像和容器数
docker inspect 获取容器,镜像的源数据
  • docker search
[root@localhost ~]# docker search centos
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                             The official build of CentOS.                   6423      [OK]      
ansible/centos7-ansible            Ansible on Centos7                              132                  [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   125                  [OK]
jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos - …   117                  [OK]
centos/systemd                     systemd enabled base container.                 96                   [OK]
.........................................
  • docker pull
[root@localhost ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
  • docker images
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
centos       latest    ue124nfamg4h   2 months ago   167MB
  • docker create
[root@localhost ~]# docker create centos:latest
31faa228005d988af1fa19fd7423331d4b08e1ed5dc78e373df83a9e1c4d21b6
  • docker start
[root@localhost ~]# docker start 486dfe3fmca5
486dfe3fmca5
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
486dfe3fmca5   centos    "/bin/bash"   9 minutes ago   Up 5 seconds             zen_moser
  • docker attach
    该命令会进入容器但是无法操作,使用ctrl+c退出时容器也会退出
[root@localhost ~]# docker attach --sig-proxy=false hungry_mccarthy
  • docker exec
[root@localhost ~]# docker exec -it  hungry_mccarthy /bin/bash
root@7a9ac43ccda3:/# exit
exit
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS         PORTS     NAMES
7a9ac43ccda3   nginx:latest   "/docker-entrypoint.…"   24 minutes ago   Up 3 minutes   80/tcp    hungry_mccarthy
  • docker inspect
[root@localhost ~]# docker inspect hungry_mccarthy
[
    {
        "Id": "aefg35ghty564fhjghe7yvcl087cd9bf4e04a95ee56ec20b5e407bd8c36214a",
        "Created": "2021-02-25T15:11:48.899142756Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
  • docker info
[root@localhost ~]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
 
Server:
 Containers: 4
  Running: 1
  Paused: 0
  Stopped: 3
 Images: 2

docker event state

原文地址:https://www.cnblogs.com/Ycqifei/p/14451750.html