docker的安装及使用

一、docker安装

       docker安装参考:https://www.cnblogs.com/yufeng218/p/8370670.html

1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

sudo yum update

3、卸载旧版本(如果安装过旧版本的话)

sudo yum remove docker  docker-common docker-selinux docker-engine

4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5、设置yum源

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

6、可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

7、安装docker

sudo yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版

sudo yum install <FQPN>   #例如:sudo yum install docker-ce-18.03.1-ce

8、启动并加入开机启动

sudo systemctl start docker

sudo systemctl enable docker

9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

docker version

二、常用命令

systemctl start docker                                                #启动

systemctl stop docker                                                #关闭

docker version                                                           #显示docker版本信息

docker info                                                                 #显示docker系统信息,包括镜像和容器数

docker images                                                           #列出本地所有镜像

docker ps                                                                   #列出正在运行的容器

docker ps -a                                                               #查看所有的容器

docker search mysql                                                  #列出从docker hub中搜索符合条件的镜像

docker pull centos/mysql-57-centos7                         #下载镜像到本地,默认下载最新的

docker images centos/mysql-57-centos7                   #查看指定镜像

docker images centos/mysql-57-centos7                   #查看进行是如何构建的

docker rmi sameersbn/redis                                       #删除镜像,可根据id删除

docker rm 容器id                                                        #删除容器需要先停止容器

docker rm mysql5.7                                                    #删除容器

三、制作容器demo

Dockerfile制作容器:

将准备好的jdk与tomcat上传至/usr/local/soft下tar –zxvf解压后编写Dockerfile文件:

FROM centos

# 维护者信息

# MAINTAINER d

#执行命令:创建目录

RUN mkdir -p /usr/local/soft

#将jdk1.8.0_171添加到镜像centos的/usr/local/soft/目录下,并命名为jdk

ADD jdk1.8.0_171 /usr/local/soft/jdk

#将apache-tomcat-8.5.2添加到镜像centos的/usr/local/soft/目录下,并命名为tomcat

ADD apache-tomcat-8.5.2 /usr/local/soft/tomcat

#添加环境变量

ENV JAVA_HOME /usr/local/soft/jdk

ENV CATALINA_HOME /usr/local/soft/tomcat

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

#暴露8080端口

EXPOSE 8080

#启动时运行tomcat

CMD ["/usr/local/soft/tomcat/bin/catalina.sh","run"]

docker build -t='tomcat8_jdk1.8' .                      #构建tomcat+jdk环境镜像 名字为:tomcat8_jdk1.8 .是指当前目录

 docker run -d -p 8080:8080 --name=tomcat8_jdk1.8 tomcat8_jdk1.8          #启动镜像,访问 xx.xx.xx.xx:8080

-d 后台运行    

-p 端口映射  宿主机port : 容器port

--name 指定容器运行名称

 http://xx.xx.xx.xx:8080/            #浏览器访问图如下

 http://xx.xx.xx.xx:8080/myweb/      #hello word发布

 四、配置docker仓库

docker pull registry                                                                    #从dockerHub拉取registry镜像

docker run -di --name=registry -p 5000:5000 registry               #根据镜像启动容器

http://xx.xx.xx.xx:5000/v2/_catalog              #浏览器访问后有:{"repositories":[]}说明私库建创成功

vi /etc/docker/daemon.json                                                       #配置私库可信任

{"insecure-registries":["xx.xx.xx.xx:5000"]}

systemctl restart docker                                                     #重启docker

docker start registry                                                           #启动私库

docker tag tomcat8_jdk1.8 xx.xx.xx.xx:5000/tomcat8_jdk1.8                   #将tomcat8_jdk1.8镜像标记到私库

#tomcat8_jdk1.8                                                                #要标记的镜像名称

#xx.xx.xx.xx:5000/tomcat8_jdk1.8                            #ip:port/后面的名字可以随意起

docker push xx.xx.xx.xx:5000/tomcat8_jdk1.8         #把xx.xx.xx.xx:5000/tomcat8_jdk1.8镜像放到私库

 http://xx.xx.xx.xx:5000/v2/_catalog                          #浏览器访问

 五、其它

docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7

命令解析:

docker run #运行一个容器

-di守护式

--name为创建的容器命名

-p mysql容器映射到宿主机的端口号默认3306,如果想改只需要改动前边的端口就行,一般不动

通过宿主机访问docker的容器,docker容器需要映射到宿主机上一个端口号

-e MYSQL_ROOT_PASSWORD docker中初始化变量的方式为mysql设置一个默认密码

centos/mysql-57-centos7 所制作容器镜像的名称

提示:如果要制作的容器是最新版本(latest),制作容器命令后面就不用写版本了,否则在镜像名称后面加版本:7

docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7:7

进入docker容器中执行命令

docker exec –it <ContainerName, CONTAINER ID> /bin/bash

国外的镜像很难下载,这里配置阿里云镜像加加速。

vi /etc/docker/daemon.json           #配置内容如下:

{

"registry-mirrors": ["https://eqcxmbvw.mirror.aliyuncs.com"],

"insecure-registries":["xx.xx.xx.xx:5000"]

}

 

配置内容介绍:

"registry-mirrors": ["https://eqcxmbvw.mirror.aliyuncs.com"   #配置阿里加速地址

"insecure-registries":["xx.xx.xx.xx:5000"]                                #配置私库地址

systemctl daemon-reload                #重新加载、使生效

systemctl restart docker                   #需重启docker

k8

https://k.i4t.com/

六、docker介绍

2010年在美国旧金山成立了一家名为dotCloud的公司,这家公司主要提供基于Pass的云计算服务。具体来说是和LXC有关的容器技术,LXC,就是(Linux Container)虚拟容器技术,后来dotCloud公司将自己的容器技术进行了简化和标准化,并命名为—Docker。

作为一家小型创业企业,在激烈的竞争下,正当他们要坚持不下去的时候,脑子里蹦有了“开源”的想法。也就是将原来内部保密的程序源代码开放给所有人,然后让大家一起参与进来,贡献代码和意见。

Docker开源人气迅速攀升,速度之快。开源当月,Docker 0.1版本发布。此后的每一个月,Docker都会发布一个版本。到2014年6月9日,Docker 1.0版本正式发布。此时的Docker,已经成为行业里人气最火爆的开源技术,没有之一。

Docker和容器技术为什么会这么火爆?就是因为它“轻”。在容器技术之前,业界的网红是虚拟机。虚拟机技术的代表:是VMWare和OpenStack。虚拟机,常用的是在你电脑上装VMWare软件,通过VMware软件装多台虚拟机,虚拟机,类似于“子电脑”,子电脑与子电脑之间是相互隔离的,互不影响。虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化。为什么说它是轻量级呢,因为它仅仅是一个进程而已。容器启动本质就是一个开启一个进程,因此Docker容器启动都是秒启。So

Docker 从狭义上来讲就是一个进程,从广义上来讲是一个虚拟容器。

Docker 进程和普通的进程没有任何区别,它就是一个普通的应用进程。不过是用来操作镜像文件的。

传统的VM的 Hypervisor 需要实现对硬件的虚拟化,并且还要搭载自己的操作系统,其中虚拟机操作系统占用内存是比较大的,一个操作系统有好几个 G,自然在启动速度和资源利用率以及性能上有非常大的开销, VM 虚拟机的上层是运行的运行时库和应用,整个虚拟机的空间是非常的庞大,但是容器化技术 Docker 技术的出现后,省去了操作系统这一层,多个容器之间相互隔离且共用了宿主操作系统和运行时库。

所以 Docker 应用容器相对于 VM 有以下几个优点:

· 启动速度快,容器启动本质就是一个开启一个进程而已,因此都是秒启,而 VM 通常要更久。· 资源利用率高,一台普通 PC 可以跑成百上千个容器,但跑不了几十个 VM 。· 性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源。

所以很多移动互联网的应用或者云计算的后端节点都可以用 docker 来替换物理机器或者虚拟机。比如腾讯地图的很多后台服务基本上都迁移 docker 部署了。

Docker技术的三大核心概念,分别是:

镜像(Image)

容器(Container)

仓库(Repository)

Docker镜像(Image)类似于虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统。

例如:一个镜像可以完全包含了centos操作系统环境,可以把它称作一个centos镜像。镜像也可以安装了Apache应用程序(或其他软件),可以把它称为一个Apache镜像。

镜像是创建Docker容器的基础,通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像。用户可以从网上下载一个已经做好的应用镜像,并通过命令直接使用。总之,应用运行是需要环境的,而镜像就是来提供这种环境。

Docker容器(Container)类似于一个轻量级的沙箱(因为Docker是基于Linux内核的虚拟技术,所以消耗资源十分少),Docker利用容器来运行和隔离应用。

容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。

可以吧每个容器看作一个简易版的Linux系统环境(包括了root用户权限、进程空间、用户空间和网络空间),以及与运行在其中的应用程序打包而成的应用盒子。

镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。就像用ISO装系统之后,ISO并没有什么变化一样。

Docker仓库(Repository)类似与代码仓库,是Docker集中存放镜像文件的场所。

有时候会看到有资料将Docker仓库和注册服务器(Registry)混为一谈,并不严格区分。实际上,注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04,12.04等不同版本的镜像。

根据存储的镜像公开分享与否,Docker仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

目前,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool等,可以提供稳定的国内访问。如果用户不希望公开分享自己的镜像文件,Docker也支持用户在本地网络内创建一个只能自己访问的私有仓库。

当用户创建了自己的镜像之后就可以使用push将它上传到指定的公有或则私有仓库。这样用户下次在另一台机器上使用该镜像时,只需将其从仓库pull下来就可以了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值