Docker的基本操作

news/2024/11/20 4:16:52/

目录

一、Docker 镜像操作

搜索镜像

获取镜像

镜像加速下载

 查看镜像信息

 查看下载到本地的所有镜像

根据镜像的唯一标识 ID 号,获取镜像详细信息

 为本地的镜像添加新的标签

删除镜像

 存出镜像:将镜像保存成为本地文件

 载入镜像:将镜像文件导入到镜像库中

 上传镜像

 二、Docker 容器操作

容器创建

查看容器的运行状态

 启动容器

创建并启动容器

在后台持续运行 docker run 创建的容器

创建容器并持续运行容器

 终止容器运行

​编辑容器的进入

 复制到容器中

 从容器复制文件到主机

 容器的导出与导入

删除容器


一、Docker 镜像操作

搜索镜像

格式:docker search 关键字

docker search nginx

获取镜像

格式:docker pull 仓库名称[:标签]

如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。

docker pull nginx

镜像加速下载

 浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ae3f5qei.mirror.aliyuncs.com"]
}
EOF

 systemctl daemon-reload
systemctl restart docker

 查看镜像信息

镜像下载后存放在 /var/lib/docker 。

Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,其中 containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。

查看下载的镜像文件信息

cat /var/lib/docker/image/overlay2/repositories.json

 查看下载到本地的所有镜像

docker images

 REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;

根据镜像的唯一标识 ID 号,获取镜像详细信息

格式:docker inspect 镜像ID号

docker inspect af62dd757b58

 为本地的镜像添加新的标签

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

docker tag nginx:latest nginx:web

删除镜像

格式:
docker rmi 仓库名称:标签

或者
docker rmi 镜像ID号

docker rmi nginx:web

 存出镜像:将镜像保存成为本地文件

格式:docker save -o 存储文件名 存储的镜像

docker save -o nginx nginx:latest

ls -lh

 载入镜像:将镜像文件导入到镜像库中

格式:
docker load < 存出的文件

docker load < nginx

 上传镜像

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

docker tag nginx:latest soscscs/nginx:web        #添加新的标签时必须在前面加上自己的dockerhub的username
docker login                                #登录公共仓库
Username:1126026191
password:xxxxxxx
docker push 1126026191/nginx:web

 二、Docker 容器操作

容器创建

就是将镜像加载到容器的过程。

新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。

格式:docker create [选项] 镜像

常用选项:
-i:让容器开启标准输入
-t:让 Docker 分配一个伪终端 tty
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell 

 docker create -it nginx:latest /bin/bash

查看容器的运行状态

docker ps -a

 启动容器

格式:docker start 容器的ID/名称
docker start 4e34d8456484

 

创建并启动容器

可以直接执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令。
注意:容器是一个与其中运行的 shell 命令共存亡的终端,命令运行容器运行, 命令结束容器退出。

docker 容器默认会把容器内部第一个进程,也就是 pid=1 的程序作为docker容器是否正在运行的依据,如果docker容器中 pid = 1 的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。

/var/lib/docker
当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:
(1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
(2)利用镜像创建并启动一个容器;
(3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
(4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
(5)分配一个地址池中的 IP 地址给容器;
(6)执行用户指定的应用程序,执行完毕后容器被终止运行。
 

docker run centos:7 /usr/bin/bash -c ls /

docker ps -a

在后台持续运行 docker run 创建的容器

需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。

docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"

创建容器并持续运行容器

docker run -itd --name test1 centos:7 /bin/bash  

 终止容器运行

格式:docker stop 容器的ID/名称
docker stop bc3369cc2372

容器的进入

需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。
格式:docker exec -it 容器ID/名称 /bin/bash
-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端。

docker start 8ad2ea55691

docker exec -it 8ad2ea55691/bin/bash

docker run -it centos:7 bash      #不加 -d 选项会创建容器后直接进入容器,但是退出容器,容器也会停止

 复制到容器中

echo abc123 > ~/test.txt
docker cp ~/test.txt 8ad82ea55691:/opt/

 从容器复制文件到主机

docker cp 8ad82ea55691:/opt/test.txt ~/abc123.txt

 容器的导出与导入

用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。

导出格式:docker export 容器ID/名称 > 文件名

docker export 8ad82ea55691 > centos7.tar

删除容器

格式:docker rm [-f] 容器ID/名称
docker stop 8ad82ea55691 
docker rm 8ad82ea55691 


http://www.ppmy.cn/news/1039157.html

相关文章

服务链路追踪

一、服务链路追踪导论 1.背景 对于一个大型的几十个、几百个微服务构成的微服务架构系统&#xff0c;通常会遇到下面一些问题&#xff0c;比如&#xff1a; 如何串联整个调用链路&#xff0c;快速定位问题&#xff1f;如何理清各个微服务之间的依赖关系&#xff1f;如何进行…

windows下使用ResourceHacker自动更换图标

目前有一个便捷更换程序图标的需求&#xff0c;简单说是不通过鼠标点击&#xff0c;更加便捷的进行操作 这样主要就使用脚本执行命令进行自动更换 开始了解到NirCmd这个工具可以实现&#xff0c;但是一直没有效果 后来使用了ResourceHacker&#xff0c;这个工具&#xff0c;…

C++新经典04--位运算

背景 许多网络游戏为了刺激玩家每天上线&#xff0c;都在游戏中设有“每日任务”——每天让玩家做一些任务&#xff0c;如杀怪、采集来赚取积分、金钱、经验等。每日任务根据游戏不同&#xff0c;数量也不同&#xff0c;每日任务比较少的网络游戏中&#xff0c;可能每日任务只…

内网穿透-外远程连接中的RabbitMQ服务

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

在测试环境进行sqlserver锁表测试

将某表设置X锁1分钟&#xff1a; begin tran select top 1 * from tableName with (tablockx) waitfor delay 00:01:00 commit tran 查询当前被锁的表&#xff1a; --查询锁表的事务ID&#xff0c;被锁表名&#xff0c;锁模式&#xff0c;客户端主机名&#xff0c;客户端程序…

[Leetcode] [Tutorial] 二分查找

文章目录 35. 搜索插入位置Solution 33. 搜索旋转排序数组Solution 153. 寻找旋转排序数组中的最小值Solution 34. 在排序数组中查找元素的第一个和最后一个位置Solution 74. 搜索二维矩阵Solution 35. 搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标…

Nginx常见的三个漏洞

目录 $uri导致的CRLF注入漏洞 两种常见场景 表示uri的三个变量 案例 目录穿越漏洞 案例 Http Header被覆盖的问题 案例 $uri导致的CRLF注入漏洞 两种常见场景 用户访问http://example.com/aabbcc&#xff0c;自动跳转到https://example.com/aabbcc 用户访问http://exa…

在SpringBoot中添加拦截器忽略请求URL当中的指定字符串

1 自定义拦截器 Component public class GlobalInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String path request.getRequestURI();if (pa…