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。
获取安装包:
root@ubuntu:~# 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服务
root@ubuntu:~# 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 客户端的所有命令选项。
root@ubuntu:~# docker
可以通过命令docker command --help
更深入的了解指定的 Docker 命令使用方法。
例如我们要查看docker stats
指令的具体使用方法:
root@ubuntu:~# docker stats --help
启动容器(交互模式)
我们如果要使用版本为16.04的ubuntu系统镜像来运行容器时,命令如下:
root@ubuntu:~# docker run -it ubuntu:16.04 sh
#
如果要使用版本为15.04的ubuntu系统镜像,则命令如下:
root@ubuntu:~# 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:执行命令。
将上面的命令稍作修改,在结尾处加上一句命令,执行后:
root@ubuntu:~# 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
^Croot@ubuntu:~#
我们可以看到终端上不断输出 hello urlos
,这时按键盘Ctrl+c
来终止输出。
启动容器(后台模式)
我们将上面的命令再稍作修改,把 -it
替换为 -d
看看结果:
root@ubuntu:~# 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
来查看:
root@ubuntu:~# 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或者名字]
命令,查看容器内的标准输出:
root@ubuntu:~# 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公共镜像源中拉取镜像:
root@ubuntu:~# docker pull nginx
然后运行这个镜像:
root@ubuntu:~# docker run -d -p 8080:80 nginx
参数说明:
- -d:让容器在后台运行。
- -p:让宿主机的8080端口映射给容器内部的80端口。
查看WEB应用容器
使用 docker ps
来查看我们正在运行的容器:
root@ubuntu:~# 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 b394756b6c5d 或 docker port elastic_babbage 来查看容器端口的映射情况。
root@ubuntu:~# docker port b394756b6c5d
80/tcp -> 0.0.0.0:8080
root@ubuntu:~# docker port affectionate_montalcini
80/tcp -> 0.0.0.0:8080
查看 WEB 应用程序日志
使用docker logs [ID或者名字]
可以查看容器内部的标准输出。
root@ubuntu:~# 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
来查看容器内部运行的进程
root@ubuntu:~# 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或者名字]
命令停止容器
root@ubuntu:~# docker stop b394756b6c5d
b394756b6c5d
启动 WEB 应用容器
使用 docker start [ID或者名字]
命令启动已经停止的容器
root@ubuntu:~# docker start b394756b6c5d
b394756b6c5d
重新启动WEB应用容器
我们能还可以使用 docker restart [ID或者名字]
命令重新启动正在运行的容器
root@ubuntu:~# docker restart b394756b6c5d
b394756b6c5d
docker ps -l
查询最后一次创建的容器:
root@ubuntu:~# 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或者名字]
命令来删除不需要的容器
注意:删除容器时,容器必须是停止状态,否则会报如下错误:
root@ubuntu:~# docker rm b394756b6c5d
Error response from daemon: You cannot remove a running container b394756b6c5d95f1d43f11393c169cc73de40938d8f09db81077c8bce6e5881a. Stop the container before attempting removal or force remove
如果要删除正在运行的容器,这时我们只需要加入 -f
参数即可:
root@ubuntu:~# docker rm -f b394756b6c5d
b394756b6c5d
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。
获取安装包:
root@ubuntu:~# 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服务
root@ubuntu:~# 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 客户端的所有命令选项。
root@ubuntu:~# docker
可以通过命令docker command --help
更深入的了解指定的 Docker 命令使用方法。
例如我们要查看docker stats
指令的具体使用方法:
root@ubuntu:~# docker stats --help
启动容器(交互模式)
我们如果要使用版本为16.04的ubuntu系统镜像来运行容器时,命令如下:
root@ubuntu:~# docker run -it ubuntu:16.04 sh
#
如果要使用版本为15.04的ubuntu系统镜像,则命令如下:
root@ubuntu:~# 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:执行命令。
将上面的命令稍作修改,在结尾处加上一句命令,执行后:
root@ubuntu:~# 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
^Croot@ubuntu:~#
我们可以看到终端上不断输出 hello urlos
,这时按键盘Ctrl+c
来终止输出。
启动容器(后台模式)
我们将上面的命令再稍作修改,把 -it
替换为 -d
看看结果:
root@ubuntu:~# 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
来查看:
root@ubuntu:~# 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或者名字]
命令,查看容器内的标准输出:
root@ubuntu:~# 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公共镜像源中拉取镜像:
root@ubuntu:~# docker pull nginx
然后运行这个镜像:
root@ubuntu:~# docker run -d -p 8080:80 nginx
参数说明:
- -d:让容器在后台运行。
- -p:让宿主机的8080端口映射给容器内部的80端口。
查看WEB应用容器
使用 docker ps
来查看我们正在运行的容器:
root@ubuntu:~# 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 b394756b6c5d 或 docker port elastic_babbage 来查看容器端口的映射情况。
root@ubuntu:~# docker port b394756b6c5d
80/tcp -> 0.0.0.0:8080
root@ubuntu:~# docker port affectionate_montalcini
80/tcp -> 0.0.0.0:8080
查看 WEB 应用程序日志
使用docker logs [ID或者名字]
可以查看容器内部的标准输出。
root@ubuntu:~# 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
来查看容器内部运行的进程
root@ubuntu:~# 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或者名字]
命令停止容器
root@ubuntu:~# docker stop b394756b6c5d
b394756b6c5d
启动 WEB 应用容器
使用 docker start [ID或者名字]
命令启动已经停止的容器
root@ubuntu:~# docker start b394756b6c5d
b394756b6c5d
重新启动WEB应用容器
我们能还可以使用 docker restart [ID或者名字]
命令重新启动正在运行的容器
root@ubuntu:~# docker restart b394756b6c5d
b394756b6c5d
docker ps -l
查询最后一次创建的容器:
root@ubuntu:~# 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或者名字]
命令来删除不需要的容器
注意:删除容器时,容器必须是停止状态,否则会报如下错误:
root@ubuntu:~# docker rm b394756b6c5d
Error response from daemon: You cannot remove a running container b394756b6c5d95f1d43f11393c169cc73de40938d8f09db81077c8bce6e5881a. Stop the container before attempting removal or force remove
如果要删除正在运行的容器,这时我们只需要加入 -f
参数即可:
root@ubuntu:~# docker rm -f b394756b6c5d
b394756b6c5d
URLOS开发基础教程——docker容器的使用方法的更多相关文章
- RPG游戏开发基础教程
RPG游戏开发基础教程 第一步 下载RPG Maker 开发工具包 1.RPG Maker 是什么? RPG Maker 是由Enterbrain公司推出的RPG制作工具. 中文译名为RPG制作大师. ...
- 商业规则引擎IBM WebSphere ILog JRules概述,开发基础教程
Ilog Jrules开发基础教程有7篇,地址规则引擎Ilog Jrules开发基础教程[连载1]-- 概述篇 概述篇 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来 ...
- iOS 9音频应用开发基础教程
iOS 9音频应用开发基础教程(大学霸内部资料) 介绍:iOS 9音频应用开发基础教程(内部资料)是iOS 9音频应用开发专向教程.本书采用Swift 2.0语言开发基于iOS 9的音频应用.实现 ...
- iOS 9应用开发基础教程下册
iOS 9应用开发基础教程下册 介绍: 本教程是国内第一本iOS 9开发应用教程.本教程基于Xcode 7.0,使用Swift 2.0语言讲解如何开发iOS 9的应用App. 学习建议:本教程针对 ...
- Xamarin图表开发基础教程(13)OxyPlot框架支持的其它图表
Xamarin图表开发基础教程(13)OxyPlot框架支持的其它图表 除了以上提到的图表外,OxyPlot组件还包含了6种类型的其它图表,分别为等高线图.箱线图.饼图.热图.散点图和散点误差图,如图 ...
- Xamarin图表开发基础教程(12)OxyPlot框架支持的金融图表类型
Xamarin图表开发基础教程(12)OxyPlot框架支持的金融图表类型 OxyPlot组件中支持5种类型的金融图表,它们分别为销量图.高低图.股票K线图.股票走势图和旧式股票图,如图1.20~1. ...
- Xamarin图表开发基础教程(11)OxyPlot框架支持的图表类型
Xamarin图表开发基础教程(11)OxyPlot框架支持的图表类型 OxyPlot组件中支持7种类型的条型图表,分别为普通条形图.线型条形图.矩形条形图.差值图.龙卷风图.普通柱形图和柱形误差图, ...
- Xamarin图表开发基础教程(10)OxyPlot框架支持的图表类型
Xamarin图表开发基础教程(10)OxyPlot框架支持的图表类型 OxyPlot组件支持26种图表,这些图表按照功能和样式可以分为4大类,分别为线型图表.条型图表.金融图表和其它图表. 线型图表 ...
- Xamarin图表开发基础教程(9)OxyPlot框架
Xamarin图表开发基础教程(9)OxyPlot框架 OxyPlot组件构成 OxyPlot组件主要由两个类构成,分别为PlotView和PlotModel.这两个类我们在上文中也使用到了.本节将讲 ...
随机推荐
- Java 解析自定义XML文件
这里我用 maven项目 作为 演示 配置pom.xml文件 完整的pom.xml文件信息 <?xml version="1.0" encoding="UTF-8& ...
- java+文件批量下载
这篇文章主要介绍了Java实现批量下载选中文件功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下 1.在action中定义变量 private List<String> downLoa ...
- BZOJ 4522: [Cqoi2016]密钥破解 exgcd+Pollard-Rho
挺简单的,正好能再复习一遍 $exgcd$~ 按照题意一遍一遍模拟即可,注意一下 $pollard-rho$ 中的细节. #include <ctime> #include <cma ...
- D. Make a Permutation!(思维)
D. Make a Permutation! time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- 【知识库】-数据库_MySQL常用SQL语句语法大全示例
简书作者:seay 文章出处: 关系数据库常用SQL语句语法大全 Learn [已经过测试校验] 一.创建数据库 二.创建表 三.删除表 四.清空表 五.修改表 六.SQL查询语句 七.SQL插入语句 ...
- TCP输出 之 tcp_transmit_skb
概述 tcp_transmit_skb的作用是复制或者拷贝skb,构造skb中的tcp首部,并将调用网络层的发送函数发送skb:在发送前,首先需要克隆或者复制skb,因为在成功发送到网络设备之后,sk ...
- vue-cli脚手架构建了项目,想去除Eslint验证,如何设置?
vue-cli脚手架构建了项目,想去除Eslint验证,如何设置? 在webpack.base.conf.js里面删掉下面: preLoaders: [ { test: /\.vue$/, loade ...
- LeetCode 48. 旋转图像(Rotate Image)
题目描述 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像. 示例 1: ...
- Mui 底部导航切换
1.建好子模板目录 2.导航代码 <nav class="mui-bar mui-bar-tab"> <a id="defaultTab" c ...
- 浏览器是如何处理页面元素的Download?
首先,浏览器对于script的下载是避免并行进行的.HTTP/1.1协议中规定浏览器和同一host之间只建立最多两个连接,也就是说允许的最 大并行度为2(当然,对IE和Firefox来说,你都可以通过 ...