1. 首页 > 电脑 >

docker服务启动命令_docker启动命令端口

Docker安装启动过程

Docker容器网络就很好的利用了Linux虚拟网络技术,在本地主机和容器内分别创建一个虚拟接口,并 让他们彼此联通(这样一对接口叫v pair);

可以参考阿里云的安装教程,这里使用了镜像加速器

docker服务启动命令_docker启动命令端口docker服务启动命令_docker启动命令端口


docker服务启动命令_docker启动命令端口


当然我们也可以不用镜像加速直接安装,不过存在安装速度慢或者安装不成功的风险。

安装完成后需要start一下docker,查看一下版本信息已经docker的地址信息,如下图:

如果要设置docker开机启动,可以使用ctl enable docker命令,这里start的时候可能会报错

在某些条件下,我们的机器可能不符合安装的条件,这个时候我们要检查一下我们的系统环境。

查看centos系统版本命令:

配置阿里云yum源

升级系统2、get内核

查看centos系统内核命令

查看机器配置

关闭防火墙

关闭selinux

网桥过滤

命令补全

阿里云,daocloud的docker是啥os/docker 注意事项

etcd version 0.5.0-alpha 2、组件二、架构说明配置

Docker是Docker.Inc公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议。通过分层镜像标准化和内核虚拟化技术,Docker使得应用开发者和运维工程师可以以统一的方式跨平台发布应用,并且以几乎没有额外开销的情况下提供资源隔离的应用运行环境。由于众多新颖的特性以及项目本身的开放性,Docker在不到两年的时间里迅速获得诸多IT厂商的参与,其中更是包括Google、Microsoft、VMware等业界行业。同时,Docker在开发者社区也是一石激起千层浪,许多如我之码农纷纷开始关注、学习和使用Docker,许多企业,尤其是互联网企业,也在不断加大对Docker的投入,大有掀起一场容器革命之势。

DOCKER 总结

2. 容器 开启和停止 程序

Docker 是一个开源的 应用容器引擎 ,让 开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化 。容器是完全使用沙箱机制,相互之间不会有任何接口。

由于本地开发好的程序往往都需要部署到上进行运行,这就导致了程序需要运行在不同的环境上,这通常是一个令人头痛的事情。在过去,开发团队需要清楚的告诉运维部署团队,其所使用的全部配置文件+所有软件环境。不过,即便如此,仍然常常发生部署失败的状况。

于是乎, 虚拟化 技术应运而生。开发团队将开发好的程序在虚拟机上运行,这样就能解决运维的问题。但是由于虚拟机技术过重的特性导致了其 资源占用多、冗余详细见以下配置文件,其中“src”为指定模板文件名称(默认到路径/etc/confd/templates中查找);“dest”指定生成的Haproxy配置文件路径;“keys”指定关联Etcd中key的URI列表;“reload_cmd”指定服务重载的命令,本例中配置成haproxy的reload命令。步骤多以及启动慢的缺陷 。而这个时候 一种新的虚拟化技术搭配上容器化的思想 的产品便出现了,而它就是Docker。

下图是虚拟机技术和容器化技术架构的对比。我们可以得出以下总结:

[上传失败...(image-efadd2-1643314980201)]

]( )

于是乎相比于虚拟机技术,容器化技术具有以下 优势:

相关网站

如下图所示,Docker使用客户端-(C/S)架构模式,使用远程API来管理和创建Docker容器。端分为Docker daemon, Image和Container三个部分。此外还有Docker Registry。

下面首先来介绍一下Docker中的主要概念

Docker的运行原理如下:客户端可以将docker命令发送到端的Docker daemon上,再由Docker damon根据指令创建、选择或者从Docker仓库中拉取(pull)镜像。接着客户端可以通过镜像创建容器。当我们需要使用程序时,运行相应的容器即可。

小结

需要正确的理解仓储/镜像/容器这几个概念 :

在外面使用容器的时候,我们不希望容器中的数据在容器被删除后也一并删除了,这时候我们就可以 通过使用容器数据卷,将数据储存在本地并用Docker将其挂载到容器中,这样我们即使删除了容器,数据也依旧存在中,也就实现了数据持久化。

特点

容器数据卷挂载命令(-v)

Dockerfile 挂载容器数据卷

我们除了可以从仓库中拉取镜像以外,我们也可以 自己创建镜像 ,这就要用到Docerfile。

dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本 。

构建步骤:

基础知识:

流程:

说明:

在实际场景中,我们会遇到 多个Container之间通讯 的问题。而Docker网络就是用于解决此问题的技术。docker会给每个容器都分配一个ip,且容器和容器之间是可以互相访问的。

Docker网络原理

每一个安装了Docker的linux主机都有一个docker0的虚拟网卡。这是个桥接网卡,使用了 v-pair 技术 。Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据 Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网 关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

Docker中的网络接口默认都是虚拟的接口。虚拟接口的优势就是转发效率极高(因为Linux是在内核中 进行数据的来实现虚拟接口之间的数据转发,无需通过外部的网络设备交换),对于本地系统和容 器系统来说,虚拟接口跟一个正常的以太网卡相比并没有区别,只是他的速度快很多。

[上传中...(image-41d42a-1642627027452-2)]

Docker Come是一个用于定义并运行多容器应用的工具 。

Docker Come的 步骤如下 :

NOTE: Come :重要的概念。

docker-come.yml编写

Note: docker-come会自动为多容器之间创建网络,保证通讯。

Docker Swarm 是Docker 的集群管理工具。 它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

Docker 是一个开源的 应用容器引擎 ,它的出现大大简化了运维的难度,提高了运维效率。过去我们需要在上安装程序所需要的所有依赖,而如今我们只需要编写好docker-come和Dockefile的脚本,就可以使程序一键跑通。在企业级的应用中,我们必然会惊颤使用到Docker和容器化技术。

狂神说

如何在容器中运行docker命令

# ./build

交互式运行docker容器

port: {{index $ 1}}

[root@gage ~]#docker run -t -i ubuntu:14.04 /bin/bash

root@89471dce598b:/# ls

boot etc lib media opt root in sys usr

root@89471dce598b:/# pwd

/root@89471dce598b:/# exit

exit

后台运行一个容器让其输出hello world

[root@gage ~]# docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

4bc1b2f2257e253e45b672811653f409b53176ac6670d4ddaeabe028dcd35b8e

显示正在运行的docker容器

[root@gage ~]# docker ps

Container

ID IMAGE COMMAND CREATED

STATUS PORTS NAMES

4bc1b2f2257e

ubuntu:14.04 "/bin/sh -c 'while tr" 27 seconds ago Up 26

使用docker logs命令查看容器标准输出

[root@gage ~]# docker logs insane_bhabha

使用docker stop 停止容器

[root@gage ~]# docker stop insane_bhabha

insane_bhabha

[root@gage ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

10. Docker 安装与配置

Docker 是一个开源的应用容器引擎,基于LXC(Linux Container)内核虚拟化技术实现,提供一系列更强的功能,比如镜像、 Dockerfile等;Docker理念是将应用及依赖包打包到一个可移植的容器中,可发布到任意Linux发行版Docker引擎上。使用沙箱机制运行程序, 程序之间相互隔离;

容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的一个的进程,不占用其他任何可执行文件的内存,非常轻量、高效、快速。

虚拟机运行的是一个完成的作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

参考:

Linux版本CentOS7

使用加速器可以提升获取Docker镜像的速度,下面使用 阿里云镜像 进行加速。

通过修改daemon配置文件 /etc/docker/daemon.json 来使用加速器

Docker 守护进程绑定在 Unix socket 而不是 TCP 端口。默认情况下 Unix socket 归属于 root 用户,其他用户只能通过 sudo 命令访问。所以 Docker 守护进程总是以 root 用户来运行。

如果你不希望每次运行 docker 命令时在前面加上 sudo,你可以创建一个 docker 用户组并把用户加进去。当 Docker 守护进程启动时,会创建一个 Unix socket 供 docker 用户组成员访问

什么是 DockerHub 以及为什么它很重要?DockerHub 是一个由 Docker 公司运行和管理的基于云的存储库。它是一个在线存储库,Docker 镜像可以由其他用户发布和使用。

有两种库:公共存储库和私有存储库 。如果你是一家公司,你可以在你自己的组织内拥有一个私有存储库,而公共镜像可以被任何人使用。

镜像层和容器层

例如:镜像、容器、网络和挂载卷等具体对象的作和管理。

Docker 从诞生到现在,服务端经历了多次架构重构。起初,服务端的组件是全部集成在docker 二进制里。但是从 1.11 版本开始, dockerd 已经成了的二进制,此时的容器也不是直接由dockerd 来启动了,而是集成了containerd、runC 等多个组件。

Docker 有两个至关重要的组件: runC和contaisrvtimeout 50000nerd。

runC 是Docker 按照OCI 容器运行时标准的一个实现。通俗地讲,runC 是一个用来运行容器的轻量级工具,是真正用来运行容器的。

containerd 是Docker 服务端的一个核心组件,它是从dockerd 中剥离出来的 ,它的诞生完全遵循OCI 标准,是容器标准化后的产物。containerd通过containerd-shim 启动并管理runC,可以说containerd真正管理了容器的生命周期。

1.作为path.Base函数的别名,获取路径一段。 容器中长期运行 程序

有两种方式:

有两种方式

3. 进入容器

有2种方法

想要web部署在互联网上 或者 在Web问 应用;

个人电脑处于 私网 中; IP地址处于 IPV4 和 IPV6 ;

安装appium

排错,困难

测试adb

改变TCPIP连接方式

查看appium运行日志

容器端口号为 4

开启nginx,就可以在web访问 192.168.0.100;

Dockerfile其实可以看做一个命令集 。每行均为一条命令。每行的个单词,就是命令command。后面的字符串是该命令所要接收的参数。比如ENTRYPOINT /bin/bash。ENTRYPOINT命令的作用就是将后面的参数设置为镜像的entrypoint。至于现有命令的含义,这里不再详述。DockOne上有很多的介绍。

FROM 指令用于指定其后构建新镜像所使用的基础镜像。FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docker 将会基于该镜像构建新镜像,FROM 后的命令也会基于这个基础镜像。

在镜像的构建过程中执行特定的命令,并生成一个中间镜像。格式:

最多127层,不是写shell ;

如何在ubuntu上安装docker

创建 docker 用户组并添加你的用户

Docker 是 dotCloud 最近几个月刚宣布的开源引擎,旨在提供一种应用程序的自动化部署解决方案,简单的说就是,在 Linux 系统上迅速创建一个容器(类似虚拟机)并在容器上部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装、部署和升级,非常方便。因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个。更多的还有大规模 web 应用、数据库部署、持续部署、集群、测试环境、面向服务的云计算、虚拟桌面 VDI 等等。注意:由于Docker需要在Linux Kernel 3.8及以上才可以很好的工作【本人在ubuntu12.04 lts 内核3.2也正常安装】,更是Ubuntu系统,这里有两种选择:Ubuntu 12.04 LTS或的Ubuntu 13.10 而本文比较喜欢倾向LTS,幸好有办法解决Kernel版本问题。

1、更新Ubuntu内核

使用如下命令1、haproxy行更新内核至3.8.0-25

sudo apt-get install linux-image-3.8.0-25-generic

sudo apt-get install linux-headers-3.8.0-25-generic

完成后重启电脑,通过命令 “uname -r” 来查看内核是否成功更新。

docker-come快速启动nginx

3. 进入容器 处于运行状态的容器可以通过docker

创建nginx目录,目录下创建docker-come.yml文件如下:

nginx目录下创建创建nginx.conf文件,根据实际情况配置,我这里写一个示例:

在nginx目录下创建build目录,将前端静态文件拷贝到下边

在nginx目录下执行如下命令启动服务

启动之后,nginx就可以seconds insane_bhabha正常使用了。

使用busybox镜像创建容器启动容器并查看容器状态的命令是什么?

bin dev home lib64 mnt proc run srv tmp var

1. 创建并启动容器 docker create命令来创建容器 $ 虽然 Docker 的架构在不停重构,但是各个模块的基本功能和定位并没有变化。它和一般的 C/S 架构系统一样,Docker 服务端模块负责和 Docker 客户端交互,并管理Docker 的容器、镜像、网络等资源。docker create -it --name=busybox busybox 1 容器启动有两种方式: 使用docker start命令基于

2. 终止容器 容器停止用docker stop 命令。格式为: docker stop [-t]|–time[=10]. 该命令首先会向运行中的容器发送SIGTERM信号,如果

用docker搭建一个高可用可扩展的服务支撑系统怎么做

hello world

一种方案为Haproxy+etcd+confd,采用松散式的组织结构,但各个组件之间的通讯是非常严密的,且扩展性更强,定制也更加灵活。

Docker 服务端是Docker 所有后台服务的统称 。其中dockerd 是一个非常重要的后台管理进程,它负责响应和处理来自Docker 客户端的请求,然后将客户端的请求转化为Docker 的具体作。

一、架构优势

约定由Haproxy+etcd+confd+Docker构建的基础服务平台简称“HECD” 架构,整合了多种开源组件,看似松散的结构,事实上已经是一个有机的整体,它们互相联系、互相作用,是Docker生态圈中最理想的组合之一,具有以下优势:

自动、实时发现及无感知服务刷新;

支持任意多台Docker主宿机;

支持多种APP接入且打散至不分主宿机;

采用Etcd存储信息,集群支持可靠性高;

采用Confd配置引擎,支持各类接入层,如Nginx;

具备资源弹性,伸缩自如(通过生成、销毁容器实现);

在HECD架构中,首先作Docker ,除了提交容器(Container)启动与停止指令外,还通过REST-API方式向Etcd(K/V)存储组件注册容器信息,包括容器名称、主宿机IP、映射端口等。Confd配置组件会定时查询Etcd组件获取的容器信息,根据定义好的配置模板生成Haproxy配置文件Haproxy.cfg,并且自动reload haproxy服务。用户在访问业务服务时,完全没有感知后端APP的上线、下线、切换及迁移,达到了自动发现、高可用的目的。详细架构图见图1-1。 图1-1 平台架构图

为了方便大家理解各组件间的关系,通过图1-2进行架构流程梳理,首先通过Shell或API作容器,下一步将容器信息注册到Etcd组件,Confd组件会定时查询Etcd,获取已经注册到Etcd中容器信息,通过Confd的模板引擎生成Haproxy配置,整个流程结束。

图1-2架构流程图

了解架构流程后,我们逐一对流程中各组件进行详细介绍。

1、Etcd介绍

Etcd是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。

简单:支持 c 方式的用户 API (HTTP+JSON)

安全:可选 SSL 客户端证书认证

快速:单实例可达每秒 1000 次写作

可靠:使用 Raft 实现分布式

2、Confd介绍

Confd是一个轻量级的配置管理工具。通过查询Etcd,结合配置模板引擎,保持本地配置,同时具备定期探测机制,配置变更自动reload。

3、Haproxy介绍

HAProxy是提供高可用性、负载均衡以及基于TCP和HTTP应用的,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。(来源百科)

三、架构部署

平台环境基于Centos6.5+Docker1.2构建,其中Etcd的版本为etcd version 0.5.0-alpha,Confd版本为confd 0.6.2,Haproxy版本为HA-Proxy version 1.4.24。下面对平台的运行环境、安装部署、组件说明等进行详细说明,环境设备角色表如下: 1、组件安装

1.1 Docker安装

SSH终端登录192.168.1.22,执行以下命令:

# yum -y install docker-io

# serv docker start

# chkconfig docker on

1.2 Haproxy、confd安装

SSH终端登录192.168.1.20,执行以下命令:

# yum –y install haproxy

2、confd

# wget

# mv confd /usr/local/bin/confd

# chmod +x /usr/local/bin/confd

# /usr/local/bin/confd -version

confd 0.6.2

1.3 Etcd安装

SSH终端登录192.168.1.21,执行以下命令:

# yum -y install golang

# mkdir -p /home/install && cd /home/install

# git clone

# cd etcd

# cp bin/etcd /bin/etcd

# /bin/etcd -version

2.1 Etcd配置

由于etcd是一个轻量级的K/V存储平台,启动时指定相关参数即可,无需配置。

# /bin/etcd -peer-addr 192.168.1.21:7001 -addr 192.168.1.21:4001 -data-dir /data/etcd -peer-bind-addr 0.0.0.0:7001 -bind-addr 0.0.0.0:4001 &

由于etcd具备多机支持,参数“-peer-addr”指定与其它节点通讯的地址;参数“-addr”指定服务地址;参数“-data-dir”为指定数据存储目录。

由于etcd是通过REST-API方式进行交互,常见作如下:

1) 设置(set) key作 # c -L -d value="this is awesome"

{"action":"set","node":{"key":"/mykey","value":"this is awesome","modifiedIndex":28,"createdIndex":28}} 2) 获取(get) key信息# c -L

{"action":"get","node":{"key":"/mykey","value":"this is awesome","modifiedIndex":28,"createdIndex":28}}

3) 删除key信息

# c -L {"action":"delete","node":{"key":"/mykey","modifiedIndex":29,"createdIndex":28},"prevNode":{"key":"/mykey","value":"this is awesome","modifiedIndex":28,"createdIndex":28}} 更多作API见s://

2.2 Confd+Haproxy配置

由于Haproxy的配置文件是由Confd组件生成,要求Confd务必要与haproxy安装在同一台主机上,Confd的配置有两种,一种为Confd资源配置文件,默认路径为“/etc/confd/conf.d”目录,另一种为配置模板文件,默认路径为“/etc/confd/templates”。具体配置如下:

创建配置文件目录

# mkdir -p /etc/confd/{conf.d,templates}

(1)配置资源文件

【/etc/confd/conf.d/ haproxy.toml】 [template]

src = "haproxy.cfg.tmpl"

dest = "/etc/haproxy/haproxy.cfg"

keys = [

"/app/servers",

]reload_cmd = "/etc/init.d/haproxy reload"

(2)配置模板文件

Confd模板引擎采用了Go语言的文本模板,更多见://

【/etc/confd/templates/haproxy.cfg.tmpl】 global

log 127.0.0.1 local3

maxconn 5000

uid 99

gid 99

daemon

defaults

log 127.0.0.1 local3

mode

option dontlognull

retries 3

option redispatch

contimeout 5000

clitimeout 50000

listen frontend 0.0.0.0:80

mode

balance roundrobin

option forwardfor

{{range gets "/app/servers/"}}

server {{base .Key}} {{.Value}} check inter 5000 fall 1 rise 2

{{end}}

stats enable

stats uri /admin-status

stats auth admin:123456

stats admin if TRUE

(3)模板引擎说明

本小节详细说明Confd模板引擎基础语法与示例,下面为示例用到的KEY信息。

# c -XPUT value="192.168.1.22:456"

# c -XPUT value="192.168.1.22:458"

# c -XPUT value="192.168.1.22:460"

# c -XPUT value="192.168.1.22:462"1、base

{{ with get "/app/servers/prickly_blackwell"}}

server {{base .Key}} {{.Value}} check

{{end}}

prickly_blackwell 192.168.1.22:462

返回一对匹配的KV,找不到则返回错误。

{{with get "/app/servers/prickly_blackwell"}}

key: {{.Key}}

value: {{.Value}}

{{end}}

/app/servers/prickly_blackwell 192.168.1.22:462

3、gets

{{range gets "/app/servers/"}}

{{.Key}} {{.Value}}

{{end}}

/app/servers/backstabbing_rosalind 192.168.1.22:456

/app/servers/cocky_morse 192.168.1.22:458

/app/servers/goofy_goldstine 192.168.1.22:460

app/servers/prickly_blackwell 192.168.1.22:462

4、getv

返回一个匹配key的字符串型Value,找不到则返回错误。

{{getv "/app/servers/cocky_morse"}}

192.168.1.22:458

5、getvs

返回所有匹配key的字符串型Value,找不到则返回错误。

{{range getvs "/app/servers/"}}

value: {{.}}

{{end}}

value: 192.168.1.22:456

value: 192.168.1.22:458

value: 192.168.1.22:460

value: 192.168.1.22:462

6、split

对输入的字符串做split处理,即将字符串按指定分隔符拆分成数组。

{{ $ := split (getv "/app/servers/cocky_morse") ":" }}

host: {{index $ 0}}

host: 192.168.1.22

port: 458

7、ls

返回所有的字符串型子key,找不到则返回错误。

{{range ls "/app/servers/"}}

subkey: {{.}}

{{end}}

subkey: backstabbing_rosalind

subkey: cocky_morse

subkey: goofy_goldstine

subkey: prickly_blackwell

8、lsdir

返回所有的字符串型子目录,找不到则返回一个空列表。

{{range lsdir "/app/"}}

subdir: {{.}}

{{end}}

subdir: servers

(4)启动confd及haproxy服务

下面为启动Confd服务命令行,参数“interval”为指定探测etcd的频率,单位为秒,参数“-node”为指定etcd服务主地址,以便获取容器信息。

# /usr/local/bin/confd -verbose -interval 10 -node '192.168.1.21:4001' -confdir /etc/confd > /var/log/confd.log &

# /etc/init.d/haproxy start

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 12345678@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息