学习了解使用docker
学习了解使用docker
docker是项目开发部署相关工具容器,本文通过官网等资料阅读学习,简单介绍一些基本使用操作:
- docker是什么
- 2.docker安装使用
- 连接进入docker容器
- docker拉取复制和上传
docker是什么
为什么会出现docker,常使用项目部署开发的人自然能理解,因为docker让服务部署更简单。
下面说一下docker是什么,有什么用,等同与说明为什么会出现docker这种技术。
docker主要是让服务部署更高效。官网称之为容器 container,在项目开发中开发环境/测试环境/生产环境通过docker容器技术统一,减少环境误差导致产生的错误,大大提高开发效率。
镜像技术,隔离环境
我认为docker是一种镜像服务技术,他将原来linux上运行的服务全部放在docker内运行,linux和docker之间有一定的物理隔离和软件版本隔离效果,并且可以复制多个程序而避免重新安装,很好的提高服务器项目部署相关的工作效率,且有增加服务器安全系数。
(甚至介绍通过docker,可以让linux上的程序也能在windows照常运行,目前还没试过)
高效部署服务
当你有一个服务开发部署好了,服务器是linux,里面安装了mysql,nginx,java-application,redis,jdk8;现在服务器要扩展,同样的服务部署到多台服务器,要怎么做才高效? 重新安装mysql,nginx,jdk8 ,然后各种配置端口密码各种参数,再重新启动每个程序? 当你作为一个部署负责人的时候会觉得重复繁琐,并且配置细节很多,不小心会出差错,这时候镜像技术docker就能使服务部署快速,并避免少犯错,这时候docker可真是个好东西。
将原来的运行服务放在docker内运行,需要部署到其他服务器时,打包整个docker生成docker镜像,然后复制docker到新的linux服务器启动就好了,mysql,nginx,redis,等等很多东西不需要重新配置部署,只需要启动镜像docker和一些个性化的脚本。
安装docker
# 首先安装需要用到的工具
yum install -y yum-utils #安装工具 环境
#指定存储库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
查询可安装版本
yum list docker-ce --showduplicates | sort -r # 查看可用安装版本
## 找出stable版本的,表示稳定版,本次选的是
## docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable ##
## 安装
yum install docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io
## 规则 3:18.09.0-3.el7 为版本信息,那么安装就是 ce-后面加上18.09.0
## 取3:18.09.0-3.el7的':'和'-'之间的字符"18.09.0"
运行测试
docker run hello-world
使用示例
拉取docker容器
拉取一个 redis 容器 并运行
# 拉取 redis容器
docker pull redis
# 查看当前容器有哪些
docker images
# 运行容器 -p 指定端口
docker run -p 3123:6379 --name some-redis -d redis redis-server --appendonly yes
# 通过docker 启动redis服务
# 访问服务器3123端口时,映射到docker的6379端口
# docker服务名 some-redis
# --appendonly yes redis持久化,容器关闭后再启动,redis内的数据不失效
连接进入docker 容器
docker运行后,我们可以进入容器,上面是redis服务容器,可以理解为一个centos服务器里面启动了redis服务,我们可以连接进去,并且里面是一个虚拟的linux环境
# 查看在运行的docker容器服务
docker -ps
# exec 表示连接进入容器 32jd3h21正在运行的容器的id
docker exec -it 32jd3h21 /bin/bash
docker复制上传
当我们定义好一个容器的环境,我们可以将容器镜像上传的仓库,用于同一开发的环境,当其他人员也参与当前项目开发是,拉去同一个docker镜像容器,避免了项目代码运行环境差异。
docker hub 是专门用于docker镜像服务的仓库,我们需要先注册帐号,注册好后,创建仓库(和github类似)
让后我们在服务器里面先登录dockerhub账号,然后将需要上传的镜像push到仓库
# 查看镜像
docker images
a4sdfa2 为某个docker容器的id
# 复制创建一个要提交到远程的镜像容器
docker commit -a "author" -m "description" a4sdfa2 web1
# 设置仓库 web1 本地容器名 username dockerhub用户名 rep-url 用户的仓库名 v2 标签名
docker tag web1 username/rep-url:v2
# 拉去上传的docker
docker pull username/rep-url:web1
# 最后通过pull命令拉取镜像
docker 容器中放项目代码吗?
一般项目开发,代码修改较频繁,容器主要是用于同一运行环境,不应含有具体开发项目代码。
给团队使用的docker容器应该是定义代码运行环境,而不是代码本身。每个开发人员拉取了docker容器后,负责业务模块不同,很可能要编写的代码也不一样,容器放入代码反而多余;代码同步这快应该是通过git,svn等代码仓库工具完成更合适。
学习了解使用docker的更多相关文章
- Docker学习笔记2: Docker 概述
一.什么是Docker Docker是基于Go语言实现的云开源项目. Docker 的主要目标是:"Bulid,Ship and Run Any App ,AnyWhere" , ...
- 学习笔记之Docker
Docker 官网 http://www.docker.com Docker is the company driving the container movement and the only co ...
- Docker学习总结之Docker与Vagrant之间的特点比较
以下内容均出自Vagrant作者(Mitchell Hashimoto)与Docker作者(Solomon Hykes)在stackoverflow上面一个问题讨论.在这个问题中,双方阐述了vagra ...
- docker学习1:docker前世今生
Docker简介 Docker是2013发起的一个项目,早在2013年,Docker自诞生起,就是整个技术界的明星项目,当时我还在上海实习,就在各种技术媒体上看到了Docker的介绍文章,很多技术媒体 ...
- 【Docker学习之七】Docker图形化管理和监控
环境 docker-ce-19.03.1-3.el7.x86_64 centos 7 一.Docker管理工具 (官方三剑客)1.Docker Machine(学习的Openstack Heat)Cr ...
- DOCKER 学习笔记7 Docker Machine 在阿里云实例化ECS 以及本地Windows 实例化虚拟机实战
前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...
- DOCKER 学习笔记7 Docker Machine 建立虚拟机实战,以及错误总结
前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...
- DOCKER 学习笔记8 Docker Swarm 集群搭建
前言 在前面的文章中,已经介绍如何在本地通过Docker Machine 创建虚拟Docker 主机,以及也可以在本地Windows 创建虚拟主机,也是可以使用的.这一节,我们将继续学习 Docker ...
- Docker学习第一天(Docker入门&&Docker镜像管理)
简介 今天小区的超市买零食老板给我说再过几天可能就卖完了我有点诧异,老板又说厂家不生产了emmm 今天总算开始docker了! 1.Docker? 1.什么是Docker Docker 是一个开源的应 ...
随机推荐
- SOLID:面向对象设计的五个基本原则
在程序设计领域,SOLID 是由罗伯特·C·马丁在 21 世纪早期引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则.当这些原则被一起应用时,它们使得一个程序员开发一个容易进行软 ...
- Centos根目录100%解决思路
Centos 7 根目录(爆满)100%解决思路,下面以宝塔面板环境为例 1.首先远程到服务器,在~下输入df -h ,看下根目录下文件夹使用情况 [root@localhost~]# df -h F ...
- centos7源码编译安装lamp/lnmp
centos7源码编译安装lamp/lnmp 进程:是包工头(相当于是个门,只管开门关门,不管门内的事儿) 线程:是各种工种(cpu调度的是线程) 进程 是一件事情, 线程 是 同一个时间范围内 同时 ...
- 牛客多校第六场G Is Today Friday?(吉姆拉尔森/蔡勒公式 + 思维)题解
题意: 给你\(A-J\)的字母组成的日期,形式为\(yyyy/mm/dd\).现给你\(n\)个这样的串\((n<=1e5)\),问你把字母映射成数字,并且使得所有日期合法且为星期五的最小字典 ...
- mysql(二)--mysql索引剖析
1.1. 索引是什么 1.1.1.索引图解 维基百科对数据库索引的定义: 数据库索引,是数据库管理系统(DBMS)中一个排序的数据结构,以协助快速查询.更新数据库表中数据. 怎么理解这个定义呢? 首 ...
- apache 解析漏洞(CVE-2017-15715)
在p牛博客最近更新的文章,传送门,感觉很有意思,自己在自己本地测试了一下 0x01 正则表达式中的 '$' apache这次解析漏洞的根本原因就是这个 $,正则表达式中,我们都知道$用来匹配字符串结尾 ...
- KafkaBroker 简析
Kafka 依赖 Zookeeper 来维护集群成员的信息: Kafka 使用 Zookeeper 的临时节点来选举 controller Zookeeper 在 broker 加入集群或退出集群时通 ...
- GitHub Ribbons : 谈网站的安全性-资源链接如何 预防/实现 爬虫的批量下载!
GitHub Ribbons : 谈网站的安全性-资源链接如何 预防/实现 爬虫的批量下载! 预防方法: 1. 使用随机数字符串,拼接URL! https://camo.githubuserconte ...
- macOS 需要更新软件才能连接到 iOS 设备
macOS 需要更新软件才能连接到 iOS 设备 更新 Mac 上的软件 如果您在 iPhone.iPad 或 iPod touch 上看到"需要更新软件才能连接到 iOS 设备" ...
- React 17 All In One
React 17 All In One v17.0.1 https://reactjs.org/blog/2020/10/20/react-v17.html https://reactjs.org/b ...