🍁作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道TOP1🏅 阿里云ACE认证高级工程师🏅 ✒️个人主页:小鹏linux 💊个人社区:小鹏linux(个人社区)欢迎您的加入!
目录
1. 镜像和容器
2. 新建并启动容器
3. 使用第一个容器
4. 容器命名
5.重启容器
6. 附着到容器上
👑👑👑结束语👑👑👑
1. 镜像和容器
看待镜像和容器的一种方式是将它们类比成程序与进程。一个进程可以视为一个被执行的应用程序,同样,一个Docker容器可以视为一个运行中的Docker镜像。 |
---|
2. 新建并启动容器
首先,我们会查看Docker是否能正常工作,然后学习基本的Docker的工作流:创建并管理容器。我们将浏览容器的典型生命周期:从创建、管理到停止,直到最终删除。 第一步,查看docker程序是否存在,功能是否正常: |
---|
[root@localhost ~]# sudo docker info
Containers: 1
Images: 8
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 10
Execution Driver: native-0.2
Kernel Version: 3.13.0-43-generic
Operating System: Ubuntu 14.04.2 LTS
CPUs: 1
Total Memory: 994 MiB
Name: riemanna
ID: DOIT:XN5S:WNYP:WP7Q:BEUP:EBBL:KGIX:GO3V:NDR7:YW6E:VFXT:FXHM WARNING: No swap limit support
Jetbrains全家桶1年46,售后保障稳定
在这里我们调用了docker可执行程序的info命令,该命令会返回所有容器和镜像(镜像即是Docker用来构建容器的“构建块”)的数量、Docker使用的执行驱动和存储驱动(execution and storage driver),以及Docker的基本配置。 Docker是基于客户端-服务器构架的。它有一个docker程序,既能作为客户端,也可以作为服务器端。作为客户端时,docker程序向Docker守护进程发送请求(如请求返回守护进程自身的信息),然后再对返回的请求结果进行处理。 |
---|
现在,让我们尝试启动第一个Docker容器。我们可以使用docker run命令创建容器。 docker run命令提供了Docker容器的创建到启动的功能: |
---|
[root@localhost ~]# sudo docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu' locally
ubuntu:latest: The image you are pulling has been verified 511136ea3c5a: Pull complete
d497ad3926c8: Pull complete
ccb62158e970: Pull complete
e791be0477f2: Pull complete
3680052c0f5c: Pull complete
22093c35d77b: Pull complete
5506de2b643b: Pull complete
Status: Downloaded newer image for ubuntu:latest
root@fcd78e1a3569:/#
官方文档列出了完整的Docker命令列表,也可以使用docker help获取这些命令。此外,还可以使用Docker的man页(即执行man docker-run)。
[root@localhost ~]# sudo docker run -i -t ubuntu /bin/bash
上述命令中: |
---|
利用docker run来创建并启动容器时,Docker在后台运行的标准操作包括:
随后,Docker在文件系统内部用这个镜像创建了一个新容器。该容器拥有自己的网络、IP地址,以及一个用来和宿主机进行通信的桥接网络接口。最后,我们告诉Docker在新容器中要运行什么命令,在本例中我们在容器中运行/bin/bash命令启动了一个Bash shell。 |
---|
root@f7cbdac22a02:/#
3. 使用第一个容器
现在,我们已经以root用户登录到了新容器中,容器的ID f7cbdac22a02,乍看起来有些令人迷惑的字符串`。这是一个完整的Ubuntu系统,可以用它来做任何事情。下面就来研究一下这个容器。首先,我们可以获取该容器的主机名,如下: |
---|
root@f7cbdac22a02:/# hostname
f7cbdac22a02
可以看到,容器的主机名就是该容器的ID。再来看看/etc/hosts文件内容: |
---|
root@f7cbdac22a02:/# cat /etc/hosts
172.17.0.4 f7cbdac22a02
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Docker已在hosts文件中为该容器的IP地址添加了一条主机配置项。 再来看看容器的网络配置情况,如下: |
---|
root@f7cbdac22a02:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 1500 qdisc noqueue state
UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
899: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP group default qlen 1000
link/ether 16:50:3a:b6:f2:cc brd ff:ff:ff:ff:ff:ff
inet 172.17.0.4/16 scope global eth0
inet6 fe80::1450:3aff:feb6:f2cc/64 scope link valid_lft forever preferred_lft forever
可以看到,这里有lo的环回接口,还有IP为172.17.0.4的标准 eth0网络接口,和普通宿主机是完全一样的。我们还可以查看容器中运行的进程,如下: |
---|
root@f7cbdac22a02:/# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 18156 1936 ? Ss May30 0:00 /bin/bash
root 21 0.0 0.0 15568 1100 ? R+ 02:38 0:00 ps -aux
接下来尝试安装一个软件包: |
---|
root@f7cbdac22a02:/# apt-get update && apt-get install vim
通过上述命令,就在容器中安装了Vim编辑器软件。 |
---|
但容器仍然是存在的,可以用docker ps -a命令查看当前系统中容器的列表,如下: |
---|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cd57c2cdf7f ubuntu:14.04 "/bin/bash" A minute Exited
gray_cat
默认情况下,当执行docker ps命令时,只能看到正在运行的容器。如果指定-a标志的话,那么docker ps命令会列出所有容器,包括正在运行的和已经停止的。 注意:也可以为docker ps命令指定-l标志,列出最后一个运行的容器,无论其正在运行还是已经停止。也可以通过–format标志,进一步控制显示哪些信息,以及如何显示这些信息 |
---|
从该命令的输出结果中我们可以看到关于这个容器的很多有用信息:ID、用于创建该容器的镜像、容器最后执行的命令、创建时间以及容器的退出状态(在上面的例子中,退出状态是0,因为容器是通过正常的exit命令退出的)。我们还可以看到,每个容器都有一个名称。 |
---|
容器是直接提供应用服务的组件,也是Docker实现快速启停和高效服务性能的基础。 |
---|
👑👑👑结束语👑👑👑
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/231310.html原文链接:https://javaforall.cn