Docker安装与介绍
Docker 是一个开源的应用容器引擎,基于Go语言开发,为应用打包、部署平台,而非单纯的虚拟化技术。它允许开发人员将应用程序及其依赖项打包到一个独立的容器中,从而实现快速部署、可移植性和环境一致性。Docker的核心概念包括:
1、容器:它是一种轻量级、可执行的独立软件包,包含应用运行所需的一切要素,如库、系统工具、代码和运行时。容器化技术奖应用程序与底层系统解耦,使得应用可以在几乎任何地方以相同的方式运行。
2、镜像:Docker镜像是一个只读的模板,包含了运行某个软件所需要的所有内容,包括代码、运行时环境、库文件、环境变量和配置文件等。通过镜像,可以创建多个容器实例。
3、仓库:Docker仓库用于存储和分发镜像,类似于Git的代码仓库。最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。
Docker具有的优势:快速部署、微服务架构、轻量级虚拟化、运行环境一致性、可移植性、高效的资源利用、易于部署和扩展、DevOps。
Docker的安装步骤:
- 检查系统版本:确保系统版本满足Docker的最低要求。对于CentOS,通常需要CentOS 7或更高版本,且内核版本高于3.10。
- 更新系统:使用
sudo yum update命令更新系统到最新版本,以确保所有依赖项都是最新的。 - 卸载旧版本(如果已安装):使用
sudo yum remove docker docker-common docker-selinux docker-engine命令卸载旧版本的Docker及其相关组件。 - 安装必要的系统工具:使用
sudo yum install -y yum-utils device-mapper-persistent-data lvm2命令安装Docker所需的一些基础软件包和工具。 - 添加Docker软件源:由于Docker的官方源在国外,下载速度可能较慢,因此建议使用国内的镜像源。执行类似
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo的命令(这里以阿里云为例),添加Docker CE的官方镜像源。 - 更新yum索引:使用
sudo yum makecache fast命令更新yum的软件包索引。 - 安装Docker CE:使用
sudo yum install docker-ce docker-ce-cli containerd.io命令安装Docker CE(社区版)、Docker CE CLI(命令行界面)和containerd.io(Docker的容器运行时)。 - 启动Docker服务:使用
sudo systemctl start docker命令启动Docker服务。 - 设置Docker开机自启(可选):使用
sudo systemctl enable docker命令设置Docker服务开机自启。 - 验证安装:使用
docker --version或docker version命令查看Docker的版本信息,以验证Docker是否成功安装。如果看到版本信息,则说明安装成功。
Docker镜像操作
Docker镜像与容器:镜像可以看作是一个停止运行的容器,或者是一个类(class)的定义。而容器则是镜像的运行时实例,可以看作是一个对象(object)。通过镜像可以创建容器,并在容器中运行应用程序。
-
搜索镜像
- 语法:
docker search 关键字 - 示例:
docker search mysql - 说明:该命令用于在Docker Hub等镜像仓库中搜索指定的镜像。
- 语法:
-
拉取镜像
- 语法:
docker pull 镜像名[:tag](tag表示镜像版本,可以省略,默认为latest) - 示例:
docker pull mysql:8.0.15 - 说明:该命令用于从远程镜像仓库中拉取指定的镜像到本地。
- 语法:
-
查看镜像列表
- 语法:
docker images - 说明:该命令用于查看本地存储的所有Docker镜像。
- 语法:
-
删除镜像
- 语法:
docker rmi 镜像ID | 镜像名:tag - 示例:
docker rmi 7484689f290f或docker rmi mysql:8.0.15 - 说明:该命令用于删除本地指定的Docker镜像。
- 语法:
-
镜像迁移
- 保存镜像:将镜像打包后存储至指定目录。
- 语法:
docker save -o 文件路径 镜像名[:tag] - 示例:
docker save -o /opt/mysql-8.0.15.tar mysql:8.0.15
- 语法:
- 加载镜像:将打包的Docker镜像文件加载到本地。
- 语法:
docker load -i 文件路径 - 示例:
docker load -i /opt/mysql-8.0.15.tar - 加载后的镜像名字和标签均为none,需要通过
docker tag 镜像ID 镜像名:标签命令对名字和标签重新命名。
- 语法:
- 保存镜像:将镜像打包后存储至指定目录。
制作
创建Docker 镜像主要有三种方法:基于现有镜像创建、基于本地模板创建以及基于Dockerfile创建。
-
基于现有镜像创建
- 启动一个镜像并进入容器进行内容修改。
- 使用
docker commit命令将修改后的容器提交为新的镜像。
-
基于本地模板创建
- 使用
docker export命令将本地容器导出为模板文件。 - 使用
docker import命令将模板文件导入为新的镜像。
- 使用
-
基于Dockerfile创建
- Dockerfile是一个文本文件,包含了一系列用于构建镜像的指令和参数。
- 通过编写Dockerfile文件,可以使用
docker build命令来构建新的镜像。 - Dockerfile的常用指令包括:FROM(指定基础镜像)、MAINTAINER(指定镜像维护人信息)、RUN(执行Linux命令)、EXPOSE(指定容器要开启的应用端口号)、ENV(设置环境变量)、ADD/COPY(复制文件或目录到镜像中)、VOLUME(指定容器的匿名数据卷)、USER(指定容器运行的用户)、WORKDIR(指定工作目录)、ARG(构建时传入的参数变量)、CMD/ENTRYPOINT(指定容器启动时执行的命令和参数)等。
注意事项:
- 在进行Docker镜像操作时,需要确保Docker服务已经启动。
- 在拉取或删除镜像时,需要具有相应的权限。
- 在创建镜像时,需要注意Dockerfile的编写规范和格式要求。
- 为了提高镜像的下载速度和稳定性,可以配置国内的镜像源。
上传
- 使用
docker push命令将镜像推送到远程仓库。 - 例如,要将标记为
your-username/my-image:v1.0的镜像推送到Docker Hub,可以使用命令docker push your-username/my-image:v1.0。 - 如果推送到阿里云镜像仓库,则使用命令
docker push registry.cn-hangzhou.aliyuncs.com/your-namespace/your-image:tag
Docker容器运行与访问
- 查看容器状态:
docker ps - 停止容器:
docker stop 容器名称 - 删除容器:
docker rm 容器名称(注意:删除容器前需要确保容器已停止)
运行redis
1、拉取Redis镜像
docker pull redis
这将从Docker hub上下周最新的Redis镜像。如果需要特定版本的Redis,可以在命令后面加上版本号,例如: docker pull redis:6.2.6
2、创建挂载目录(可选)
在生成环境中,统筹需要将Redis的数据和配置文件进行持久化存储,一遍在容器重启后能够恢复数据。
a、在宿主机上创建两个目录,一个用于存放Redis的配置文件,另一个用于存放Redis的数据
mkdir -p /docker/redis/conf
mkdir -p /docker/redis/data
b、将Redis的配置文件(如redis.conf)复制到/docker/redis/conf目录中,并根据需要进行修改。
3、启动Redis容器
docker run -p 6379:6379 --name my-redis -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --restart=always -d redis redis-server /etc/redis/redis.conf
其中:
-p 6379:6379:将宿主机的6379端口映射到容器的6379端口上,这是Redis的默认端口。--name my-redis:为Redis容器指定一个名称(此处为my-redis)。-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf:将宿主机的配置文件挂载到容器的指定位置。-v /docker/redis/data:/data:将宿主机的数据目录挂载到容器的指定位置。--restart=always:设置容器随Docker启动而自动重启。-d:在后台运行容器并返回容器ID。redis redis-server /etc/redis/redis.conf:指定容器启动时运行的命令,即使用指定的配置文件启动Redis服务器。
4、进入Redis容器(可选)
如果需要进入正在运行的Redis热熔器以知行Redis命令,可以使用以下命令:
docker exec -it my-redis redis-cli
其中:
-it:以交互模式进入容器。my-redis:Redis容器的名称。redis-cli:Redis的命令行界面。
进入Redis命令行界面后,可以执行各种Redis命令,如设置键值对、获取键值、列出所有键、删除键等。
运行MySQL
1、拉取MySQL镜像
docker pull mysql:5.7
2、运行MySQL容器
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password -v /path/to/mysql/data:/var/lib/mysql -d mysql
其中:
--name mysql-container:为MySQL容器指定一个名称(此处为mysql-container)。-e MYSQL_ROOT_PASSWORD=your_password:设置MySQL的root用户密码,将your_password替换为实际密码。-d:在后台运行容器并返回容器ID。mysql:指定要运行的镜像名称。- 使用-v将宿主机的目录挂载到容器的数据目录上来实现数据持久化存储,
/path/to/mysql/data是宿主机上的目录,/var/lib/mysql是MySQL容器内的数据目录。
3、连接到MySQL容器
a、进入交互模式
docker exec -it mysql-container bash
b、直接进入MySQL服务器
docker exec -it mysql-container mysql -u root -p