动手实践 Docker 和 openSUSE Leap 15
2018年5月4日 | Douglas DeMaio | 无许可
本博客是即将发布 openSUSE Leap 15 的一系列技术博客的一部分。所有博客都提供关于 openSUSE Leap 和发行版中可用软件包的使用案例。祝您阅读愉快。
作者:Max Huang
Docker 是一种提供 容器 的软件技术,由 Docker, Inc. 公司推广。Docker 在 Windows 和 Linux 上提供操作系统级别虚拟化的附加抽象和自动化层。
Docker 实现了一个高级应用程序编程接口,以提供轻量级容器,这些容器以隔离的方式运行进程。
由于 Docker 容器非常轻量级,单个服务器或虚拟机可以同时运行多个容器。
让我们动手体验一下 Docker 和 openSUSE 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 镜像
例如,搜索 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 日发布。
