不会和容器一起启动_一起学习docker05-docker容器

 2023-09-07 阅读 10 评论 0

摘要:一起来学docker系列:一起学docker-可视化管理01-Portainer一起学docker-可视化管理02-Rancher一起学习docker01-docker简介和安装一起学习docker02-Registry私有仓库一起学习docker03-harbor私有仓库搭建一起学习docker04-docker镜像一起学习docker05-docker容器一起学

一起来学docker系列:

一起学docker-可视化管理01-Portainer

一起学docker-可视化管理02-Rancher

一起学习docker01-docker简介和安装

一起学习docker02-Registry私有仓库

一起学习docker03-harbor私有仓库搭建

一起学习docker04-docker镜像

一起学习docker05-docker容器

一起学习docker06-docker网络

一、关于容器

容器是 Docker 又一核心概念。简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。

Docker 利用容器来运行应用。

容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

注意:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。

二、容器的基本操作

要想启动容器,就要先获取镜像

1、搜索镜像

docker search hello

2aa67ae31a4f05ec5daa537463504900.png

2、下载镜像

docker pull docker.io/hello-world

949365f6aff80607d3be56c2c27c651d.png

3、启动容器

docker run docker.io/hello-world

a12942ae63720f93471b0aceebdf66e0.png

4、执行命令

docker run java /bin/echo "hello world"

62bba863976a2b600244e849747e702a.png

这里跟本地执行/bin/echo 'Hello World'一样,执行完就退出了。

使用docker ps -a (这个命令可以查看启动过的所有容器)

30a62cdb1cd87bd3053b9b5c70e99277.png

三、进入容器

1、启动一个bash终端,可以和用户交互

docker run -t -i java /bin/sh

a5d4de565e0c90fd1d4eaf00f88821db.png

其中, -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,

-i 则让容器的标准输入保持打开。

注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)

在交互模式下,用户可以通过所创建的终端来输入命令.

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

a.检查本地是否存在指定的镜像,不存在就从公有仓库下载

b.利用镜像创建并启动一个容器

c.分配一个文件系统,并在只读的镜像层外面挂载一层可读写层

d.从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去

e.从地址池配置一个 ip 地址给容器

f.执行用户指定的应用程序

g.执行完毕后容器被终止

7ea84a7bb9dae9e947387dcea0a3ff3d.png

容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的。除此之外,并没有其它的资源。

可以在伪终端中利用ps或top来查看进程信息。

可见,容器中仅运行了指定的 bash 应用。这种特点使得 Docker 对资源的利用率极高,是货真价实的轻量级虚拟化。

2、docker exec

docker exec -it b2c8b54681c1 /bin/bash

8d344dde17d667832eff45b8d2b5911c.png

3、docker attach 59cefbda83c2但是这个很坑,退出容器就停止了。所以用的也少。

这就是为什么推荐大家使用 docker exec 的原因。

更多参数说明请使用 docker exec --help 命令查看。

四、容器维护

启动容器,上面的docker run可以从镜像启动一个容器(属于新建)

我们启动一个已经存在的、停止的容器

docker start/stop/restart 容器di或容器名

docker start -i 容器id,交互模式进入容器

查看已经停止的容器

docker ps -a

17fc361725fe51d5ebecb83393461d09.png

1、启动容器

docker start 15feb316fa61

0099c482697f9045244018bf599d878b.png

docker ps -a

a701b4030048ab6fb49d4d95b5c9ce53.png

2、停止容器

docker stop 15feb316fa61

3a31c1a6517ee5ca644d20db61bec654.png

3、启动直接进入容器

docker start -i 15feb316fa61

d266e25b306e206d323f0239a0d5c909.png

4、删除容器

docker rm 容器id或容器名

删除一个处于停止状态的容器,如果不是停止状态的,则加-f,就是docker rm -f

docker rm 1a606cbec84e

2bd4cad614d6ae3022a9587bae1715b9.png

删除在启动中的容器

docker rm -f 15feb316fa61

a72c32a3e8b104baaf8532565c29a425.png

自定义容器名

docker run 时,如果没有指定名称,则docker会自己生成一个名称,往往该名称是没什么意义的,可以自定义指明一个。

docker run --name 容器名,容器名是唯一的,如果已存在了,则会启动失败。

docker run --name hello docker.io/hello-world

b9d01dfc137f452750556a1da5d2c02e.png

五、容器的导入导出

1、导入容器快照

docker import myimage.tar import-test/myimage:v1.0

72a075d6340fe69b089ffc97eb085c70.png

2、导出容器快照

docker export f393a847db63 >myimage.tar

a26df45c7e866fa3deee5165910ca833.png

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

$sudo docker import http://example.com/exampleimage.tgz example/imagerepo

*注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来

导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息

(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文

件导入时可以重新指定标签等元数据信息。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/18667.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息