当前位置:   article > 正文

容器运行时 Docker

容器运行时 Docker

目录

1.1 使用YUM源安装

1.1.1 Docker安装YUM源准备

1.1.2 Docker安装

1.1.3 启动Docker服务

二、docker 使用生态

​编辑

6.1 Docker Host

6.2 Docker daemon

6.2 Docker daemon

6.4 Docker client

6.5 Image

6.6 Container

三、 Docker命令介绍

3.1 容器运行时Docker 命令示意图

3.2 Docker命令

3.2.1 Docker命令获取帮助方法

3.3.2 Docker官网提供的命令说明

3.3.3 docker命令应用

3.3.3.1 docker run

3.3.3.2 docker ps

3.3.3.3 docker inspect

3.3.3.4 docker exec

3.3.3.5 docker attach

3.3.3.6 docker stop

3.3.3.7 docker start

3.3.3.8 docker top

3.3.3.9 docker rm

3.3.3.9.1 指定删除容器

3.3.3.9.2 批量删除容器

3.3.3.10 查看容器占用主机资源情况

3.3.3.11 docker prune

四、 Docker容器镜像

4.1 Docker容器镜像操作

4.1.1 查看本地容器镜像

4.1.1.1 使用docker images命令查看

4.1.1.2 使用docker image list命令查看

4.1.1.3 查看docker容器镜像本地存储位置

4.1.2 搜索Docker Hub容器镜像

4.1.2.1 命令行搜索

4.1.2.2 Docker Hub Web界面搜索

4.1.3 Docker 容器镜像下载

4.1.4 Docker容器镜像删除方法

5.2 Docker容器镜像介绍

5.2.1 Docker Image

5.2.2 联合文件系统(必知)

5.2.2.1 联合文件系统定义

5.2.2.2 图解

5.2.3.1 查看Docker Host存储驱动方式

6.3 Docker容器镜像操作命令

6.3.1 docker commit

6.3.2 docker save

6.3.3 docker load

6.3.4 docker export

6.3.5 docker import

七、Docker 容器镜像加速器及本地容器镜像仓库

7.1 容器镜像加速器

7.1.1 获取阿里云容器镜像加速地址

7.1.2 配置docker daemon使用加速器


1.1 使用YUM源安装

1.1.1 Docker安装YUM源准备

使用阿里云开源软件镜像站。

# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

1.1.2 Docker安装

# yum -y install docker-ce

1.1.3 启动Docker服务

# systemctl enable --now docker

二、docker 使用生态

6.1 Docker Host

用于安装Docker daemon的主机,即为Docker Host,并且该主机中可基于容器镜像运行容器。

6.2 Docker daemon

用于管理Docker Host中运行的容器、容器镜像、容器网络等,管理由Containerd.io提供的容器。

6.2 Docker daemon

用于管理Docker Host中运行的容器、容器镜像、容器网络等,管理由Containerd.io提供的容器。

6.4 Docker client

Docker Daemon客户端工具,用于同Docker Daemon进行通信,执行用户指令,可部署在Docker Host上,也可以部署在其它主机,能够连接到Docker Daemon即可操作。

6.5 Image

把应用运行环境及计算资源打包方式生成可再用于启动容器的不可变的基础设施的模板文件,主要用于基于其启动一个容器。

6.6 Container

由容器镜像生成,用于应用程序运行的环境,包含容器镜像中所有文件及用户后添加的文件,属于基于容器镜像生成的可读写层,这也是应用程序活跃的空间。

三、 Docker命令介绍

3.1 容器运行时Docker 命令示意图

3.2 Docker命令

3.2.1 Docker命令获取帮助方法

# docker -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker [OPTIONS] COMMAND  用法

A self-sufficient runtime for containers 功能介绍

Options: 选项
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides
                           DOCKER_HOST env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -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: 管理类命令
  app*        Docker App (Docker Inc., v0.9.1-beta3)
  builder     Manage builds
  buildx*     Docker Buildx (Docker Inc., v0.7.1-docker)
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  scan*       Docker Scan (Docker Inc., v0.12.0)
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands: 未分组命令
  attach      Attach local standard input, output, and error streams 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 to files or directories 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

# docker -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker [OPTIONS] COMMAND  用法

A self-sufficient runtime for containers 功能介绍

Options: 选项
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides
                           DOCKER_HOST env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -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: 管理类命令
  app*        Docker App (Docker Inc., v0.9.1-beta3)
  builder     Manage builds
  buildx*     Docker Buildx (Docker Inc., v0.7.1-docker)
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  scan*       Docker Scan (Docker Inc., v0.12.0)
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands: 未分组命令
  attach      Attach local standard input, output, and error streams 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 to files or directories 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

3.3.2 Docker官网提供的命令说明

网址链接:Reference documentation | Docker Docs

3.3.3 docker命令应用

3.3.3.1 docker run

# docker run -i -t --name c1 centos:latest bash

命令解释
docker run 运行一个命令在容器中,命令是主体,没有命令容器就会消亡
-i 交互式
-t 提供终端
--name c1 把将运行的容器命名为c1
centos:latest 使用centos最新版本容器镜像
bash 在容器中执行的命令

3.3.3.2 docker ps

命令解释
docker ps 查看正在运行的容器

docker ps --all
CONTAINER ID   IMAGE           COMMAND     CREATED             STATUS                         PORTS     NAMES
948f234e22a1   centos:latest   "bash"    10 minutes ago      Exited (0) 2 minutes ago                    c1

3.3.3.3 docker inspect

命令解释
docker inpect 查看容器详细信息

# docker ps
CONTAINER ID   IMAGE           COMMAND   CREATED          STATUS          PORTS     NAMES
9f2eea16da4c   centos:latest   "bash"    37 seconds ago   Up 35 seconds             c2

# docker inspect c2

"Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "d3de2fdbc30ee36a55c1431ef3ae4578392e552009f00b2019b4720735fe5a60",
                    "EndpointID": "d1a2b7609f2f73a6cac67229a4395eef293f695c0ac4fd6c9c9e6913c9c85c1c",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]

3.3.3.4 docker exec

# docker exec -it c2 ls /root
anaconda-ks.cfg  anaconda-post.log  original-ks.cfg

命令解释
docker exec 在容器外实现与容器交互执行某命令
-it 交互式
c2 正在运行的容器名称
ls /root 在正在运行的容器中运行相关的命令

3.3.3.5 docker attach

命令解释
docker attach 类似于ssh命令,可以进入到容器中
c2 正在运行的容器名称

查看正在运行的容器
# docker ps
CONTAINER ID   IMAGE           COMMAND   CREATED          STATUS          PORTS     NAMES
9f2eea16da4c   centos:latest   "bash"    13 minutes ago   Up 13 minutes             c2

[root@localhost ~]# docker attach c2
[root@9f2eea16da4c /]#

3.3.3.6 docker stop

# docker ps
CONTAINER ID   IMAGE           COMMAND   CREATED          STATUS          PORTS     NAMES
9f2eea16da4c   centos:latest   "bash"    22 minutes ago   Up 22 minutes             c2

# docker stop 9f2eea
9f2eea

批量停止容器方法
# docker stop $(docker ps -a -q)

3.3.3.7 docker start

# docker ps --all
CONTAINER ID   IMAGE           COMMAND     CREATED          STATUS                       PORTS     NAMES
9f2eea16da4c   centos:latest   "bash"      22 minutes ago   Exited (137) 4 seconds ago              c2

# docker start 9f2eea
9f2eea

3.3.3.8 docker top

命令解释
docker top 查看container内进程信息,指在docker host上查看,与docker exec -it c2 ps -ef不同。

输出说明
UID 容器中运行的命令用户ID
PID 容器中运行的命令PID
PPID 容器中运行的命令父PID,由于PPID是一个容器,此可指为容器在Docker Host中进程ID
C     占用CPU百分比
STIME 启动时间
TTY   运行所在的终端
TIME  运行时间
CMD   执行的命令

3.3.3.9 docker rm

如果容器已停止,使用此命令可以直接删除;如果容器处于运行状态,则需要提前关闭容器后,再删除容器。下面演示容器正在运行关闭后删除的方法。

3.3.3.9.1 指定删除容器

# docker stop c2

# docker stop 9f2eea16da4c

# docker rm c2

# docker rm 9f2eea16da4c

3.3.3.9.2 批量删除容器

# docker ps --all
CONTAINER ID   IMAGE           COMMAND          CREATED      STATUS                  PORTS    NAMES
948f234e22a1   centos:latest   "bash"           2 days ago   Exited (0) 2 days ago            c1
01cb3e01273c   centos:latest   "bash"           2 days ago   Exited (0) 2 days ago            systemimage1
46d950fdfb33   nginx:latest    "/docker-ent..." 2 days ago   Exited (0) 2 days ago            upbeat_goldberg

# docker ps --all | awk '{if (NR>=2){print $1}}' | xargs docker rm

# docker rm $(docker ps -a -q)

3.3.3.10 查看容器占用主机资源情况

[root@docker-host-1 ~]# docker stats --no-stream 5d0ce02a12c9
CONTAINER ID   NAME               CPU %     MEM USAGE / LIMIT     MEM %     NET I/O       BLOCK I/O     PIDS
5d0ce02a12c9   loving_blackwell   0.00%     6.695MiB / 3.818GiB   0.17%     2.78kB / 0B   0B / 53.2kB   5

3.3.3.11 docker prune

删除未使用的容器镜像
# docker image prune

删除所有未使用的容器镜像
# docker image prune -a

删除所有停止运行的容器
# docker container prune

删除所有未被挂载的卷
# docker volume prune

删除所有网络
# docker network prune

删除docker所有资源
# docker system prune

四、 Docker容器镜像

4.1 Docker容器镜像操作

4.1.1 查看本地容器镜像

4.1.1.1 使用docker images命令查看

# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
bash         latest    5557e073f11c   2 weeks ago    13MB
nginx        latest    605c77e624dd   3 weeks ago    141MB
centos       latest    5d0da3dc9764   4 months ago   231MB

4.1.1.2 使用docker image list命令查看

# docker image list
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
bash         latest    5557e073f11c   2 weeks ago    13MB
nginx        latest    605c77e624dd   3 weeks ago    141MB
centos       latest    5d0da3dc9764   4 months ago   231MB

4.1.1.3 查看docker容器镜像本地存储位置

考虑到docker容器镜像会占用本地存储空间,建议搭建其它存储系统挂载到本地以便解决占用大量本地存储的问题。

# ls /var/lib/docker
buildkit  containers  image  network  overlay2  plugins  runtimes  swarm  tmp  trust  volumes

4.1.2 搜索Docker Hub容器镜像

4.1.2.1 命令行搜索

# docker search centos

输出
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                            The official build of CentOS.                   6987      [OK]
ansible/centos7-ansible           Ansible on Centos7                              135                  [OK]
consol/centos-xfce-vnc            Centos container with "headless" VNC session…   135                  [OK]

4.1.2.2 Docker Hub Web界面搜索

4.1.3 Docker 容器镜像下载

# docker pull centos

4.1.4 Docker容器镜像删除方法

# docker rmi centos
Untagged: centos:latest
Untagged: centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Deleted: sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6
Deleted: sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59

或者

# docker rmi 5d0da3dc9764

5.2 Docker容器镜像介绍

5.2.1 Docker Image

  • Docker 镜像是只读的容器模板,是Docker容器基础

  • 为Docker容器提供了静态文件系统运行环境(rootfs)

  • 是容器的静止状态

  • 容器是镜像的运行状态

5.2.2 联合文件系统(必知)

5.2.2.1 联合文件系统定义
  • 联合文件系统(union filesystem)

  • 联合文件系统是实现联合挂载技术的文件系统

  • 联合挂载技术可以实现在一个挂载点同时挂载多个文件系统,将挂载点的原目录与被挂载内容进行整合,使得最终可见的文件系统包含整合之后的各层文件和目录

用人话说就是看到一个总的文件系统,里面实际上是各层文件系统(有些层是只读、有些是可读写)叠加起来,这样最终的文件系统会包含所有底层的文件和目录,像盖房子一层一层,你在docker pull下载镜像是会看到有很多层。

容器文件系统有多种存储驱动实现方式:aufs,devicemapper,overlay,overlay2 等。

5.2.2.2 图解

5.2.3.1 查看Docker Host存储驱动方式

# docker info | grep overlay
 Storage Driver: overlay2

6.3 Docker容器镜像操作命令

6.3.1 docker commit

docker 通过 commit 和 build 操作实现镜像的构建。commit 将容器提交为一个镜像,build 在一个镜像的基础上构建镜像。

# docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS          PORTS     NAMES
355e99982248   centos:latest   "bash"                   21 minutes ago   Up 21 minutes             fervent_perlman

# docker commit 355e99982248
sha256:8965dcf23201ed42d4904e2f10854d301ad93b34bea73f384440692e006943de

注意sha开头 8965

# docker images
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
<none>       <none>    8965dcf23201   About a minute ago   231MB

image 短 ID 8965dcf23201 即为容器提交的镜像

6.3.2 docker save

导出容器镜像,方便分享。

# docker save -o centos.tar centos:latest  

# ls

centos.tar 

6.3.3 docker load

把他人分享的容器镜像导入到本地

# docker load -i centos.tar

6.3.4 docker export

把正在运行的容器导出

# docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED       STATUS       PORTS     NAMES
355e99982248   centos:latest   "bash"                   7 hours ago   Up 7 hours             fervent_perlman

# docker export -o centos7.tar 355e99982248

# ls
centos7.tar

6.3.5 docker import

导入使用docker export导出的容器做为本地容器镜像。

# docker import centos7.tar centos7:v1

七、Docker 容器镜像加速器及本地容器镜像仓库

7.1 容器镜像加速器

由于国内访问国外的容器镜像仓库dockerhub速度比较慢,因此国内企业创建了容器镜像加速器,以方便国内用户使用容器镜像。

7.1.1 获取阿里云容器镜像加速地址

7.1.2 配置docker daemon使用加速器

添加daemon.json配置文件
# vim /etc/docker/daemon.json
# cat /etc/docker/daemon.json
{
        "registry-mirrors": ["https://s27w6kze.mirror.aliyuncs.com"]
}

重启docker
# systemctl daemon-reload
# systemctl restart docker

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号