玖叶教程网

前端编程开发入门

Docker入门---使用容器(启动、停止、删除等)

1. 启动容器

(1)

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。

因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。

下面的命令输出一个 “Hello World”,之后终止容器。

[root@centos1 docker]# docker run ubuntu:18.04 /bin/echo 'Hello world'
Hello world

这跟在本地直接执行 /bin/echo 'hello world' 几乎感觉不出任何区别。

下面的命令则启动一个 bash 终端,允许用户进行交互。

[root@centos1 docker]# docker run -t -i ubuntu:18.04 /bin/bash
root@0ffb174e7b1c:/# cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
.....

【注释】容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的。除此之外,并没有其它的资源。可以在伪终端中利用 ps 或 top 来查看进程信息。可见,容器中仅运行了指定的 bash 应用。这种特点使得 Docker 对资源的利用率极高

[root@centos1 docker]# docker run -t -i ubuntu:18.04 /bin/bash
root@0161a6495050:/# 
root@0161a6495050:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 05:27 pts/0 00:00:00 /bin/bash
root 11 1 0 05:27 pts/0 00:00:00 ps -ef

(2) 当利用 docker run 来创建容器时,Docker 在后台运行的操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个 ip 地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

(3) 可以利用 docker container start 命令,直接将一个已经终止的容器启动运行。

2. 后台运行

更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。

如果不用-d参数,容器会把输出的结果 (STDOUT) 打印到宿主机上面:

[root@centos1 docker]# docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
hello world
hello world
hello world

如果使用了 -d 参数运行容器。容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker container logs 查看)。

[root@centos1 docker]# docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
72a505f59d55b5cbe951d2b6947a9734fbc9df1b4a4e3691b13d3eae3a9f48cb
[root@centos1 docker]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
72a505f59d55 ubuntu:18.04 "/bin/sh -c 'while t…" 3 seconds ago Up 2 seconds dreamy_babbage
[root@centos1 docker]# docker container logs 72a505f59d55
hello world
hello world
hello world
hello world
......

3. 停止

可以使用 docker container stop 来终止一个运行中的容器。

此外,当 Docker 容器中指定的应用终结时,容器也自动终止。

例如对于上一章节中只启动了一个终端的容器,用户通过 exit 命令或 Ctrl+d 来退出终端时,所创建的容器立刻终止。

终止状态的容器可以用 docker container ls -a 命令看到。

处于终止状态的容器,可以通过 docker container start 命令来重新启动。

此外,docker container restart 命令会将一个运行态的容器终止,然后再重新启动它。

4. 进入容器

在使用 -d 参数时,容器启动后会进入后台。

某些时候需要进入容器进行操作,可以使用 docker attach 命令或 docker exec 命令,推荐使用 docker exec 命令.

(1) docker attach
[root@centos1 docker]# docker run -dit ubuntu
402097bb4e4e10bedb99164f3380acf8dff34171433441ec8ed1a28ed8f2161b
[root@centos1 docker]# docker attach 4020
root@402097bb4e4e:/# pwd
/
root@402097bb4e4e:/# exit
exit

【注释】docker attach进入容器后,如果stdin 中 执行exit,会导致容器的停止。

(2)docker exec

[root@centos1 docker]# docker run -dit ubuntu
2ee70fd1d026abb711046bd56c79b543cc7ce50fe56e7fb52129d4da7b6466e5
[root@centos1 docker]# 
[root@centos1 docker]# docker exec -it 2ee7 bash
root@2ee70fd1d026:/# exit
exit

如果从这个 stdin 中 exit,不会导致容器的停止。这就是为什么推荐使用 docker exec

5. 容器的导入导出

[root@centos1 docker]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2ee70fd1d026 ubuntu "/bin/bash" 3 minutes ago Up 3 minutes brave_archimedes

(1)导出

[root@centos1 docker]# docker export 2ee70fd1d026 > ubuntu.tar
[root@centos1 docker]# ls -lrt ubuntu.tar
-rw-r--r--. 1 root root 72308736 Apr 29 13:48 ubuntu.tar

可以使用 docker import 从容器快照文件中再导入为镜像:

(2)导入

[root@centos1 docker]# cat ubuntu.tar | docker import - shushenlw/ubuntu:Vexport
sha256:7cf78e934044c5bdddd35a6a3f8f46ba86b8717d2d5a6e74a888da64edbe49fc
[root@centos1 docker]# 
[root@centos1 docker]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
shushenlw/ubuntu Vexport 7cf78e934044 3 seconds ago 69.8MB
[root@centos1 docker]# docker run -it shushenlw/ubuntu:Vexport bash
root@13c6a7b16129:/# pwd
/
root@13c6a7b16129:/# exit
exit

此外,也可以通过指定 URL 或者某个目录来导入。

6. 删除容器

可以使用 docker container rm 来删除一个处于终止状态的容器。

如果要删除一个运行中的容器,可以添加 -f 参数。Docker 会发送 SIGKILL 信号给容器。

用 docker container ls -a 命令可以查看所有已经创建的包括终止状态的容器,如果数量太多要一个个删除可能会很麻烦,docker container prune可以清理掉所有处于终止状态的容器。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言