docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker容器指令与数据库容器化

Docker容器核心指令与数据库容器化实践指南

作者:敲上瘾

随着容器化技术的快速发展,许多企业开始将其作为软件开发和部署的核心工具,容器化提供了更高的灵活性、资源效率和环境一致性,这篇文章主要介绍了Docker容器核心指令与数据库容器化实践的相关资料,需要的朋友可以参考下

概念简介

什么是容器?

容器是一种标准的软件单元,它将代码及其所有依赖关系打包在一起,从而使应用能够从一个计算环境快速、可靠地运行到另一个计算环境。您可以把它想象成一个轻量化的、标准化的“软件集装箱”。

镜像跑起来后就是容器,就像C++中类实例化后就是对象一样。镜像本身是只读的。当从一个镜像启动一个容器时,Docker会在镜像的所有层之上添加一个可写的容器层。

为什么需要容器?

  1. 提高资源利用率:提高资源利用率,使用容器能实现在一台服务器运行各种系统。
  2. 环境标准化:用同一个镜像实例化的容器使得开发、测试、预发布和生产环境中完全一致地运行。
  3. 资源弹性伸缩:可以根据实际情况灵活控制资源的分配。
  4. 差异化环境: 一个复杂的应用可能包含多个服务(微服务架构),这些服务可能依赖于不同的、甚至冲突的语言运行时和库版本,把这些服务部署到不同容器,每个容器都拥有独立的用户空间和依赖项,能实现彼此完全隔离,互不干扰。
  5. 沙箱安全:当一个容器崩了,宿主机和其他容器依旧正常
  6. 启动速度快:容器本质是主机操作系统上的一个隔离进程,无需启动整个操作系统内核。因此其启动速度极快,可以达到毫秒到秒级。

容器生命周期

容器指令

1. 命令详解

docker run

功能: 创建一个新的容器并运行一个命令

语法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

别名:docker container run

关键参数:

示例:

到官网找到centos7

查看宿主机版本:cat /etc/*release*

将centos:7拉取到本地:docker pull centos:7

运行centos:7:docker run centos:7

这里执docker run不带任何选项看上去没有任何效果,其实这个容器已经被打开了但因为没交互所以退出了。

使用docker ps -a可以看到历史执行过的容器

添加-it选项以交互形式运行容器,如下:

注意:通常不会单独使用-i或-t选项,需要两个一起使用,即-it(常用于交互式容器)

接下来我们运行一个nginx:1.24.0容器,如果本地没有会自动从服务器拉取。

使用docker ps查看运行状态

当我们在浏览器中直接访问服务器(宿主机)时,访问的是宿主机本身的服务(如果有的话)。Docker容器拥有独立的网络命名空间,外网无法直接访问容器内的Nginx服务。需要通过端口映射将宿主机的端口与容器的端口进行绑定。例如,将宿主机的7070端口映射到容器Nginx的80端口后,当访问宿主机IP的7070端口时,流量会被自动转发到容器内部的80端口,从而访问到容器中的Nginx服务。

如下-p选项的使用:

-P是绑定随机端口,后面不用带任何信息,该选项很少使用,如:docker run -P -d nginx:1.24.0

--name选项改变容器名字,使用新起的容器名与其交互会变得很方便。

-h:改变容器主机名

-e:添加容器的环境变量

-m:设置容器使用内存最大值,如下给限定容器内存使用500MB
docker run -d -m 500m --name mynginx3 nginx:1.24.0
docker stats mynginx3

-rm选项:shell 退出的时候自动删除容器,使用docker ps -a是查不到的。

如:docker run -it --name=mycentos4 -rm centos:7

docker create

功能:创建一个新的容器但不启动

语法:

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

别名:docker container create

关键参数:和run的关键参数相同

docker ps

功能: 列出运行的容器信息

语法:

docker ps [OPTIONS]

别名:docker container ls, docker container list, docker container ps

关键参数:

docker logs

功能:查看容器日志

语法:

docker logs [OPTIONS] CONTAINER

别名:docker container logs

关键参数:

docker attach

功能:连接到正在运行中的容器。

语法:

docker attach [OPTIONS] CONTAINER

别名:docker container attach

关键参数:

示例:docker attach --sig-proxy myweb1

如上不加--sig-proxy参数的话ctrl+c会直接停止容器

docker exec

功能:在容器中执行命令

语法:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

别名:docker container exec

关键参数:

示例:

不带bash可以一次性进行交互

docker stop

功能:停止启动的容器

语法:

docker start [OPTIONS] CONTAINER [CONTAINER...]

别名:docker container start

docker start

功能:启动停止的容器

语法:

docker start [OPTIONS] CONTAINER [CONTAINER...]

别名:docker container start

docker restart

功能:重启容器

语法:

docker restart [OPTIONS] CONTAINER [CONTAINER...]

别名:docker container restart

关键参数:

docker kill

功能:强制退出容器

语法:

docker kill [OPTIONS] CONTAINER [CONTAINER...]

别名:docker container kill

关键参数:

docker top

功能:查看容器中运行的进程信息,支持 ps 命令参数。

语法:

docker top CONTAINER [ps OPTIONS]

别名: docker container top

示例:

docker stats

功能:显示容器资源的使用情况,包括:CPU、内存、网络I/O等。

语法:

docker stats [OPTIONS] [CONTAINER...]

别名:docker container stats

关键参数:

示例:

docker stats myweb2

输出结果:

docker container inspect

功能:查看容器详细信息

语法:

docker container inspect [OPTIONS] CONTAINER [CONTAINER...]

关键参数:

注:docker inspect会自动检查是镜像还是容器然后显示相应信息

docker port

功能: 用于列出指定的容器的端口映射,或者查找将 PRIVATE_PORT NAT 到面向公众的端口。

语法:

docker port CONTAINER [PRIVATE_PORT[/PROTO]]

别名:docker container port

示例:

docker cp

功能:在容器和宿主机之间拷贝文件

语法:

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH  
docker cp [OPTIONS] SRC_PATH - CONTAINER:DEST_PATH

别名:docker container cp

示例:

浏览器访问效果:

注意:容器之间不能互相拷贝,只能先拷贝到宿主机,再由宿主机拷贝到另一个容器。

docker diff

功能:检查容器里文件结构的更改

语法:

docker diff CONTAINER

别名:docker container diff

示例:

docker commit

功能:从容器创建一个新的镜像。

语法:

  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

关键参数

注意:在容器里添加或修改的文件也会被提交到镜像

示例:自定义镜像制作

docker pause

功能:暂停容器中所有的进程。

语法

docker pause CONTAINER [CONTAINER...]

别名: docker container pause

docker unpause

功能:恢复容器中所有的进程。

语法:

  docker unpause CONTAINER [CONTAINER...]

别名: docker container unpause

docker rm

功能:删除停止的容器

语法:

  docker rm [OPTIONS] CONTAINER [CONTAINER...]

别名:docker container rm

关键参数:

docker export

功能:导出容器内容为 tar 文件

语法:

docker export [OPTIONS] CONTAINER

别名:docker container export

关键参数:

示例:

docker import

功能:从归档文件中创建镜像。

语法:

docker import [OPTIONS] file[URL] - [REPOSITORY[:TAG]]

别名:docker image import
关键参数:

示例:

注意:export,import会丢失元数据,save,load更为常用。

docker wait

功能:阻塞运行直到容器停止,然后打印出它的退出代码。

语法:

docker wait CONTAINER [CONTAINER...]

别名:docker container wait

docker rename

功能:重命名容器

语法:

docker rename CONTAINER NEW_NAME

别名:docker container rename

示例:

docker container prune

功能:删除所有停止的容器

语法:

docker container prune [OPTIONS]

关键参数:

示例:

docker update

功能:更新容器配置

语法:

docker update [OPTIONS] CONTAINER [CONTAINER...]

别名:docker container update

关键参数:

容器的模式

交互模式

MySQL与Redis容器化部署

1.MYSQL容器安装

在官网docker hub找到mysql版本,比如我们使用mysql:5.7版本
直接run创建并运行容器(如果没有镜像会自动拉取)

  1. 拉取创建并运行容器:
docker run --name=qsy_mysql -e MYSQL_ROOT_PASSWORD=a@123456 -p 7306:3306 -d mysql:5.7
  1. 与容器交互:
docker exec -it qsy_mysql bash
  1. 登陆MySQL:
mysql -u root -p

也可在可视化工具远程连接数据库

2.Redis容器安装

同样到docker hub搜索redis版本,例如使用redis:7

  1. 拉取创建并启动redis:
docker run --name myredis -d -p 45446:6379 redis:7
  1. 与redis容器进行交互:
docker exec -it myredis bash
  1. 登陆redis
redis-cli

总结

到此这篇关于Docker容器核心指令与数据库容器化实践指南的文章就介绍到这了,更多相关Docker容器指令与数据库容器化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文