要入门URLOS应用开发 首先要了解docker容器的使用方法

URLOS本是基于docker容器运行,在入门URLOS开发之前,我们首先需要掌握docker的相关基础知识,本篇就以docker容器的基本使用方法为例,快速的让大家对docker有一个全面的印象。

Docker简介

Docker 是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Ubuntu Docker 安装

1、Docker官方安装方法

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

获取安装包

[email protected]:~# wget -qO- https://get.docker.com/ | sh

安装完成后有提示

    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 runoob
   Remember that you will have to log out and back in for this to take effect!  

启动docker服务

[email protected]:~# sudo service docker start

2、通过安装URLOS获得

URLOS基于Docker运行,安装了URLOS,就等于安装了Docker,我们可以使用URLOS官方安装命令:

curl -LO www.urlos.com/iu && sh iu

curl -O https://www.urlos.com/install && chmod 544 install && ./install

Docker容器使用

Docker客户端

Docker 客户端非常简单 ,可以直接输入 Docker 命令来查看到 Docker 客户端的所有命令选项。

[email protected]:~# docker

可以通过命令docker command --help更深入的了解指定的 Docker 命令使用方法。

例如我们要查看docker stats指令的具体使用方法:

[email protected]:~# docker stats --help


启动容器(交互模式)

我们如果要使用版本为16.04的ubuntu系统镜像来运行容器时,命令如下:

[email protected]:~# docker run -it ubuntu:16.04 sh
#

如果要使用版本为15.04的ubuntu系统镜像,则命令如下:

[email protected]:~# docker run -it ubuntu:15.04 sh
#

各个参数解析:

  • docker: Docker 的二进制执行文件。
  • run:与前面的 docker 组合来运行一个容器。
  • -it:其实是两个参数组成, -i 和 -t,-i:允许你对容器内的标准输入 (STDIN) 进行交互。-t:在新容器内指定一个伪终端或终端。
  • ubuntu:15.04:指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
  • sh:执行命令。

将上面的命令稍作修改,在结尾处加上一句命令,执行后:

[email protected]:~# docker run -it ubuntu:16.04 sh -c "while true; do echo hello urlos; sleep 1; done"
hello urlos
hello urlos
hello urlos
hello urlos
hello urlos
hello urlos
^[email protected]:~#

我们可以看到终端上不断输出 hello urlos ,这时按键盘Ctrl+c来终止输出。

启动容器(后台模式)

我们将上面的命令再稍作修改,把 -it 替换为 -d 看看结果:

[email protected]:~# docker run -d ubuntu:16.04 sh -c "while true; do echo hello urlos; sleep 1; done"
0cf141fd0745fb4dc104bec1a3238a1bd8dad7aa72926dea0a39ddc7ba54fe32

在输出中,我们没有看到期望的"hello world",而是一串长字符

0cf141fd0745fb4dc104bec1a3238a1bd8dad7aa72926dea0a39ddc7ba54fe32

这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。

首先,我们需要确认容器有在运行,可以通过 docker ps 来查看:

[email protected]:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
0cf141fd0745        ubuntu:16.04        "sh -c ‘while true; …"   2 minutes ago       Up 2 minutes                                  hopeful_matsumoto

然后使用 docker logs [ID或者名字]命令,查看容器内的标准输出:

[email protected]:~# docker logs hopeful_matsumoto
hello urlos
hello urlos
hello urlos
hello urlos
hello urlos
hello urlos
hello urlos
hello urlos

我们可以看到,在容器内部已经输出了非常多的hello urlos,这说明容器处于后台运行模式。


运行一个WEB应用容器

现在我们将在docker容器中运行一个 nginx 应用来运行一个web应用。

首先从Docker Hub公共镜像源中拉取镜像:

[email protected]:~# docker pull nginx

然后运行这个镜像:

[email protected]ntu:~# docker run -d -p 8080:80 nginx

参数说明:

  • -d:让容器在后台运行。
  • -p:让宿主机的8080端口映射给容器内部的80端口。

查看WEB应用容器

使用 docker ps 来查看我们正在运行的容器:

[email protected]:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
b394756b6c5d        nginx               "nginx -g ‘daemon of…"   3 seconds ago       Up 2 seconds        0.0.0.0:8080->80/tcp                elastic_babbage

我们看到端口信息 0.0.0.0:8080->80/tcp,意思是宿主机的8080端口映射给容器内部的80端口。

这时我们可以通过浏览器访问WEB应用:


查看端口的快捷方法

通过docker ps命令可以查看到容器的端口映射,docker还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。

上面我们创建的 web 应用容器 ID 为 b394756b6c5d 容器名为 elastic_babbage

我可以使用 docker port b394756b6c5ddocker port elastic_babbage 来查看容器端口的映射情况。

[email protected]:~# docker port b394756b6c5d
80/tcp -> 0.0.0.0:8080
[email protected]:~# docker port affectionate_montalcini
80/tcp -> 0.0.0.0:8080

查看 WEB 应用程序日志

使用docker logs [ID或者名字] 可以查看容器内部的标准输出。

[email protected]:~# docker logs b394756b6c5d
192.168.43.131 - - [04/Jun/2019:06:28:42 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0" "-"
2019/06/05 06:28:42 [error] 6#6: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.43.131, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.43.122:8080"
192.168.43.131 - - [04/Jun/2019:06:28:42 +0000] "GET /favicon.ico HTTP/1.1" 404 153 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0" "-"

查看WEB应用程序容器的进程

我们还可以使用 docker top 来查看容器内部运行的进程

[email protected]:~# docker top b394756b6c5d
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                2069                2050                0                   23:24               ?                   00:00:00            nginx: master process nginx -g daemon off;
systemd+            2100                2069                0                   23:24               ?                   00:00:00            nginx: worker process

停止 WEB 应用容器

使用 docker stop [ID或者名字] 命令停止容器

[email protected]:~# docker stop b394756b6c5d
b394756b6c5d

启动 WEB 应用容器

使用 docker start [ID或者名字] 命令启动已经停止的容器

[email protected]:~# docker start b394756b6c5d
b394756b6c5d

### 重新启动WEB应用容器

我们能还可以使用 docker restart [ID或者名字] 命令重新启动正在运行的容器

[email protected]:~# docker restart b394756b6c5d
b394756b6c5d

docker ps -l 查询最后一次创建的容器:

[email protected]:~# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
b394756b6c5d        nginx               "nginx -g ‘daemon of…"   12 minutes ago      Up 12 minutes       0.0.0.0:8080->80/tcp   elastic_babbage

删除WEB应用容器

我们可以使用 docker rm [ID或者名字] 命令来删除不需要的容器

注意:删除容器时,容器必须是停止状态,否则会报如下错误:

[email protected]:~# docker rm b394756b6c5d
Error response from daemon: You cannot remove a running container b394756b6c5d95f1d43f11393c169cc73de40938d8f09db81077c8bce6e5881a. Stop the container before attempting removal or force remove

如果要删除正在运行的容器,这时我们只需要加入 -f 参数即可:

[email protected]:~# docker rm -f b394756b6c5d
b394756b6c5d

原文地址:https://blog.51cto.com/14393412/2408009

时间: 2024-08-30 13:19:21

要入门URLOS应用开发 首先要了解docker容器的使用方法的相关文章

Storm使用入门之本地开发环境搭建

本篇博文详细告诉你如何安装Storm的本地开发环境,总体分为两步,具体如下: 1.从官网上下载Storm的发布包,下载完成后将其解压,并将解压后的bin目录添加到环境变量(PATH)中,以方便后续执行Storm的相关命令 2.修改Storm的配置文件(storm.yaml),主要是按照实际情况更新配置文件中的集群信息,然后将修改后的配置文件添加到目录(~/.storm/)中,目的是为了后续能够远程启动和停止集群上的计算任务(即topology) 接下来,咱们来详细地介绍每一个操作步骤. 首先,何

Extjs5.0从入门到实战开发信息管理系统(Extjs基础、Extjs5新特性、Spring、Spring mvc、Mybatis)视频教程

Extjs5.0从入门到实战开发信息管理系统(Extjs基础.Extjs5新特性.Spring.Spring mvc.Mybatis)视频教程下载   联系QQ:1026270010 Extjs作为一款优秀的JS前端开发框架以其良好的架构.丰富的UI组件库.完善的文档和社区支持等诸多优点拥有广泛的市场应用空间,开发人员无需过多的关注HTML.CSS甚至各种常用JS算法,只需把精力放在业务逻辑上,利用各种组件的相互组合调用便可轻松而高效的开发出系统的前端页面. Extjs5在之前版本的基础上又推出

Netty入门二:开发第一个Netty应用程序

    既然是入门,那我们就在这里写一个简单的Demo,客户端发送一个字符串到服务器端,服务器端接收字符串后再发送回客户端. 2.1.配置开发环境 1.安装JDK 2.去官网下载jar包 (或者通过pom构建) 2.2.认识下Netty的Client和Server 一个Netty应用模型,如下图所示,但需要明白一点的是,我们写的Server会自动处理多客户端请求,理论上讲,处理并发的能力决定于我们的系统配置及JDK的极限. Client连接到Server端 建立链接发送/接收数据 Server端

一个编程小白,如何入门APP软件开发领域?

近些年,互联网创业火得不得了!一时间,满世界都在招做App软件开发的专业人员.从大众角度来看,学编程,写代码,是一件非常困难的事情.但是,App开发人员的工资那么诱人,让很多小白也跃跃欲试想学一下.那么,一个编程小白如何入门App软件开发领域呢?如何快速掌握App开发技术呢? 对于APP开发,如何选择原生与混合,小编的意见就是选择自己擅长的,对于新手来说,选择简单的.从无到有,循序渐进,这样子从个人学习进度.学习兴趣来讲,都是合适的.一下子来个高大上,只能让你陷入困境.学习程序我的经验是,先看语

【学院官方整理】Python学习路线图-适合自学者从入门到项目开发(视频+文档) 干货提炼

亲爱的学员们: 您好!51CTO学院为梦想增值,诚邀您的关注!51CTO学院致力于让专家分享技术并让技术变现,让广大技术爱好者便捷.实惠的获取优质学习资源. 为了方便大家的学习,我们特别整理了Python学习路线图-适合自学者从入门到项目开发(视频+文档) 干货提炼,点击查看更多>> Python学习路线图-适合自学者从入门到项目开发(视频+文档) 干货提炼 本专题涵盖了Python基础.网络编程.WEB开发基础.WEB框架.分布式监控开发.审计堡垒机.FTP服务器.CMDB.主机批量管理.W

Storm使用入门之构建开发项目

本篇博文向大伙详细讲解了如何构建Storm的项目工程,概括起来分为两步: 1.向CLASSPATH中添加Storm的jar包 2.如果是使用多语言开发的话,则需要将相应目录添加到CLASSPATH下 接下来请跟着我们一起了解如何将storm-starter(Storm官方DEMO工程)添加到Eclipse中. 步骤一:向CLASSPATH添加Storm依赖包 当我们开发Storm的计算任务(下文统一称之为"topology")时,需要引入Storm的依赖jar,对此我们推荐采用mave

Extjs视频教程_Extjs5.0从入门到实战开发信息管理系统

Extjs5.0从入门到实战开发信息管理系统(Extjs基础.Extjs5新特性.Spring.Spring mvc.Mybatis)适合人群:初级课时数量:40课时用到技术:Extjs基础,Extjs5新特性,sencha cmd,spring,spring mvc, mybatis涉及项目:信息管理系统核心框架(mvvm+mvc架构)咨询qq:1840215592课程内容简介:1.课程研发环境开发工具:eclipse,sencha cmd:数据库工具:mysql5,mysql workben

CK2041-React.js入门与案例开发

随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了.对于学习有困难不知道如何提升自己可以加扣:1225462853进行交流得到帮助,获取学习资料. 下载地址:http://pan.baidu.com/s/1jI05TPW 基础和实战衔接如此好的React.js课程 给你一个从入门到真实开发的机会 没有react.js基础也没关系 - 从入门开始给你讲透 课程从R

1小时实战入门小程序开发,历史上的今天案例讲解

我们前面学了这么多的小程序基础知识,一直没有用一个实际的案例来把前面的知识点串起来,今天我们就来开发一款简单的<历史上的今天>,来把我们前面的知识点完整的串起来. 老规矩,先看效果图 可以看到我们实现了如下功能 1,列表页 2,列表跳转详情页 3,视频播放(其实是假的,后面给大家讲这个视频播放) 4,网络请求 5,列表到详情数据携带好了,话不多说,我们来直接看代码实现. 一,网络数据的获取 网络数据获取我们用来官方提供的wx.request方法.下面红色框里就是我们的网络数据获取的代码是不是感