docker容器的基本操作

一、查看Docker的版本信息

[root@huyang1 ~]# docker version

二、查看docker的详细信息

[root@huyang1 ~]# docker info

三、Docker镜像操作

Docker创建容器前需要本地存在对应的镜像,如果本地加载不到相关镜像,Docker默认就会尝试从镜像仓库https://hub.docker.com下载,这是由Docker官方维护的一个公共仓库,可以满足用户的绝大部分需求,用户也可以通过配置来使用自定义的镜像仓库。

命令格式:docker search 关键字

参数:

--automated=false 仅显示自动创建的镜像

--no-trunc=false 输出信息不截断显示

-s, --stars=0指定仅显示评价为指定星级以上的镜像

[root@huyang1 ~]# docker search nginx

[root@huyang1 ~]# docker search -s 100 nginx //搜索星级为100以上的镜像

回显信息中都是包含nginx关键字的镜像、

其中返回信息包括:

镜像名称(NAME)、

描述(DESCRIPTION)、

星级(STARS)、

是否官方创建(OFFICIAL)、

是否主动创建(AUTOMATED)

默认的输出结果会根据星级评价进行排序,表示该镜像的受欢迎度,在下载镜像时,可以参考这一项,在搜索时还可以使用-s或者--stars=x显示指定星级以上的镜像,x为任意数。星级越高表示越受欢迎: 是否为官方镜像一项是指是否是由官方项目组创建和维护的镜像,

一般官方项目组维护的镜像使用单个单词作为镜像名称。我们称为基础镜像或者根镜像。

像jwilder/nginx-proxy这种命名方式的镜像,表示是由Docker Hub的用户jwilder创建并维护的镜像,带有用户名为前缀: 是否主动创建资源则是指是否允许用户验证镜像的来源和内容。

使用docker search命令只能查找镜像,镜像的标签无法查找,因此如果需要查找docker标签,需要从网页上访问镜像仓库https://hub.docker.com进行查找

2、获取镜像

搜索到符合需求的镜像,可以使用docker pull 命令从网络下载镜像到本地使用。

命令格式:docker pull 镜像名称[:标签]

对于Docker镜像来说,如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为latest,也可以通过指定的标签来下载特定版本的某一镜像。

这里标签就是用来区分镜像版本的。

[root@huyang1 ~]# docker pull nginx

[root@huyang1 ~]# docker pull centos

从整个下载的过程可以看出,镜像文件是由若干层(Layer)组成,我们称为AUFS(联合文件系统),是实现增量保存于更新的基础,下载过程中会输出镜像的各层信息。镜像下载到本地之后就可以随时使用该镜像了。

用户也可以选择从其他注册服务器仓库下载,这时需要在仓库名称前指定完整的仓库注册服务器地址。

3、查看镜像信息

使用docker images命令查看下载到本地的所有镜像。

命令格式:docker images 仓库名称[:标签]

复制代码
[root@huyang1 ~]# docker images

[root@huyang1 ~]# docker images nginx

从回显的信息:

REPOSITORY 镜像所属仓库

TAG 镜像的标签信息

IMAGE ID 镜像的唯一ID

CREATED 镜像创建时间

SIZE 镜像大小

4、获取镜像的详细信息

命令格式:docker inspect 镜像名或镜像ID

[root@huyang1 ~]# docker inspect nginx

镜像的详细信息中包括创建时间、系统版本、主机名、域名、用户、卷、标签、操作系统、设备ID等各种信息。

5、为镜像添加新的标签

命令格式:docker tag 名称[:标签] 新名称[:新标签]

复制代码
[root@huyang1 ~]# docker tag nginx nginx:test

[root@huyang1 ~]# docker images

6、删除镜像

使用docker rmi 命令可以删除多余的镜像。

删除镜像的操作有两种方法:使用镜像的标签删除镜像;使用镜像的ID删除镜像。

命令格式:

docker rmi 镜像名称[:标签]

docker rmi 镜像ID

例:

[root@huyang1 ~]# docker rmi nginx:test

当一个镜像有多个标签的时候, docker rmi命令只是删除该镜像多个标签中的指定标签,不会影响镜像文件,相当于只是删除了镜像的一个标签而已,但该镜像只剩下一个标签的时候就要小心了,再使用删除命令就会彻底删除该镜像。

docker rmi 镜像ID

例:

[root@huyang1 ~]# docker rmi 60

当使用docker rmi命令后面跟上镜像的ID号时,必须确保该镜像没有被容器使用才能进行,删除时系统会先删除掉所有指向该镜像的标签,然后删除该镜像文件本身。如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。

7、存出镜像和载入镜像

当需要把一台机器上的镜像迁移到另一台机器上的时候,需要将镜像保存成本地文件,这一个过程叫做存出镜像,可以使用docker save命令进行存出操作。之后就可以复制该文件到其他机器。

命令格式:docker save -o 存出镜像为本地文件 镜像名

例:

复制代码
[root@huyang1 ~]# docker save -o nginx-images nginx

[root@huyang1 ~]# ls -l nginx-images 

将存出的镜像从A 机器拷贝到B 机器,需要在B 机器上使用该镜像,就可以将该导出文件导入到B 机器的本地镜像列表中,这一过程叫做载入镜像。使用docker load 或者docker load --input 进行载入操作。

命令格式:docker load < 存出的文件或者docker load --input 存出的文件

例如,从文件dhcp中载入镜像到本地镜像库中:

[root@huyang1 ~]# docker load < nginx-images

[root@huyang1 ~]# docker load --input nginx-images

8、上传镜像

本地存储的镜像越来越多,就需要指定一个专门存放这些镜像的地方也就是仓库了。目前比较方便的就是公共仓库,默认上传到Docker Hub 官方仓库,需要注册使用公共仓库的账号,可以使用docker login 命令来输入用户名、密码和邮箱来完成注册和登录。在上传镜像之前,需要对本地镜像添加新的标签,然后再使用docker push 命令进行上传。

命令格式:docker push 仓库名称:标签

例如:

在公共仓库上已经注册成功了一个账号,这个账号叫做crushlinux和对应密码,新增镜像的标签为192.168.200.111:5000/nginx:test。

复制代码
[root@huyang1 ~]# docker login hub.docker.com

Username: crushlinux

Password: 对应密码

login Succeeded


成功登陆后就可以上传镜像

[root@huyang1 ~]# docker tag nginx

192.168.200.111:5000/nginx:test

[root@huyang1 ~]# docker push

192.168.200.111:5000/nginx:test

上传本地镜像:

[root@huyang1 ~]# docker load < nginx.tar

[root@huyang1 ~]# docker images

****注意:****可以发现,此时的nginx的ID号不同

四、Docker 容器操作

容器是Docker 的另一个核心概念,简单说,容器是镜像的一个运行实例,是独立运行的一个或一 组应用以及它们所必需的运行环境,包括文件系统系统类库shell 环境等。

镜像是只读模板,而容器会给这个只读模板一个额外的可写层。

下面将具体介绍围绕容器的具体操作:

1、创建容器与运行容器

Docker 的创建就是将镜像加载到容器的过程,Docker 的容器十分轻量级,用户可以随时创建或者删除。

****新创建的容器默认处于停止状态,****不运行任何程序,需要在其中发起一个进程来启动容器,这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全停止。停止的容器可以重新启动并保留原来的修改。

可以使用docker create 命令新建一个容器。

命令格式:docker create [选项]... 镜像运行的程序

常用选项:

-i 让容器的输入保持打开

-t 让Docker 分配一个伪终端

-d 守护进程形式运行

例:

root@huyang1 \~\]# docker create -it centos /bin/bash ![](https://file.jishuzhan.net/article/1686348795949879297/0a9e9e35c4a74c9cb122b8d809a68d6f.png) ****注意:****如果创建容器命令报错"WARNING: IPv4 forwarding is disabled. Networking will not work. ",就使用vi编辑器打开/etc/sysctl.conf文件,在其中添加net.ipv4.ip_forward=1,然后使用sysctl -p命令加载配置。 [root@huyang1 ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 [root@huyang1 ~]# sysctl -p 使用docker create 命令创建新容器后会返回一个唯一的ID。 可以使用****docker ps**** 命令来查看所有容器的运行状态。添加****-a 选项****可以列出系统中所有容器状态。 ****\[root@huyang1 \~\]# docker ps -a**** ![](https://file.jishuzhan.net/article/1686348795949879297/90f612cb807d400b9969a246cac6770b.png) 输出信息****显示容器的ID 号**** 、****加载的镜像**** 、****运行的程序**** 、****创建时间**** 、****目前所处的状态**** 、****端口映射****。其中状态一栏为空表示当前的容器处于停止状态。 ### ****2、容器的启动与停止**** 启动停止容器可以使用docker start 命令。 > ****命令格式:docker start 容器的ID/名称**** [root@huyang1 ~]# docker start b3ba7fee6e87a25937cfc83b7bec4efeb1e01ee9c2a80fd327ac250f32c3591cf(可以写全称、也可以写缩称,前提是在运行的id没有重复的情况下) ****\[root@huyang1 \~\]# docker ps -a**** ![](https://file.jishuzhan.net/article/1686348795949879297/570c92411bcd4bd7b8992211702c44bf.png) 容器启动后,可以看到容器状态一栏已经变为UP,表示容器已经处于启动状态。如果用户想创建并启动容器,可以直接执行docker run 命令,等同于先执行docker create 命令,再执行docker start 命令。需要注意只要后面的命令运行结束,容器就会停止。 ### ****3、容器的删除**** ****docker start\|stop\|restart\|kill//****运行已停止的容器\|停止一个正在运行的容器\|重启一个容器\|杀死一个正在运行的容器 可以使用****docker rm****命令将一个已经终止状态的容器进行删除。 > ****命令格式:docker rm 容器ID/名称**** 例如,删除ID 号为21f5e00a42e7的容器: ****\[root@huyang1 \~\]# docker rm -f**** ****3ba7fee6e87a25937cfc83b7bec4efeb1e01ee9c2a80fd327ac250f32c3591cf**** ![](https://file.jishuzhan.net/article/1686348795949879297/42827f7aef9f4af29c6017d515a45ad7.png) 如果删除一个正在运行的容器,可以****添加-f****选项强制删除,但是建议先将容器停止再做删除操作。 Docker 默认的存储目录为/var/lib/docker,Docker的镜像、容器、日志等内容全部都存储在此,可以单独使用大容量的分区来存储这些内容,并且一般选择建立LVM 逻辑卷。从而避免Docker 运行过程中存储目录容量不足。

相关推荐
coppher14 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家16 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR16 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆16 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w61001046616 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin9999917 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊18 小时前
Docker 入门之网络基础
网络·docker·php
❀͜͡傀儡师18 小时前
使用 Docker 部署 Neko 自托管虚拟浏览器(Firefox)
docker·容器·firefox
0xDevNull19 小时前
Linux Docker 安装与使用详细教程
linux·运维·docker
工具罗某人19 小时前
docker compose 部署MySQL InnoDB Cluster + Router 高可用集群-亲测可用
mysql·docker·容器