Docker介绍,Docker安装

docker镜像仓库官网

一、Docker的基本概念

1.Docker的三大核心组件

docker 镜像 --------docker images

docker 仓库---------docker registeries

docker 容器---------docker containers

2.Docker 镜像

Docker镜像是运行docker容器时的只读模板,每一个镜像由一系列的层组成,Docker 使用 UnionFS 来将这些层联合到单独的镜像中。UnionFS 允许独立文件系统中的文件和文件夹(称之为分支)被透明覆盖,形成一个单独连贯的文件系统。正因为有了这些层的存在,Docker 是如此的轻量。当你改变了一个 Docker 镜像,比如升级到某个程序到新的版本,一个新的层会被创建。因此,不用替换整个原先的镜像或者重新建立(在使用虚拟机的时候你可能会这么做),只是一个新的层被添加或升级了。现在你不用重新发布整个镜像,只需要升级,层使得分发 Docker 镜像变得简单和快速。
在 Docker 的术语里,一个只读层被称为镜像,一个镜像是永久不会变的。

由于 Docker 使用一个统一文件系统,Docker 进程认为整个文件系统是以读写方式挂载的。 但是所有的变更都发生顶层的可写层,而下层的原始的只读镜像文件并未变化。由于镜像不可写,所以镜像是无状态的。

每一个镜像都可能依赖于由一个或多个下层的组成的另一个镜像。下层那个镜像是上层镜像的父镜像。

镜像名字:

registry/repo:tag

daocloud.io/library/centos:7

基础镜像:

一个没有任何父镜像的镜像,谓之基础镜像。

镜像ID:

所有镜像都是通过一个 64 位十六进制字符串 (内部是一个 256 bit 的值)来标识的。 为简化使用,前 12 个字符可以组成一个短ID,可以在命令行中使用。短ID还是有一定的碰撞机率,所以服务器总是返回长ID。

3、Docker 仓库

用来保存镜像,可以理解为代码控制中的代码仓库,Docker仓库分为公有和私有的概念:

公有的 Docker 仓库名字是 Docker Hub。Docker Hub 提供了庞大的镜像集合供使用。这些镜像可以是自己创建,或者在别人的镜像基础上创建。Docker 仓库是 Docker 的分发部分。

4.Docker容器

Docker容器和文件架很类似,一个Docker容器包含了某个应用运行所需的环境,每一个Docker容器都是由Docker镜像创建的,Docker容器可以运行,开始,停止,移动或者删除,每一个Docker容器都是独立安全的应用平台

二、Docker安装

1、关闭防火墙和selinux

[root@localhost ~]# systemctl stop firewalld && setenforce 0

2、配置aliyun的Docker源

[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 git
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

3、安装docker

3.1查看docker版本

[root@localhost ~]# yum list docker-ce --showduplicates
已加载插件:fastestmirror
Repository docker-ce-stable is listed more than once in the configuration
Loading mirror speeds from cached hostfile
可安装的软件包
docker-ce.x86_64                                   17.03.0.ce-1.el7.centos                                   docker-ce-stable
docker-ce.x86_64                                   17.03.1.ce-1.el7.centos                                   docker-ce-stable
docker-ce.x86_64                                   17.03.2.ce-1.el7.centos                                   docker-ce-stable
docker-ce.x86_64                                   17.03.3.ce-1.el7                                          docker-ce-stable
docker-ce.x86_64                                   17.06.0.ce-1.el7.centos                                   docker-ce-stable
docker-ce.x86_64                                   17.06.1.ce-1.el7.centos                                   docker-ce-stable

3.2 安装最新版的docker

[root@localhost ~]# yum install docker-ce -y

安装较旧版本(比如Docker 17.03.2) :需要指定完整的rpm包的包名,并且加上**--setopt=obsoletes=0**参数:

yum install -y --setopt=obsoletes=0 \

docker-ce-17.03.2.ce-1.el7.centos.x86_64 \

docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch

4、启动Docker服务

[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

5、查看docker版本

docker -v

docker version

[root@localhost ~]# docker -v
Docker version 24.0.7, build afdd53b

6.查看docker运行状态

[root@localhost ~]# docker info
Client: Docker Engine - Community
 Version:    24.0.7
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.11.2
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.21.0
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 24.0.7
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 3dd1e886e55dd695541fdcd67420c2888645a495
 runc version: v1.1.10-0-g18a0cb0
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
 Kernel Version: 3.10.0-1160.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 3.682GiB
 Name: localhost.localdomain
 ID: 67b53910-1166-48f6-9bfd-68fb06c60cf7
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

7、生产docker的环境配置

[root@localhost ~]# sudo mkdir -p /etc/docker
[root@localhost ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://pilvpemn.mirror.aliyuncs.com"],
>   "exec-opts": ["native.cgroupdriver=systemd"],
>   "log-driver": "json-file",
>   "log-opts": {
>     "max-size": "100m"
>   },
>   "storage-driver": "overlay2"
> }
> EOF
{
  "registry-mirrors": ["https://pilvpemn.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
[root@localhost ~]# sudo systemctl daemon-reload
[root@localhost ~]# sudo systemctl restart docker

一定注意编码问题,出现错误---查看命令:journalctl -amu docker 即可发现错误

!扩展:修改docker的数据目录

1.查看原数据目录

2,修改目录

[root@localhost ~]# vim  /usr/lib/systemd/system/docker.service
[root@localhost ~]# mkdir /opt/data -p
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker info | grep  Root 
 Docker Root Dir: /opt/data
相关推荐
哎呦没15 分钟前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
雪域迷影34 分钟前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
编程、小哥哥42 分钟前
netty之Netty与SpringBoot整合
java·spring boot·spring
福大大架构师每日一题2 小时前
22.1 k8s不同role级别的服务发现
容器·kubernetes·服务发现
IT学长编程2 小时前
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·玩具租赁系统
莹雨潇潇2 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
杨哥带你写代码2 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
郭二哈3 小时前
C++——模板进阶、继承
java·服务器·c++
tangdou3690986553 小时前
1分钟搞懂K8S中的NodeSelector
云原生·容器·kubernetes
A尘埃3 小时前
SpringBoot的数据访问
java·spring boot·后端