重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首选,如果之前使用过redis容器,我们需要先remove掉之前的容器
成都创新互联,专注为中小企业提供官网建设、营销型网站制作、响应式网站、展示型网站制作、网站建设等服务,帮助中小企业通过网站体现价值、有效益。帮助企业快速建站、解决网站建设与网站营销推广问题。
然后创建redis容器,并运行
进入redis容器中
接着我们通过 redis-cli 连接测试使用 redis 服务
setex指令 可以设置数据存在的时间, setex key second value
MSET 一次设置多个key-value
MGET一次获取多个key-value
HGET
HGETALL
Hlen和hexist
Lpush 和 Lrange
Lpop和Rpop 从链表取出并移走数据
删除链表所有数据 DEL
字符串无序 不能重复
从连接池中Get出一个conn连接
Docker 提供了一个与 Docker 守护进程交互的 API (称为Docker Engine API),我们可以使用官方提供的 Go 语言的 SDK 进行构建和扩展 Docker 应用程序和解决方案。
转自:
整理:地鼠文档
通过下面的命令就可以安装 SDK 了:
该部分会介绍如何使用 Golang + Docker API 进行管理本地的 Docker。
第一个例子将展示如何运行容器,相当于 docker run docker.io/library/alpine echo "hello world" :
还可以在后台运行容器,相当于 docker run -d bfirsh/reticulate-splines :
列出正在运行的容器,就像使用 docker ps 一样:
如果是 docker ps -a ,我们可以通过修改 types.ContainerListOptions 中的 All 属性达到这个目的:
通过上面的例子,我们可以获取容器的列表,所以在这个案例中,我们可以去停止所有正在运行的容器。
通过指定容器的 ID,我们可以获取对应 ID 的容器的日志:
获取本地所有的镜像,相当于 docker image ls 或 docker images :
拉取指定镜像,相当于 docker pull alpine :
除了公开的镜像,我们平时还会用到一些私有镜像,可以是 DockerHub 上私有镜像,也可以是自托管的镜像仓库,比如 harbor 。这个时候,我们需要提供对应的凭证才可以拉取镜像。
值得注意的是:在使用 Docker API 的 Go SDK 时,凭证是以明文的方式进行传输的,所以如果是自建的镜像仓库,请务必使用 HTTPS !
我们可以将一个已有的容器通过 commit 保存成一个镜像:
当然,除了可以管理本地的 Docker , 我们同样也可以通过使用 Golang + Docker API 管理远程的 Docker 。
默认 Docker 是通过非网络的 Unix 套接字运行的,只能够进行本地通信( /var/run/docker.sock ),是不能够直接远程连接 Docker 的。
我们需要编辑配置文件 /etc/docker/daemon.json ,并修改以下内容(把 192.168.59.3 改成你自己的 IP 地址),然后重启 Docker :
创建 client 的时候需要指定远程 Docker 的地址,这样就可以像管理本地 Docker 一样管理远程的 Docker 了:
现在已经有很多可以管理 Docker 的产品,它们便是这样进行实现的,比如: portainer 。
Docker是一个使用Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的容器中,然后发布到任何流行的机器上。Docker的迅猛发展和全新理念,席卷了整个IT界,成为云时代的一颗新星。
Docker相比于传统虚拟化方式具有更多的优势:
我们可以从下面这张表格很清楚地看到容器相比于传统虚拟机的特性的优势所在:
企业使用一项技术是为了解决当前企业环境中存在的某个痛点。目前整个软件行业存在着以下几个痛点。
(1)软件更新发布及部署低效,过程繁琐且需要人工介入。
(2)环境一致性难以保证。
(3)不同环境之间迁移成本太高。
Docker在很大程度上解决了上述问题。
首先, Docker的使用十分简单,从开发的角度来看就是“三步走”:构建、运输、运行。其中,关键步骤是构建环节,即打包镜像文件。但是从测试和运维的角度来看,那就只有两步:复制、运行。有了这个镜像文件,想复制到哪里运行都可以,完全和平台无关。
Docker这种容器技术隔离出了独立的运行空间,不会和其他应用争用系统资源,不需要考虑应用之间的相互影响。
其次, 因为在构建镜像时就处理完了服务程序对于系统的所有依赖,所以在使用时,可以忽略原本程序的依赖以及开发语言。对测试和运维人员而言,可以更专注于自己的业务内容。
最后, Docker为开发者提供了一种开发环境的管理办法,帮助测试人员保证环境的同步,为运维人员提供了可移植的标准化部署流程。
动力节点的 Docker入门教程,将带你一步一步从基础到实践学习Docker,了解什么是Docker,Docker的核心思想、核心组件诸如镜像,仓库,容器等,通过大量的实际操作循序渐进地介绍Docker,带你轻松玩转Docker,Docker技术也是当今IT从业人员的必备技能之一。
在线学习:
资料下载:
•001.Docker视频教程:虚拟化技术发展史
•002.Docker视频教程:虚拟化技术是什么
•003.Docker视频教程:虚拟化技术的分类
•004.Docker视频教程:虚拟化技术的优缺点
•005.Docker视频教程:容器技术的发展
•006.Docker视频教程:Docker的发展 历史
•007.Docker视频教程:Docker是什么
•008.Docker视频教程:容器和虚拟机的区别(1)
•009.Docker视频教程:容器和虚拟机的区别(2)
•010.Docker视频教程:为什么要使用Docker视频教程:Docker
•011.Docker视频教程:Docker的版本
•012.Docker视频教程:Docker的安装
•013.Docker视频教程:Docker服务启动
•014.Docker视频教程:Docker服务信息
•015.Docker视频教程:Docker使用初体验-Docker的运行机制
•016.Docker视频教程:Docker使用初体验-Docker官方镜像仓库
•017.Docker视频教程:Docker使用初体验-Docker官方镜像下载
•018.Docker视频教程:Docker使用初体验-Docker镜像启动运行
•019.Docker视频教程:Docker使用初体验-访问容器中的Tomcat服务
•020.Docker视频教程:Docker使用初体验-Docker的网络访问机制
•021.Docker视频教程:Docker使用初体验-进入Docker容器内部
•022.Docker视频教程:Docker使用初体验-补充说明
•023.Docker视频教程:Docker的体系架构(1)
•024.Docker视频教程:Docker的体系架构(2)r
•025.Docker视频教程:Docker核心组件
•026.Docker视频教程:Docker核心组件-镜像的基本概念
•027.Docker视频教程:Docker核心组件-镜像的组成结构
•028.Docker视频教程:Docker核心组件-镜像的日常操作(1)
•029.Docker视频教程:Docker核心组件-镜像的日常操作(2)
•030.Docker视频教程:Docker核心组件-镜像的日常操作(3)
•031.Docker视频教程:Docker核心组件-镜像的日常操作(4)
•032.Docker视频教程:Docker核心组件-容器的基本概念
•033.Docker视频教程:Docker核心组件-容器的日常操作(1)
•034.Docker视频教程:Docker核心组件-容器的日常操作(2)
•035.Docker视频教程:Docker核心组件-仓库的基本概念
•036.Docker视频教程:Docker核心组件-官方仓库与阿里云仓库
•037.Docker视频教程:Docker核心组件-仓库的日常操作(1)
•038.Docker视频教程:Docker使用示例-安装MySQL
•039.Docker视频教程:Docker使用示例-访问与操作MySQL容器
•040.Docker视频教程:Docker使用示例-安装Nginx
•041.Docker视频教程:Docker使用示例-访问Nginx容器
•042.Docker视频教程:Docker使用示例-容器Nginx部署静态网站
•043.Docker视频教程:Docker使用示例-安装Zookeeper
•044.Docker视频教程:Docker使用示例-安装ActiveMQ
•045.Docker视频教程:认识Dockerfile文件
•046.Docker视频教程:Dockerfile的基本结构
•047.Docker视频教程:Dockerfile常用指令
•048.Docker视频教程:自定义JDK镜像Dockerfile文件
•049.Docker视频教程:自定义JDK镜像构建与运行测试
•050.Docker视频教程:自定义Tomcat镜像Dockerfile文件
•051.Docker视频教程:自定义Tomcat镜像构建与运行测试
•052.Docker视频教程:自定义MySQL镜像Dockerfile文件
•053.Docker视频教程:自定义MySQL镜像构建与运行测试
•054.Docker视频教程:自定义Redis镜像Dockerfile文件
•055.Docker视频教程:自定义Redis镜像构建与运行测试(1)
•056.Docker视频教程:自定义Redis镜像构建与运行测试(2)
•057.Docker视频教程:阿里云容器镜像仓库
•058.Docker视频教程:阿里云镜像仓库管理后台
•059.Docker视频教程:发布镜像到阿里云镜像仓库(1)
•060.Docker视频教程:发布镜像到阿里云镜像仓库(2)
•061.Docker视频教程:发布镜像到阿里云镜像仓库(3)
•062.Docker视频教程:Docker Hub官方镜像加速
•063.Docker视频教程:Docker部署SpringBoot项目-介绍
•064.Docker视频教程:Docker部署SpringBoot项目-本地测试
•065.Docker视频教程:Docker部署SpringBoot项目-基本流程
•066.Docker视频教程:Docker部署SpringBoot项目-打Jar包与War包
•067.Docker视频教程:Docker部署SpringBoot项目-jar项目的镜像构建
•068.Docker视频教程:Docker部署SpringBoot项目-jar项目的镜像运行与测试(1)
•069.Docker视频教程:Docker部署SpringBoot项目-jar项目的镜像运行与测试(2)
•070.Docker视频教程:Docker部署SpringBoot项目-war项目的镜像构建与运行
•071.Docker视频教程:Docker部署SpringBoot项目-war项目的测试
•072.Docker视频教程:Docker保存新镜像
•073.Docker视频教程:Docker保存的新镜像数据验证
容器部署即使用 docker 化部署 golang 应用程序,这是在云服务时代最流行的部署方式,也是最推荐的部署方式。
跨平台交叉编译是 golang 的特点之一,可以非常方便地编译出我们需要的目标服务器平台的版本,而且是静态编译,非常容易地解决了运行依赖问题。
使用以下指令可以静态编译 Linux 平台 amd64 架构的可执行文件:
生成的 main 便是我们静态编译的,可部署于 Linux amd64 上的可执行文件。
我们需要将该可执行文件 main 编译生成 docker 镜像,以便于分发及部署。 Golang 的运行环境推荐使用 alpine 基础系统镜像,编译出的容器镜像约为 20MB 左右。
一个参考的 Dockerfile 文件如下:
其中,我们的基础镜像使用了 loads/alpine:3.8 ,中国国内的用户推荐使用该基础镜像,基础镜像的 Dockerfile 地址: ,仓库地址:
随后使用 " docker build -t main . " 指令编译生成名为 main 的 docker 镜像。
需要注意的是,在某些项目的架构设计中, 静态文件 和 配置文件 可能不会随着镜像进行编译发布,而是分开进行管理和发布。
例如,使用 MVVM 模式的项目中(例如使用 vue 框架),往往是前后端非常独立的,因此在镜像中往往并不会包含 public 目录。而使用了 配置管理中心 (例如使用 consul / etcd / zookeeper )的项目中,也往往并不需要 config 目录。
因此对于以上示例的 Dockerfile 的使用,仅作参考,根据实际情况请进行必要的调整。
使用以下指令可直接运行刚才编译成的镜像:
容器的分发可以使用 docker 官方的平台: ,国内也可以考虑使用阿里云: 。
在企业级生产环境中, docker 容器往往需要结合 kubernetes 或者 docker swarm 容器编排工具一起使用。
容器编排涉及到的内容比较多,感兴趣的同学可以参考以下资料: