hengdin

导航

 

1. 说明

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

2. 卸载旧版

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

3. 安装yum 工具(这一步非必须,可以跳过)

3.1 首先需要大家虚拟机联网,安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

2. 更新本地yum镜像源(官方镜像比较慢 不推荐,推荐阿里镜像仓库):

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast    #安装前先更新yum软件包索引

4. 安装docker-ce

4.1 说明

Docker相关组件:docker-ce-cli、docker-ce和containerd.io的区别

概述
docker-ce-cli 是Docker的命令行客户端,用于与Docker守护程序交互;docker-ce 是Docker的社区版,提供了完整的容器化平台;而containerd.io 则是底层的容器运行时组件,用于管理容器的生命周期和镜像管理。这些组件在Docker生态系统中各自发挥着不同的作用,共同构成了强大的容器化解决方案。

Docker-ce-cli
Docker-ce-cli 是Docker的命令行客户端工具(Command Line Interface)。它允许用户通过命令行界面与Docker守护程序进行交互,从而管理容器和镜像。使用docker命令,可以构建、运行、停止、删除容器,以及管理Docker镜像、网络、卷等。Docker-ce-cli 提供了与Docker守护程序通信的途径,使可以轻松地管理容器化应用。

Docker-ce
Docker-ce,全称为Docker Community Edition,是Docker的社区版。它是一个完整的容器化平台,包括了Docker-ce-cli以及其他必要的组件,如Docker守护程序和基础设施管理工具。广义来说,docker-ce包含了dockerd(Docker守护进程)、docker命令行工具、docker-compose等组件;狭义上来讲,docker-ce 是与 docker containerd.io、docker-ce-cli 并列的服务组件。Docker-ce 提供了构建、发布和运行容器化应用所需的一切,使开发者能够更加高效地管理和部署应用程序。它还支持多种操作系统,包括Linux、Windows和macOS。

Containerd.io
Containerd.io 是一个面向容器运行时的基本组件。它充当了Docker引擎的核心,负责管理容器的生命周期、镜像管理和存储。实际上,Docker-ce内部使用containerd.io来处理容器的创建、销毁和运行等操作。containerd.io 的设计更加注重稳定性和可扩展性,使其成为容器生态系统的关键基础。

4.2 安装

yum install -y docker-ce      #或以下

后续的 docker-ce-cli containerd.io 其实可以不用安装

yum install docker-ce docker-ce-cli containerd.io

5. 配置信息

mkdir -p /etc/docker/
vi /etc/docker/daemon.json

5.1 镜像加速器

使用docker拉取镜像的时候,有时候会卡在中途死活下载不完。一般这种情况就是因为docker默认的镜像源是Dockerhub,而这个网站在域外。所以和Ubuntu换国内源一样,我们也可以对docker换国内镜像源。
docker的镜像源文件配置在 /etc/docker/daemon.json处,如果没有的话我们就创建一个然后再修改。

常见的国内源有:

Docker国内镜像源:https://registry.docker-cn.com
中科大源:https://docker.mirrors.ustc.edu.cn
网易源:https://hub-mirror.c.163.com
百度源:https://mirror.baidubce.com
腾讯源:https://ccr.ccs.tencentyun.com
阿里源:需要登陆cr.console.aliyun.com

docker 拉取镜像本身是从官网拉取,当然了,现在国内无法拉取镜像了,不过还是先配置上。

{
    "registry-mirrors": [
        "https://registry.docker-cn.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://ccr.ccs.tencentyun.com"
    ]
}

重启docker,注意由于走的是守护程序daemon,所以daemon进程也需要重启。

sudo systemctl daemon-reload		#重启daemon进程
sudo systemctl restart docker		#重启docker

最后我们再验证一下是否修改成功,运行

docker info

在长串info信息中如果出现类似下文的内容:

 Registry Mirrors:
  https://docker.mirrors.ustc.edu.cn/
  http://hub-mirror.c.163.com/
  https://mirror.ccs.tencentyun.com/
  https://registry.docker-cn.com/

那就说明我们的docker国内镜像源修改成功了。

5.2 数据存储位置

docker 默认的路径是在 /var/lib/docker,该路径是系统路径,分配的存储容量有限,达到上限后会导致容器停止或者无法启动,因此需要修改。

配置内容

"data-root":"/home/disk2/docker/data"

效果如下:

[root@192 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 7.8G     0  7.8G   0% /dev
tmpfs                    7.8G     0  7.8G   0% /dev/shm
tmpfs                    7.8G  8.6M  7.8G   1% /run
tmpfs                    7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/mapper/centos-root   50G  2.5G   48G   5% /
/dev/sda2               1014M  185M  830M  19% /boot
/dev/mapper/centos-home  965G  704M  964G   1% /home
/dev/sda1                200M   12M  189M   6% /boot/efi
tmpfs                    1.6G     0  1.6G   0% /run/user/0
overlay                  965G  704M  964G   1% /home/disk2/docker/data/overlay2/04b88b16d2a99ec3e55e3053aa40039be5130aa200fa7655ecc1c33e5aef04ec/merged

5.3 总的内容如下:

{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"],
"data-root":"/home/disk2/docker/data"
}

6. 启动

6.1 说明

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙!!

启动docker前,一定要关闭防火墙!!

启动docker前,一定要关闭防火墙!!

6.2 防火墙关闭命令

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

6.3 docker的启动,停止,重启 命令

通过命令启动docker:

systemctl start docker  # 启动docker服务
systemctl stop docker  # 停止docker服务
systemctl restart docker  # 重启docker服务

6.4 确认启动是否成功

6.4.1 方式一:

docker -v
docker version
[root@192 ~]# docker version
Client: Docker Engine - Community
 Version:           26.1.4
 API version:       1.45
 Go version:        go1.21.11
 Git commit:        5650f9b
 Built:             Wed Jun  5 11:32:04 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          26.1.4
  API version:      1.45 (minimum version 1.24)
  Go version:       go1.21.11
  Git commit:       de5c9cf
  Built:            Wed Jun  5 11:31:02 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.33
  GitCommit:        d2d58213f83a351ca8f528a95fbd145f5654e957
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

如果能正常显示,表示启动成功

6.4.2 方式二:

docker run hello-world
出现以下信息说明启动成功了
Hello from Docker!
This message shows that your installation appears to be working correctly.

6.4.3 启动不成功

如果启动docker启动不成功有可能是daemon.json加速器里的内容可能是空格引起的,用tab按键进行重新编排,重新重启即可解决

7. 设置开机启动

systemctl enable docker.service

8. 解决docker每次都需要输入sudo的权限问题

# 添加docker用户组
sudo groupadd docker
# 将当前用户添加到docker用户组中
sudo gpasswd -a $USER docker
# 更新用户组
newgrp docker
# 重启docker
sudo service docker restart

9. docker命令走代理

由于目前国内docker镜像源都无法使用,需要使用国外的,因此,需要docker pull命令,走我们的代理。

我们在docker的进程服务文件夹配置我们的代理设置,如果没有我们就新建这个文件夹:

sudo mkdir /etc/systemd/system/docker.service.d

然后在docker.service.d文件夹里新建我们的代理文件proxy.conf

sudo vim /etc/systemd/system/docker.service.d/proxy.conf

并把文件写入下面这个格式:

[Service] 
Environment="HTTP_PROXY=代理服务器ip:port" 
Environment="HTTPS_PROXY=代理服务器ip:port"

保存并退出proxy.conf文件,和更改镜像源一样,重启docker,并重启daemon进程。

sudo systemctl daemon-reload		#重启daemon进程
sudo systemctl restart docker		#重启docker

最后我们仍然是验证一下是否修改成功,运行

docker info

在长串info信息中如果出现类似下文的内容:

HTTP Proxy: 代理服务器ip:port
HTTPS Proxy: 代理服务器ip:port

那就说明我们已经成功设置docker pull命令走代理了,一般情况下也就不会出现拉取镜像卡死的情况了。

10. docker的常用命令

查看docker状态:systemctl status docker
启动docker:systemctl start docker
停止docker:systemctl stop docker
拉取镜像:docker pull 名称
查看镜像:docker images
删除镜像:docker rmi 镜像id
查看正在启动的容器:docker ps
启动容器:docker start 容器名称
查看容器信息:docker inspect mongo
进入容器:docker exec -it 容器名称 /bin/bash
查看docker网络:docker network ls
当前使用docker镜像的容器(以monggodb为例):docker container ls
查看所有容器:docker ps -a
当前正在使用的所有容器:docker container ls -all
停止容器:docker stop 名称
删除容器(容器需要停止运行再删除):docker container rm 名称
删除所有容器:docker rm $(docker ps -a -q)
查看容器IP地址:docker inspect 321a999f2ecc | grep IPAddress
posted on 2024-09-21 10:13  hengdin  阅读(276)  评论(0)    收藏  举报