资讯专栏INFORMATION COLUMN

URLOS应用开发学前班—docker容器使用篇

xuweijian / 2717人阅读

摘要:本是基于容器运行,在入门开发之前,我们首先需要掌握的相关基础知识,本篇就以容器的基本使用方法为例,快速的让大家对有一个全面的印象。简介是一个开源的应用容器引擎,基于语言并遵从协议开源。上面我们创建的应用容器为容器名为。

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。

获取安装包

</>复制代码

  1. root@ubuntu:~# wget -qO- https://get.docker.com/ | sh

安装完成后有提示

</>复制代码

  1. If you would like to use Docker as a non-root user, you should now consider
  2. adding your user to the "docker" group with something like:
  3. sudo usermod -aG docker runoob
  4. Remember that you will have to log out and back in for this to take effect!

启动docker服务

</>复制代码

  1. root@ubuntu:~# sudo service docker start
2、通过安装URLOS获得

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

</>复制代码

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

</>复制代码

  1. curl -O https://www.urlos.com/install && chmod 544 install && ./install
Docker容器使用 Docker客户端

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

</>复制代码

  1. root@ubuntu:~# docker


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

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

</>复制代码

  1. root@ubuntu:~# docker stats --help


启动容器(交互模式)

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

</>复制代码

  1. root@ubuntu:~# docker run -it ubuntu:16.04 sh
  2. #

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

</>复制代码

  1. root@ubuntu:~# docker run -it ubuntu:15.04 sh
  2. #

</>复制代码

  1. 各个参数解析:

  2. docker: Docker 的二进制执行文件。

  3. run:与前面的 docker 组合来运行一个容器。

  4. -it:其实是两个参数组成, -i 和 -t,-i:允许你对容器内的标准输入 (STDIN) 进行交互。-t:在新容器内指定一个伪终端或终端。

  5. ubuntu:15.04:指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。

  6. sh:执行命令。

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

</>复制代码

  1. root@ubuntu:~# docker run -it ubuntu:16.04 sh -c "while true; do echo hello urlos; sleep 1; done"
  2. hello urlos
  3. hello urlos
  4. hello urlos
  5. hello urlos
  6. hello urlos
  7. hello urlos
  8. ^Croot@ubuntu:~#

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

启动容器(后台模式)

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

</>复制代码

  1. root@ubuntu:~# docker run -d ubuntu:16.04 sh -c "while true; do echo hello urlos; sleep 1; done"
  2. 0cf141fd0745fb4dc104bec1a3238a1bd8dad7aa72926dea0a39ddc7ba54fe32

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

0cf141fd0745fb4dc104bec1a3238a1bd8dad7aa72926dea0a39ddc7ba54fe32

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

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

</>复制代码

  1. root@ubuntu:~# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 0cf141fd0745 ubuntu:16.04 "sh -c "while true; …" 2 minutes ago Up 2 minutes hopeful_matsumoto

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

</>复制代码

  1. root@ubuntu:~# docker logs hopeful_matsumoto
  2. hello urlos
  3. hello urlos
  4. hello urlos
  5. hello urlos
  6. hello urlos
  7. hello urlos
  8. hello urlos
  9. hello urlos

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


运行一个WEB应用容器

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

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

</>复制代码

  1. root@ubuntu:~# docker pull nginx

然后运行这个镜像:

</>复制代码

  1. root@ubuntu:~# docker run -d -p 8080:80 nginx

</>复制代码

  1. 参数说明:

  2. -d:让容器在后台运行。

  3. -p:让宿主机的8080端口映射给容器内部的80端口。


查看WEB应用容器

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

</>复制代码

  1. root@ubuntu:~# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 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 来查看容器端口的映射情况。

</>复制代码

  1. root@ubuntu:~# docker port b394756b6c5d
  2. 80/tcp -> 0.0.0.0:8080

</>复制代码

  1. root@ubuntu:~# docker port affectionate_montalcini
  2. 80/tcp -> 0.0.0.0:8080

查看 WEB 应用程序日志

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

</>复制代码

  1. root@ubuntu:~# docker logs b394756b6c5d
  2. 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" "-"
  3. 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"
  4. 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 来查看容器内部运行的进程

</>复制代码

  1. root@ubuntu:~# docker top b394756b6c5d
  2. UID PID PPID C STIME TTY TIME CMD
  3. root 2069 2050 0 23:24 ? 00:00:00 nginx: master process nginx -g daemon off;
  4. systemd+ 2100 2069 0 23:24 ? 00:00:00 nginx: worker process

停止 WEB 应用容器

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

</>复制代码

  1. root@ubuntu:~# docker stop b394756b6c5d
  2. b394756b6c5d
启动 WEB 应用容器

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

</>复制代码

  1. root@ubuntu:~# docker start b394756b6c5d
  2. b394756b6c5d
 重新启动WEB应用容器

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

</>复制代码

  1. root@ubuntu:~# docker restart b394756b6c5d
  2. b394756b6c5d

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

</>复制代码

  1. root@ubuntu:~# docker ps -l
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 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或者名字] 命令来删除不需要的容器

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

</>复制代码

  1. root@ubuntu:~# docker rm b394756b6c5d
  2. Error response from daemon: You cannot remove a running container b394756b6c5d95f1d43f11393c169cc73de40938d8f09db81077c8bce6e5881a. Stop the container before attempting removal or force remove

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

</>复制代码

  1. root@ubuntu:~# docker rm -f b394756b6c5d
  2. b394756b6c5d

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27896.html

相关文章

  • 使用URLOS低门槛快速开发和分发docker应用,未来微服务发展大趋势

    摘要:使用技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力。例如我们要安装然后使用查看我们的扩展是否安装成功。启动和,检查是否正常运行。单容器运行若勾选,则表示安装此应用时,每个服务只运行一个容器。 使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力。在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如今在微服务架构越来越流行的情况下,微服务...

    张巨伟 评论0 收藏0
  • URLOS 基于Docker容器Linux主机管理面板 双十一永久授权11.11元

    摘要:近期双十一大促活动期间,我们站长朋友们肯定会买各种业务需要的云服务产品,在前面的文章中老蒋也有介绍到宝塔面板专业版在期间也是有活动的双十一宝塔面板专业版优惠活动。这篇文章要介绍的是双十一期间,商家标准版永久授权低至元。近期双十一大促活动期间,我们站长朋友们肯定会买各种业务需要的云服务产品,在前面的文章中老蒋也有介绍到宝塔面板专业版在期间也是有活动的(2021双十一宝塔面板专业版优惠活动)。今...

    xiyang 评论0 收藏0
  • URLOS应用开发基础课——Docker基础镜像Alpine入门教程

    摘要:我们在进行应用开发时,经常会用到一些基础系统镜像,如等,我们可以通过命令直接拉取官方镜像。目前官方已开始推荐使用替代之前的做为基础镜像环境。适合容器使用由于小巧功能完备,非常适合作为容器的基础镜像。 我们在进行URLOS应用开发时,经常会用到一些基础系统镜像,如:ubuntu、CentOS、Debian等,我们可以通过docker pull命令直接拉取官方镜像。 root@ubuntu...

    Jrain 评论0 收藏0

发表评论

0条评论

xuweijian

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<