Docker最佳实践(二):安装

前言

大家好,欢迎各位工友。 本篇呢我们就来演示一下如何在CentOS7上安装Docker。

一、安装 Docker 前准备

1. 验证系统内核版本支持

在安装 Docker 前,需验证 CentOS 内核是否支持。执行以下命令:

bash 复制代码
uname -r

确保系统内核版本在 3.10 以上。

1.1 安装 Docker 相关依赖

执行以下命令安装 Docker 运行所需的底层依赖关系的包:

kotlin 复制代码
yum install -y yum-utils device-mapper-persistent-data lvm2
  • yum-utils:提供了额外功能,如包清理、插件等。
  • device-mapper-persistent-data:允许 Docker 使用设备映射技术管理数据存储。
  • lvm2:用于管理逻辑卷的工具。

1.2 配置阿里云 Docker Yum 源

添加阿里云 Docker CE 仓库地址到 yum 仓库列表,注意如果有旧的docker版本需要先卸载干净,避免发生未知的错误。

arduino 复制代码
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

二、安装 Docker

2.1 Docker 版本介绍

目前有两个版本:

  • Docker-CE (Community Edition):社区版(开源免费)。
  • Docker-EE (Enterprise Edition):企业版(闭源收费)。

2.2 安装指定版本的 Docker

查看系统可用的 Docker CE 所有版本及其排序:

bash 复制代码
yum list docker-ce --showduplicates | sort -r

安装指定版本的 Docker CE,示例命令:

yum install docker-ce-18.06.3.ce

安装指定版本需加上版本信息,如 yum install docker-ce-18.06.3.ce,不指定版本默认安装最新稳定版

2.3 启动 Docker

启动 Docker 并检查状态:

lua 复制代码
systemctl start docker
systemctl status docker

若需开机启动,执行:

bash 复制代码
systemctl enable docker

查看 Docker 版本信息:

docker version

三、配置 Docker 镜像加速器

3.1 镜像地址介绍

常用国内镜像站点:

3.2 配置国内镜像地址

以配置阿里云的容器镜像为例:需要先登录到服务控制台:cr.console.aliyun.com/

编辑配置文件 /etc/docker/daemon.json,将专属的镜像地址添加如下,如果目录【/etc/docker】不存在,先创建 mkdir -p /etc/docker

json 复制代码
{
    "registry-mirrors": ["配置的加速地址"]
}

示例配置Docker中国区官方镜像为:

json 复制代码
{
    "registry-mirrors": ["https://registry.docker-cn.com"]
}

重启 Docker 服务:

systemctl daemon-reload
systemctl restart docker

3.3 测试拉取镜像

测试拉取一个较大的镜像(如 MySql):

docker pull mysql:latest

查看已下载的镜像列表:

docker images

四、docker常用命令

4.1 镜像命令

1. 搜索镜像

在Docker中,通过docker search命令可以搜索镜像,以确定其是否存在。例如,搜索 redis 镜像:

sql 复制代码
docker search redis

搜索结果将列出不同账户或组织提交的镜像,包括名称、描述、受欢迎程度(STARTS)、是否为官方镜像(OFFICIAL)、是否自动化构建(AUTOMATED)等信息。

2. 下载镜像

一旦找到目标镜像,可以使用docker pull命令将其拉取到本地。拉取最新版本的镜像:

docker pull 镜像名称

或者可以指定版本来拉取:

docker pull 镜像名称:版本tag

3. 查看本地镜像

下载完成后,可以使用docker images命令查看本地所有镜像信息。包括名称、版本标签、镜像ID、创建时间和大小等信息。

4. 删除本地镜像

如果某个镜像不再需要,可以使用docker rmi命令删除。例如,删除 hello-world 镜像:

docker rmi 镜像ID

如果删除失败,可能是因为存在以该镜像创建的容器,需先删除相关容器或使用强制删除。

5. 查看镜像容器数据卷占用空间

通过docker system df命令可以查看Docker系统资源使用情况,包括镜像、容器和数据卷所占用空间的情况。

6. 导入和导出镜像

  • 导出镜像:使用docker save命令将本地Docker镜像保存为一个tar文件。

    bash 复制代码
    docker save -o /path/to/your_image.tar your_image_name:tag
  • 导入镜像:使用docker load命令将tar文件中的镜像导入。

    css 复制代码
    docker load -i /path/to/your_image.tar

4.2 容器命令

1 启动容器

拉取ubuntu镜像:

docker pull ubuntu

启动Ubuntu容器:

arduino 复制代码
docker run -it --name my-ubuntu ubuntu /bin/bash

解释:

  • docker run: 运行一个新容器。
  • -it: 组合选项,-i表示交互模式,-t为伪终端使输入可见。
  • --name my-ubuntu: 给容器指定名称,可省略。
  • ubuntu: 使用的镜像名称。
  • /bin/bash: 启动Bash shell进行交互操作。

2 退出和进入容器

退出容器两种方式:

  1. 直接退出容器并停止:exit
  2. 退出容器但不停止:Ctrl + P + Q

进入正在运行的容器:

bash 复制代码
docker exec -it 容器ID或名称 /bin/bash

3 查看容器

查看所有正在运行的容器:

docker ps

4 查看所有容器(包括停止的):

css 复制代码
docker ps -a

5 其他命令:

  • 查看最近创建的容器:docker ps -l
  • 查看容器编号:docker ps -q

6 停止、启动、重启、删除容器

停止容器:

arduino 复制代码
docker stop 容器ID/名称

启动已停止的容器:

sql 复制代码
docker start 容器ID/名称

重启容器:

docker restart 容器ID/名称

删除容器:

bash 复制代码
docker rm 容器ID/名称

强制删除容器(包括运行中的):

bash 复制代码
docker rm -f 容器ID/名称

7 守护式容器

以后台方式运行Redis并指定名称:

arduino 复制代码
docker run -d --name myredis redis

8 端口映射

将宿主机端口映射到Redis容器端口:

arduino 复制代码
docker run -d -p 6379:6379 --name myredis redis

多端口映射示例(Ubuntu容器):

css 复制代码
docker run -it --name myUbuntu -p 80:80 -p 8080:8080 Ubuntu /bin/bash

其他内容如重启策略、查看日志、查看信息、文件拷贝、导入导出等操作略过,以上是核心命令和操作。

4.3 其他命令

Docker 服务相关的命令:

  1. 设置Docker开机自启:

    bash 复制代码
    systemctl enable docker
  2. 查看Docker状态:

    lua 复制代码
    systemctl status docker
  3. 停止Docker:

    arduino 复制代码
    systemctl stop docker
  4. 启动Docker:

    sql 复制代码
    systemctl start docker
  5. 重启Docker:

    systemctl restart docker
    

Docker 的其他命令:

  1. 查看概要信息:

    docker info
    
  2. 查看帮助文档:

    bash 复制代码
    docker --help
  3. 查看命令文档:

    bash 复制代码
    docker 具体命令 --help

五、docker 镜像仓库

5.1 制作自己的Docker镜像

制作镜像的方法主要有两种方式:

  • 使用 docker commit 命令;
  • 使用 Dockerfile 文件。

Dockerfile 后面再讲解,下面先讲解使用 docker commit 命令制作镜像。

  1. 拉取基础镜像并创建容器

    • 使用docker pull hello-world命令拉取Ubuntu镜像。
    • 通过docker run -it --name myWord hello-world命令创建名为my-myWord的测试容器。
  2. 保存容器为新镜像

    • 使用docker commit -m="描述信息" -a="作者" 容器ID 镜像名:[版本标签]命令,将修改后的容器保存为新的镜像。

使用 docker images 命令可以看到保存的新镜像。

5.2 上传镜像到阿里云远程仓库

  1. 创建命名空间:在阿里云上创建Docker仓库命名空间用于区分不同用户或项目的镜像。

  2. 创建镜像仓库:在命名空间下,创建新的镜像仓库并填写相关信息。

  1. 上传镜像

    • 登录阿里云Docker仓库:docker login --username=用户名 registry.cn-hangzhou.aliyuncs.com
    • 给本地镜像打标签:docker tag 本地镜像ID registry.cn-hangzhou.aliyuncs.com/命名空间/镜像名:[版本号]
    • 推送镜像至远程仓库:docker push registry.cn-hangzhou.aliyuncs.com/命名空间/镜像名:[版本号]

当给镜像打上新的标签时,Docker会复制该镜像并创建一个新的镜像,带有新的标签。这样做是为了让同一个镜像可以被不同的标签引用,方便管理和使用。尽管看起来是两个不同的镜像,但它们的实际内容是相同的,即镜像的ID是一样的。在推送镜像到远程仓库时,实际上是推送的带有新标签的这个新镜像。 上传后,可以在镜像版本中看到:

5.3 创建完成,显示仓库的使用命令:

  1. 拉取远程镜像 :使用docker pull registry.cn-hangzhou.aliyuncs.com/命名空间/镜像名:[版本号]命令从阿里云仓库拉取镜像。
  2. 运行容器:用拉取的镜像创建并运行新容器,享受预装软件带来的便利。

5.4 搭建私有Docker Registry

前面我们使用的是阿里云镜像仓库,个人版只能自己用,企业版本是收费的。我们可以使用工具搭建我们自己的镜像仓库。类似于使用 GitLab 搭建私有的 Git 仓库,供公司内部使用。

Docker 官方提供了 Docker Registry 私有镜像仓库工具, Docker Registry 也是一个 Docker 镜像,所以使用起来比较简单。具体步骤可以自行百度搜索一下,此处不再赘述。

六、总结

上述我们演示了docker的安装以及常见的命令,后面几篇文章我们接着演示一些常用的组件安装,如mysql,nginx、redis等等。

相关推荐
wuxingge8 小时前
k8s1.30.0高可用集群部署
云原生·容器·kubernetes
志凌海纳SmartX9 小时前
趋势洞察|AI 能否带动裸金属 K8s 强势崛起?
云原生·容器·kubernetes
锅总9 小时前
nacos与k8s service健康检查详解
云原生·容器·kubernetes
BUG弄潮儿10 小时前
k8s 集群安装
云原生·容器·kubernetes
意疏10 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
墨鸦_Cormorant10 小时前
使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
redis·nginx·docker
Code_Artist10 小时前
Docker镜像加速解决方案:配置HTTP代理,让Docker学会科学上网!
docker·云原生·容器
颜淡慕潇11 小时前
【K8S系列】kubectl describe pod显示ImagePullBackOff,如何进一步排查?
后端·云原生·容器·kubernetes
wanmei00211 小时前
Dockerfile复制目录进入镜像里
docker
inter_peng11 小时前
[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法
tcp/ip·docker·eureka