docker容器从入门到痴迷(推荐)

1. docker 是什么

大家都知道虚拟机吧,windows 上装个 linux 虚拟机是大部分程序员的常用方案。公司生产环境大多也是虚拟机,虚拟机将物理硬件资源虚拟化,按需分配和使用,虚拟机使用起来和真实操作系统一模一样,当废弃不用时直接删除虚拟机文件即可回收资源,很方便集中管理。

由于虚拟机非常庞大,同时对硬件资源的消耗也大,linux 发展出了另一种虚拟化技术,即 linux 容器(Linux Containers,缩写为 LXC),它并不像虚拟机那样模拟一个完整的操作系统,却提供虚拟机一样的效果。如果说虚拟机是操作系统级别的隔离,那么容器就是进程级别的隔离,可以想象这种级别隔离的优点,无疑是快速的,节省资源的。

docker 就是对 linux 容器的封装,提供简单实用的用户接口,是目前最流行的 linux容器解决方案。

下面是百科的定义:

docker 是基于 Go 语言的开源的应用容器引擎,并遵从Apache2.0协议,docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

2. docker 解决什么问题

1. 解决虚拟机资源消耗问题。

服务器操作系统之上运行着虚拟机,虚拟机上运行着客户操作系统,客户操作系统之上运行着用户的应用程序,一台服务器 80% 的资源开销都花费在了硬件虚拟化和客户机操作系统本身。

图1. 虚拟机架构与容器架构区别

如图 1 所示,如果采用 docker 容器技术,容器上运行着虚拟服务器,虚拟服务器中运行着用户的应用程序,虚拟服务器和服务器操作系统使用同一内核,虚拟服务器的文件系统使用物理服务器的文件系统,但做了隔离,看上去每个虚拟服务器都有自己独立的文件系统;在物理服务器上建立了虚拟网桥设备,每个虚拟服务器通过虚拟网桥设备连接网络。虚拟服务器直接使用物理服务器的CPU、内存、硬盘,并不对硬件进行虚拟化,因此没有硬件虚拟化和客户机操作系统占用的资源消耗,每一台虚拟服务器的性能接近于物理服务器性能。

一台普通家用电脑运行一个 Linux 虚拟机可能已经非常卡,但是却可以使用 docker 虚拟出几十甚至上百台虚拟的 linux 服务器。如果换成性能强劲的服务器,使用 docker 就可以提供私有云服务了。

2. 快速部署。

软件开发的难题在于环境配置,在自己电脑上运行的软件,换一台机器可能就无法运行,除非保证操作系统的设置正确,各种组件和库的正确安装。比如部署一个 Java 开发的 web 系统,计算机必须安装 Java 和正确的环境变量,可能还需要安装 tomcat、nginx。换台机器部署就要重来一次。

使用 docker 可以将应用程序及依赖打包在一个文件里(docker 镜像文件),运行这个文件就会启动虚拟服务器,在虚拟服务器启动应用程序或服务,就像在真实在物理机上运行一样,有了 docker,就可以一次部署,处处运行,也可以用于自动化发布。

3. 提供一次性的环境。

比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境,启动或关闭一个虚拟服务器就像启动或关闭一个进程一样简单和快速。

4. 提供弹性的云服务。

因为 Docker 容器可以随开随关,很适合动态扩容和缩容。

5. 组建微服务架构

通过多个容器,一台机器可以跑很多个虚拟服务器,因此在一台机器上就可以模拟出微服务架构,也可以模拟出分布式架构。

3. docker 安装部署与使用

本文介绍 ubuntu 18.04 系统下的安装与使用。其他操作系统请参考官方文档https://docs.docker.com/

1. 安装 docker 引擎

获取最新版本的 Docker 安装包

aaron@ubuntu:~$ wget -qO- https://get.docker.com/ | sh

执行上述命令,输入当前用户密码,即可自动下载最新版的 docker 安装包,并自动安装。

安装完成后有个提示:

If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

 sudo usermod -aG docker aaron

Remember that you will have to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group will grant the ability to run
     containers which can be used to obtain root privileges on the
     docker host.
     Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
     for more information.

当要以非 root 用户可以直接运行 docker 时,需要执行

sudo usermod -aG docker aaron

命令将用户 aaron 添加到 docker 用户组中,然后重新登陆,否则会报下面的错误:

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

执行下列命令启动 docker 引擎

aaron@ubuntu:~$ sudo service docker start

安装成功后已默认设置开机启动并自动启动,如果要手动设置,执行下面命令:

sudo systemctl enable docker
sudo systemctl start docker

测试运行

aaron@ubuntu:~$ sudo docker run hello-world

2. 使用 docker

1. 理解 docker 的架构

使用前先了解下 docker 的架构,如下图所示:

docker 架构图

  • docker 镜象(image) 是存放在 docker 仓库(Registry)的文件,是用于创建 docker 容器 的模板。
  • docker 容器 是独立运行的一个或一组应用,可以理解为前述介绍的虚拟服务器。
  • docker 主机 是一个物理或者虚拟的机器用于执行 docker 守护进程和容器。
  • docker 客户端 通过命令行或者其他工具使用 docker API 与 docker 的守护进程通信。

作为用户,我们直接使用的是 docker 客户端。

2. docker 命令

查看docker 命令的帮助信息

docker --help #docker 全部命令帮助信息
docker COMMAND --help #docker 具体命令COMMAND的帮助信息

查看docker 信息

docker info

可以看到容器的池、已用数据大小、总数据大小,基本容器大小、当前运行容器数量等。

搜索镜像,从网络中搜索别人做好的容器镜像。

docker search ubuntu
docker search centos

ubuntu 镜像

从这里可以看出有的镜像已经集成了 php、java、ansible 等应用,我们也可以制作包含自己应用或服务的镜像文件,将此文件传给别人,别人即可直接使用 docker 打开容器,不需要任何额外的操作,也不像虚拟机那样消耗资源,即可运行你的应用或服务,是不是非常方便?!

从网络中下载别人做好的容器镜像。

docker pull centos
docker pull ubuntu

导入下载好的容器镜像文件

docker load < image_xxx.tar

查看镜像

docker images
docker images -a

检查镜像

docker inspect ubuntu

可以看到容器镜像的基本信息。

删除镜像,通过镜像的 id 来指定删除

docker rmi ubuntu

删除全部镜像

docker rmi $(docker images -q)

显示镜像历史

docker history ubuntu

运行容器

Docker容器可以理解为在沙盒中运行的进程,这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等。但这个沙盒默认是不会运行任何程序的,需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全停止。

运行 ubuntu 容器并进入交互式环境

aaron@ubuntu:~$ docker run -i --name="ubuntu1" --hostname="ubuntu1" ubuntu /bin/sh
cat /etc/hosts
127.0.0.1  localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 ubuntu1
whoami
root
uname -a
Linux ubuntu1 4.15.0-34-generic #37-Ubuntu SMP Mon Aug 27 15:21:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

上述命令我们创建了一个名字为 ubuntu1 的容器,设置容器的主机名为 ubuntu1,进入 /bin/sh 命令后我们打印了 hosts 文件的内容,查看了内核版本(与本机操作系统版本一致),这里可以使用各种 linux 命令,就像在新的操作系统中使用命令一个样。同样的方法,我们在新的终端创建一个 ubuntu2 的容器,并使用

docker ps

查看正在运行的容器。

查看正在运行的容器

输入 exit 退出容器。

docker run -d ubuntu

会出现一串长的字母数字组成的串,为容器的 id,请注意容器要有持续运行的进程存在,否则,容器会很快自动退出。
运行容器并指定MAC地址

docker run -d --name='centos3' --hostname='centos3' --mac-address="02:42:AC:11:00:24" docker-centos6.10-hadoop-spark

列出所有的容器

docker ps -a

列出最近一次启动的容器

docker ps -l

检查容器

docker inspect centos1

可以获取容器的相关信息。

获取容器CID

docker inspect -f '{{.Id}}' centos1

获取容器PID

docker inspect -f '{{.State.Pid}}' centos1

获取容器IP

docker inspect -f '{{.NetworkSettings.IPAddress}}' centos1

获取容器网关

docker inspect -f '{{.NetworkSettings.Gateway}}' centos1

获取容器 MAC

docker inspect -f '{{.NetworkSettings.MacAddress}}' centos1

查看容器 IP 地址

docker inspect -f '{{.NetworkSettings.IPAddress}}' centos1

连接容器

ssh 容器的 IP 地址

输入密码:123456

容器运行后,可以通过另一种方式进入容器内部

docker exec -it centos /bin/sh

查看容器运行过程中的日志

docker logs centos1

列出一个容器里面被改变的文件或者目录,列表会显示出三种事件,A 增加的;D 删除的;C 被改变的

docker diff centos1

和初始容器镜像项目,用户或系统增加/修改/删除了那些目录文件,都可以查看到。
查看容器里正在运行的进程

docker top centos1

拷贝容器里的文件/目录到本地服务器

docker cp centos1:/etc/passwd /tmp/
ls /tmp/passwd

通过网络 IP 地址也可以将容器的文件拷贝到服务器,这种方式比较方便。

停止容器

docker stop centos1

停止所有容器

docker kill $(docker ps -a -q)

启动容器

docker start centos1

删除单个容器

docker stop centos1
docker rm centos1

删除容器之前要先停止该容器的运行。

删除所有容器

docker kill $(docker ps -a -q)
docker rm $(docker ps -a -q)

3. 卷的概念

为了能够保存(持久化)数据以及共享容器间的数据,docker 提出了卷的概念。卷 Volume 就是容器的特定目录,该目录下的文件保存在宿主机上,而不是容器的文件系统内。

数据卷是一个可供一个或多个容器使用的特殊目录,它绕过容器默认的文件系统,可以提供很多有用的特性:
(1)数据卷可以在容器之间共享和重用;
(2)对数据卷的修改会立马生效;
(3)对数据卷的更新,不会影响镜像;
(4)数据卷默认会一直存在,即使容器被删除。

注意:数据卷的使用,类似于  Linux下对目录进行挂载 mount,容器中被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的数据卷。

创建、使用数据卷

mkdir -p /root/volume1
mkdir -p /root/volume2
docker run -d -v /volume1 --name='centos5' docker-centos6.10-hadoop-spark
docker run -d -v /root/volume1:/volume1 --name='centos6' docker-centos6.10-hadoop-spark
docker run -d -v /root/volume1:/volume1 -v /root/volume2:/volume2 --name='centos7' docker-centos6.10-hadoop-spark
docker run -d -v /root/volume1:/volume1:ro --name='centos8' docker-centos6.10-hadoop-spark

使用docker run命令创建容器,指定 -v 标记来创建一个数据卷并挂载到容器里;可以挂载多个数据卷;可以设置卷的只读属性;可以不指定服务器映射的目录,由系统自动指定目录,通过 docker inspect 来查看映射的路径。

分别进入这些容器,查看 /volume1、/volume2目录。

数据卷共享

如果要授权一个容器访问另一个容器的数据卷,可以使用-volumes-from 参数来执行。

数据卷容器

如果有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。

数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的。

(1)创建一个名为 dbdata 的数据卷容器

docker run -d -v /dbdata --name dbdata docker-centos6.10-hadoop-spark

(2)在其他容器中使用--volumes-from来挂载 dbdata 容器中的数据卷

docker run -d --volumes-from dbdata --name db1 docker-centos6.10-hadoop-spark
docker run -d --volumes-from dbdata --name db2 docker-centos6.10-hadoop-spark

这样就可以实现容器之间的数据共享。

分别进入这些容器,查看 /volume1、/volume2 目录。

4. 自制镜像并发布

保存容器修改,提交一个新的容器镜像

docker commit centos1 centos111

将现有的容器提交形成一个新的容器镜像,使用 docker images 可以看到 centos111 镜像。通过此方法,可以创建一个新的容器镜像。

查看镜像

docker images

REPOSITORY TAG IMAGE ID  CREATED SIZE

centos111 latest d691a75ee371  23 minutes ago 501.5 MB

根据新容器镜像创建容器

docker run -d --name='centos111' centos111

查看容器

docker inspect centos111

导出和导入镜像
当需要把一台机器上的镜像迁移到另一台机器的时候,需要导出镜像与导入镜像。
机器A

docker save docker-centos6.10-hadoop-spark > docker-centos6.10-hadoop-spark2.tar

docker save -o docker-centos6.10-hadoop-spark docker-centos6.10-hadoop-spark2.tar

使用 scp 命令同其他方式将 docker-centos6.10-hadoop-spark2.tar 拷到机器 B 上
机器B

docker load < docker-centos6.10-hadoop-spark2.tar

docker load -i docker-centos6.10-hadoop-spark2.tar

发布容器镜像

docker push centos6.8-lamp1

将容器发布到网络中。

5. docker 网络

docker 启动时会在宿主机器上创建一个名为 docker0 的虚拟网络接口。它会从RFC 1918 定义的私有地址中随机选择一个主机不用的地址和子网掩码,并将它分配给 docker0,默认选择 172.18.0.1/16,一个 16 位的子网掩码给容器提供了 65534 个 IP 地址。

docker0 并不是正常的网络接口,只是一个在绑定到这上面的其他网卡间自动转发数据包的虚拟以太网桥,可以使容器与主机相互通信、容器与容器间相互通信。

docker 每创建一个容器,就会创建一对对等接口(Peer Interface),类似于一个管子的两端,在一边可以收到另一边发送的数据包。docker会将对等接口中的一个做为 eth0 接口连接到容器上,并使用类似于vethAQI2QT 这样的惟一名称来持有另一个,该名称取决于主机的命名空间。通过将所有 veth* 接口绑定到 docker0 桥接网卡上,docker 在主机和所有 docker 容器间创建一个共享的虚拟子网。

docker NAT 网络

docker 容器默认通过 nat 方式访问网络,docker 启动时会在宿主主机上创建一个名为 docker0 的虚拟网络接口,docker0 只是一个在绑定到这上面的其他网卡间自动转发数据包的虚拟以太网桥,它可以使容器和主机相互通信、容器与容器间通信。

docker0 的网关地址是172.18.0.1,掩码是 16 位,提供了 65534 个IP地址。

NAT 方式,虚拟器容器可以访问外网(宿主机以外),但宿主机以外的机器不能访问容器内网。

docker Bridage 网络

docker 容器可以通过 bridge 方式访问网络。

bridge方式,虚拟器容器可以访问外网(宿主机以外),宿主机以外的机器也能访问容器内网。

6. docker pipework

docker 自身的网络功能比较简单,不能满足很多复杂的应用场景。因此有很多开源项目用来改善 docker 的网络功能,如 pipework、weave、flannel 等。

pipework 是由 docker 的工程师 Jérôme Petazzoni 开发的一个 docker 网络配置工具,由 200 多行 shell 实现,方便易用。

安装 pipework

git clone https://github.com/jpetazzo/pipework
cp pipework/pipework /bin/

wget [http://172.17.1.240/docker/software/pipework](http://172.17.1.240/docker/software/pipework)
chmod a+x pipework
cp pipework /bin/

运行容器

docker run -d --net='none' --name='centos9' docker-centos6.10-hadoop-spark

配置容器网络,并连到网桥 docker0 上;网关在IP地址后面加 @ 指定。

pipework docker0 centos9 172.18.0.100/16@172.18.0.1

7. docker 网络端口映射

容器如果使用 docker0 虚拟网络,那么容器的网络是 172.17.0.0/16,容器可以通过 NAT 方式访问外网;但外网不能访问内网。如果容器使用 br0 虚拟网络,容器和服务器可以在同一个网络地址段;容器可以访问外网;外网也可以访问容器网络。
对于使用 docker0 虚拟网络的容器,可以通过端口映射的方式,让外网访问容器某些端口。

运行容器

docker run -d -p 38022:22 --name='centos10' docker-centos6.10-hadoop-spark

连接容器

ssh localhost -p 38022

在其他服务器上通过访问物理服务器加端口即可访问容器,可以一次映射多个端口。
运行容器

docker run -d -p 38022:22 -p 38080:80 --name='centos11' docker-centos6.10-hadoop-spark

其实现原理是在服务器上通过 iptables 转发来实现。当然也可以通过iptables 转发整个容器 IP 地址。

4. 总结

由于容器是进程级别的,相比虚拟机有很多优势。

(1)启动快
容器里面的应用,直接就是底层系统的一个进程,而不是虚拟机内部的进程。所以,启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。

(2)资源占用少
容器只占用需要的资源,不占用那些没有用到的资源;虚拟机由于是完整的操作系统,不可避免要占用所有资源。另外,多个容器可以共享资源,虚拟机都是独享资源。

(3)体积小
容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。
总之,容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本开销小得多。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Docker安装和简单使用入门教程

    安装 由于我本人使用的linux系统,原生支持docker,相对安装还是比较简单的 1:使用下面的官方脚本安装: wget -qO- https://get.docker.com/ | sh 2:输入下面的命令验证是否可以查看版本号,可以就是安装成功 sudo docker version 3:建议把当前使用的用户加到Docker用户组,就可以不用很次都sudo了 sudo usermod -aG docker your_username 4:重新登录,sudo权限才会成效 logout 至此,

  • Docker入门安装教程(小白篇)

    Dokcer介绍: Docker是一种容器相关的技术,简单来说你可以把它当做一个微型的独立系统,在这个系统里面运行各种软件,然后又在linux服务器上或者是电脑上运行这个系统,这个系统就被称为Docker容器,而运行Docker容器的机器就被称为宿主机.Docker的特性使它可以原封不动的在不同的环境下移植运行,这就避免了同样的代码因为服务器上各种环境细微差别导致的BUG,而且Docker操作简单,易于上手. Docker的应用场景 Web 应用的自动化打包和发布. 自动化测试和持续集成.发布.

  • 两小时入门Docker教程实践

    1.0引入 1.1Docker是什么? Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护. Docker 使用 Google 公司推出的 Go 语言 进行开发实现. docker是linux容器的一种封装,提供简单易用的容器使用接口.它是最流行的Linux容器解决方案. docker的接口相当简单,用户可以方便的创建.销毁容器.

  • docker入门之容器介绍

    docker概述 docker是一个开源的软件部署解决方案: docker也是轻量级的应用容器框架: docker可以打包.发布.运行任何的应用,这个也是docker的产品理念:Docker - Build, Ship, and Run Any App, Anywhere docker采用的是LXC(Namespace+CGroups),即在Linux内核的Namespace[资源隔离]和CGroups[资源控制]技术的基础上通过镜像管理机制来实现轻量化设计. docker组成 docker的组

  • Docker学习笔记之docker入门

    学习的一些疑问 如何热更新镜像(images)?(你可以快速启动或者销毁容器.这种时间几乎是实时的) 如何热更新游戏服? 好处在于各个应用之间环境相互独立,即使某一个容器崩溃也不会影响到其它容器: 每个容器使用端口如何维护?(方法1写在Dockerfile里面,不灵活:方法2在run的时候-p指定): 那这样的话,会存在好多linux用户,相当于每一个容器就要维护一个物理机(虚拟): 需要一套工具来管理维护镜像.容器的操作和状态: 目前主流使用docker都是应用到哪些场景中? 1. docke

  • 什么是docker Docker入门教程第一篇

    Docker是个新生的事物,概念类似虚拟化.网上关于Docker入门的东西已经很多了.不过本文探讨了Docker的特点.特性.原理,还介绍了具有中国特色的安装测试过程,另外还谈到了Docker的社区生态和Dockerfile,并使用Dockerfile构建一个nginx环境. 缘起 在几个月前听说Docker,但是一直没有时间去研究,前一段时间趁着azure免费试用,赶紧实验一下,但是卡在了ubuntu基础镜像的下载上(由于国内网络的特殊原因),所以也就搁浅了,这里把经验和体会分享一下. Doc

  • Docker 入门快速上手指南

    为什使用 Docker? 为什么要使用 Docker?就个人而言,Docker 能提供的最大便利在于这种技术面对程序环境迁移时所表现的卓越性. 这种性能使得我们不必在分享代码或项目合作.交接时附带一长串的环境配置指南进行版本限制和扩展描述:也不必再特意记录自己对现有环境的配置改变,以免下次系统迁移时手足无措:更为重要的是,Docker 在提供以上解决方案的同时没有把解法变得复杂,相反的,它提供了一种更快.更容易的方式. Docker 独到的对增量和文件层的应用,使得镜像下载.共享 & 隔离.版本

  • Docker简单安装与应用入门教程

    本文实例讲述了Docker简单安装与应用.分享给大家供大家参考,具体如下: 作为一个初次接触Docker的人来说,最大的问题是Docker是什么?Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.比如,我们在笔记本上编译测试通过的容器可以批量地在生产环境中部署,可以用于自动化测试和持续集成.发布. 还可以用于web应用的自动化打包和发布:在服务型环境中部署和调整数据库或其他的后台应用:从头编译或者扩展现有的OpenShift或Cloud Foundry

  • docker容器从入门到痴迷(推荐)

    1. docker 是什么 大家都知道虚拟机吧,windows 上装个 linux 虚拟机是大部分程序员的常用方案.公司生产环境大多也是虚拟机,虚拟机将物理硬件资源虚拟化,按需分配和使用,虚拟机使用起来和真实操作系统一模一样,当废弃不用时直接删除虚拟机文件即可回收资源,很方便集中管理. 由于虚拟机非常庞大,同时对硬件资源的消耗也大,linux 发展出了另一种虚拟化技术,即 linux 容器(Linux Containers,缩写为 LXC),它并不像虚拟机那样模拟一个完整的操作系统,却提供虚拟机

  • 使用IPython来操作Docker容器的入门指引

    现在Docker是地球上最炙手可热的项目之一,就意味着人民实际上不仅仅是因为这个才喜欢它. 话虽如此,我非常喜欢使用容器,服务发现以及所有被创造出的新趣的点子和领域来切换工作作为范例. 这个文章中我会简要介绍使用python中的docker-py模块来操作Docker 容器,这里会使用我喜爱的编程工具IPython. 安装docker-py 首先需要docker-py.注意这里的案例中我将会使用Ubuntu Trusty 14.04版本. $ pip install docker-py IPyh

  • zabbix监控docker容器状态【推荐】

    前言:前段时间在部署zabbix,有个需求就是需要监控容器的状态 也就是cpu 内存 io的占用,于是就自己写了一个脚本,以及模板,在这里分享一下 嘿嘿 : ) 废话我也就不多说,直接开始 首选,zabbix_agentd 配置  vim /usr/local/zabbix/etc/zabbix_agentd.conf UserParameter=docker.discovery,/usr/local/zabbix/script/docker.py UserParameter=docker.[*

  • docker容器源码部署httpd用存储卷部署网站(推荐)

    目录 docker容器源码部署httpd,用存储卷部署网站 创建一个httpd镜像 部署nfs 挂载 创建容器并映射 访问测试 docker容器源码部署httpd,用存储卷部署网站 创建一个httpd镜像 // 创建一个httpd容器 [root@localhost ~]# docker run -tid --name httpd centos 2d693e16f4f3734b127cbae90d189c1b4e78619a54ceec912a82d96cf4f1c345 [root@local

  • docker容器安装及部署的超详细入门教程

    目录 1.安装docker 2.docker 安装 redis 3.docker 安装rabbitmq 4.docker 安装postgresql 5.docker 安装jdk 并配置环境变量 6.停止和删除容器 7.Docker部署SpringBoot项目 总结 1.安装docker (1)卸载以前安装的Docker容器 sudo yum remove docker \ docker-client \ docker-client-latest \docker-common \docker-la

  • Docker 容器编排利器Compose(起步篇)

    一个大型的Docker组成的微服务应用中,容器的数量是非常庞大的,如果依赖传统的人工配置方式进行维护,对于开发和运维来说简直就是噩梦.Compose的出现正是为了解决这个问题. Compose简介 Compose的前身是Fig,Fig被Docker收购之后正式更名为Compose,Compose向下兼容Fig.Compose是一个用于定义和运行多容器Docker应用的工具,只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应用所需的所有容器.在配置文件中,所有容器通过servic

  • docker从安装入门到应用部署及私有仓库搭建基础命令

    目录 入门到精通 方法一 方法二 开启关闭 查找镜像 镜像操作 容器操作 文件拷贝 目录映射(数据卷) 查看容器信息 docker应用部署 容器打包成镜像 总结 docker file常用命令 eg:基于python3.6构建docker file镜像 容器部署项目,用 nuginx做负载均衡 Docker 入门到精通 ssh root@39.101.184.220 """ 1)docker就是Linux上及其轻量的虚拟机 2)虚拟机是存在宿主系统中,通过镜像给宿主系统拓展子

  • Docker容器通过独立IP暴露给局域网的方法

    Docker容器非常轻量,系统开销非常少,比VMware或者VirtualBox用起来方便,部署起来也非常容易.官方推荐我们通过端口映射的方式把Docker容器的服务提供给宿主机或者局域网其他容器使用.一般过程是: 1.Docker进程通过监听宿主机的某个端口,将该端口的数据包发送给Docker容器 2.宿主机可以打开防火墙让局域网其他设备通过访问宿主机的端口进而访问docker的端口 这里以CDNS为例,CDNS是一个用于避免DNS污染的程序,通过CDNS可以把你的计算机变成一个抗污染的DNS

  • Docker容器的Tengine实践

    作为目前最火的应用,Docker 确实存在着其独到之处,无论是程序猿还是运维都应该听说过 Docker 的大名,Docker 已经走过了许多的坑,目前最新版本是 v1.11.0 版本,应该说是完全能承载开发使用和运维监控,这款工具能帮助我们高效的打包.发布和运行承载着应用程序的容器系统.而且收集日志.帮助 App 的快速开发都有很大作用. 容器和虚拟机,经常是被拿出来对比的两款产品,实际上两者有着根本的差别,虚拟机是完全模拟了一台真实计算机,在上面运行的系统可能或者不可能知道自己运行在虚拟化环境

  • Docker容器配置Nginx实例分享

    作为目前最火的应用,Docker 确实存在着其独到之处,无论是程序猿还是运维都应该听说过 Docker 的大名,Docker 已经走过了许多的坑,目前最新版本是 v1.11.0 版本,应该说是完全能承载开发使用和运维监控,这款工具能帮助我们高效的打包.发布和运行承载着应用程序的容器系统.而且收集日志.帮助 App 的快速开发都有很大作用. 容器和虚拟机,经常是被拿出来对比的两款产品,实际上两者有着根本的差别,虚拟机是完全模拟了一台真实计算机,在上面运行的系统可能或者不可能知道自己运行在虚拟化环境

随机推荐