动手实践 Docker 和 openSUSE Leap 15

2018年5月4日 | Douglas DeMaio | 无许可

本博客是即将发布 openSUSE Leap 15 的一系列技术博客的一部分。所有博客都提供关于 openSUSE Leap 和发行版中可用软件包的使用案例。祝您阅读愉快。

作者:Max Huang

Docker 是一种提供 容器 的软件技术,由 Docker, Inc. 公司推广。Docker 在 Windows 和 Linux 上提供操作系统级别虚拟化的附加抽象和自动化层。

Docker 实现了一个高级应用程序编程接口,以提供轻量级容器,这些容器以隔离的方式运行进程。

由于 Docker 容器非常轻量级,单个服务器或虚拟机可以同时运行多个容器。

让我们动手体验一下 DockeropenSUSE Leap 15

####

== 安装 Docker ==

使用 GUI 方法

使用 yast2 sw_single install docker

yast2 sw_single

搜索 docker

选择 docker 进行安装

使用命令行安装 docker

使用 zypper 安装,如果您不想交互式使用,请使用 #zypper -n install docker

zypper install docker

正在加载仓库数据…

正在读取已安装的软件包…

正在解析软件包依赖关系…

将安装以下 13 个新的软件包

containerd criu docker docker-bash-completion docker-libnetwork docker-runc git-core git-gui gitk libnet9

libsha1detectcoll1 python2-ipaddr python2-protobuf

自动选择了以下推荐软件包

criu

13 个新软件包将被安装。

总下载大小:23.2 MiB。已缓存:0 B。操作后,将使用额外的 117.1 MiB。

继续? [y/n/? 显示所有选项] (y): Y

安装后检查 docker 版本

docker --version

Docker version 17.09.1-ce, build f4ffd2511ce9

== 启动 docker 服务并设置开机启动 ==

GUI 方法

使用 yast2 services-manager

yast2 services-manager

点击 docker

点击“启动/停止”以启动 docker 服务

点击“启用/禁用”以设置开机启动 docker 服务

点击“确定”

命令行方法

使用 systemctl 命令

检查 docker 服务状态

systemctl status docker

  • docker.service - Docker Application Container Engine

Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)

Active: inactive (dead)

Docs: //docs.container.net.cn

启动 docker 服务

systemctl start docker

systemctl status docker

  • docker.service - Docker Application Container Engine

Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)

Active: active (running) since Fri 2018-04-27 21:24:09 CST; 3s ago

Docs: //docs.container.net.cn

Main PID: 13632 (dockerd)

Tasks: 9

设置开机启动 docker 服务

检查启动状态

systemctl is-enabled docker

disabled

设置开机启动 docker

systemctl enable docker

Created symlink /etc/systemd/system/multi-user.target.wants/docker.service -> /usr/lib/systemd/system/docker.service.

systemctl is-enabled docker

enabled

== 如果需要,普通用户可以使用 docker 命令 ==

docker 软件包会创建一个名为 docker 的新组。非 root 用户需要成为此组成员才能与 Docker 守护进程交互。您可以使用以下命令添加用户:

#usermod -a -G docker

示例

#usermod -a -G docker max

实践:docker 基本命令

检查 Docker 版本

docker --version

Docker version 17.09.1-ce, build f4ffd2511ce9

拉取您的第一个 docker 镜像

docker pull busybox

Using default tag: latest

latest: Pulling from library/busybox

f70adabe43c0: Pull complete

Digest: sha256:58ac43b2cc92c687a32c8be6278e50a063579655fe3090125dcb2af0ff9e1a64

Status: Downloaded newer image for busybox:latest

检查您的 docker 镜像

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

busybox latest 8ac48589692a 3 weeks ago 1.15MB

在网上搜索 docker 镜像

https://hub.docker.com/

例如,搜索 opensuse

使用命令搜索 docker 镜像

docker search opensuse

NAME DESCRIPTION STARS OFFICIAL AUTOMATED

opensuse This project contains the stable releases … 230 [OK]

opensuse/portus Production ready Docker image of Portus. 65 [OK]

获取您的 openSUSE docker 镜像 :)

默认情况下,如果您没有指定标签,则为 latest

docker pull opensuse

Using default tag: latest

latest: Pulling from library/opensuse

47aa660240a8: Pull complete

Digest: sha256:569e6ee7a622838b9fa1111c3bfa99a50fdb34b7503f945b7d18ce66bb94a369

Status: Downloaded newer image for opensuse:latest

再次检查您的 docker 镜像

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

opensuse latest 35057ab4ef08 6 days ago 110MB

busybox latest 8ac48589692a 3 weeks ago 1.15MB

使用标签获取 docker 镜像

docker pull opensuse:42.3

42.3: Pulling from library/opensuse

Digest: sha256:569e6ee7a622838b9fa1111c3bfa99a50fdb34b7503f945b7d18ce66bb94a369

Status: Downloaded newer image for opensuse:42.3

再次检查您的 docker 镜像,您会看到 opensuse:latest 和 opensuse:42.3 具有相同的 IMAGE ID,因为它们是相同的。

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

opensuse 42.3 35057ab4ef08 6 days ago 110MB

opensuse latest 35057ab4ef08 6 days ago 110MB

busybox latest 8ac48589692a 3 weeks ago 1.15MB

当然,您可以从 docker hub 拉取其他镜像,例如

docker pull sakana/sshd

Using default tag: latest

latest: Pulling from sakana/sshd

Digest: sha256:8f140e190db2d683b36cbac1d57410cdfb67029c4580b7b3aad3730005936544

Status: Downloaded newer image for sakana/sshd:latest

实践:运行 docker 容器

在开始之前了解您的 docker 容器状态

使用 #docker ps 命令时,您将看不到任何内容

docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

运行您的第一个 openSUSE docker 容器

docker run –rm -i -t opensuse /bin/bash

  • run 执行 docker

  • –rm 自动删除容器退出后

  • -i 保持 STDIN 即使未附加也打开

  • -t 分配一个伪终端

在容器中

您可以尝试 echo $HOSTNAME 来检查您是否在 docker 容器中。

00172605a6e5:/ # echo $HOSTNAME

00172605a6e5

退出容器

00172605a6e5:/ # exit

exit

使用 #docker ps 检查 docker 容器状态

docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

再次运行 docker 容器,不使用 –rm

docker run -i -t opensuse /bin/bash

退出 docker 容器

62d16d591ad0:/ # exit

exit

使用 #docker ps 检查 docker 容器状态

您会发现 – 如果您没有使用 –rm 选项,docker 容器将不会从您的主机中删除。

docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

62d16d591ad0 opensuse “/bin/bash” 1 minute ago Exited 1 minute ago quizzical_almeida

观看 Max 在 openSUSE.Asia 峰会上关于 Docker 和 openSUSE 的研讨会。openSUSE Leap 15 计划于 5 月 25 日发布。

分享此帖子