Docker 是一个开源的容器化平台,它可以帮助用户将应用程序和服务打包到 Docker 容器中,并提供一套简单而强大的命令行工具来管理容器和镜像。与传统虚拟机相比,Docker 容器更加轻量级、便捷、高效,并且可以实现跨平台、跨云、快速部署和扩展等优点。
通过 Docker,用户可以创建和运行多个容器,每个容器相互隔离、独立运行,就像是一个轻量级的虚拟机。用户可以使用 Docker 提供的命令行工具来管理容器和镜像,如构建、运行、停止、删除、导入和导出等操作,还可以通过 Docker Hub 等镜像仓库下载和分享 Docker 镜像。
Docker 的应用场景非常广泛,可以用于开发环境搭建、CI/CD 自动化部署、微服务架构、容器云平台、容器编排等方面。在企业级应用中,Docker 已经成为重要的容器化技术之一,并被广泛应用于生产环境。
总之,Docker 是一个非常流行的容器化平台,提供了一种新的方式来构建、发布和运行应用程序和服务,其轻量级、可移植、易于管理和扩展的优点,使其成为越来越多开发者和企业的首选技术。
一个完整的Docker有以下几个部分组成:
docker中有这样几个概念:
yum update -y
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce
systemctl start docker
systemctl enable docker
[root@10 ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:4f53e2564790c8e7856ec08e384732aa38dc43c52f02952483e3f003afbf23db
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
[root@10 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since 三 2023-09-27 08:47:58 CST; 12min ago
Docs: https://docs.docker.com
Main PID: 1536 (dockerd)
Tasks: 34
Memory: 146.8M
CGroup: /system.slice/docker.service
└─1536 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/contai...
9月 27 08:47:58 10.0.1.37 dockerd[1536]: time="2023-09-27T08:47:58.296317622+..."
9月 27 08:47:58 10.0.1.37 dockerd[1536]: time="2023-09-27T08:47:58.457659247+..."
9月 27 08:47:58 10.0.1.37 dockerd[1536]: time="2023-09-27T08:47:58.570299351+..."
9月 27 08:47:58 10.0.1.37 dockerd[1536]: time="2023-09-27T08:47:58.686028344+..."
9月 27 08:47:58 10.0.1.37 dockerd[1536]: time="2023-09-27T08:47:58.868276595+...6
9月 27 08:47:58 10.0.1.37 dockerd[1536]: time="2023-09-27T08:47:58.868391631+..."
9月 27 08:47:58 10.0.1.37 dockerd[1536]: time="2023-09-27T08:47:58.911613133+..."
9月 27 08:47:58 10.0.1.37 systemd[1]: Started Docker Application Container E...e.
9月 27 08:59:16 10.0.1.37 dockerd[1536]: time="2023-09-27T08:59:16.121080761+..."
9月 27 08:59:22 10.0.1.37 dockerd[1536]: time="2023-09-27T08:59:22.111055567+..."
Hint: Some lines were ellipsized, use -l to show in full.
该命令是用来查询当前容器的
#查询全部状态的容器
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE SIZE
e90b8831a4b8 nginx "/bin/bash -c 'mkdir " 11 weeks ago Up 4 hours my_nginx 35.58 kB (virtual 109.2 MB)
00c6131c5e30 telegraf:1.5 "/entrypoint.sh" 11 weeks ago Up 11 weeks my_telegraf 0 B (virtual 209.5 MB)
[root@10 ~]# docker version
Client: Docker Engine - Community
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Git commit: ed223bc
Built: Mon Sep 4 12:35:25 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.6
API version: 1.43 (minimum version 1.12)
Go version: go1.20.7
Git commit: 1a79695
Built: Mon Sep 4 12:34:28 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.22
GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca
runc:
Version: 1.1.8
GitCommit: v1.1.8-0-g82f18fe
docker-init:
Version: 0.19.0
GitCommit: de40ad0
[root@10 ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager:找不到命令
解决:
yum -y install yum-utils
应用程序的开发和测试:Docker可以为应用程序提供稳定的运行环境,使开发人员可以轻松在不同的系统上测试和运行软件,而无需考虑与操作系统或其他应用程序的冲突。
持续集成和持续交付:Docker可以在不同阶段的开发周期中提供完全相同的环境,并且可以在部署到生产服务器之前快速迭代和测试应用程序。
服务器的管理和部署:Docker可以帮助管理员自动化应用程序的部署和操作,也可以轻松地横向扩展和缩小服务器,以便根据需要扩展或减少服务。
云计算和容器服务:Docker可以作为云计算平台的基础架构,例如Kubernetes、Mesos或Docker Swarm,提供高度扩展、可靠性和安全性。
多租户应用程序的隔离:Docker可以为多租户应用程序提供隔离的容器,从而不同租户之间的应用程序和数据可以彼此隔离,提高了安全性。