【Docker系列】docker镜像与容器基本操作命令(二)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【Docker系列】docker镜像与容器基本操作命令(二)

2.9导入镜像——docker load

#导入镜像,可以异地导入,但是必须要有docker引擎,并且版本不可以差太多
#格式:docker load < 存出的文件
docker load < nginx_lnmp


2.10批量打包镜像

docker save -o 包名.tar 镜像1 镜像2 镜像3

示例: 批量打包方法


将机器上的所有镜像打包到xiao.tar文件里面


docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o xiao.tar


迁移到其他主机,解压加载镜像:


docker load -i xiao.tar

三、 容器操作

3.1查询所有容器运行状态——docker ps -a

docker ps -a
#选项:
-a :    显示所有的容器,包括未运行的。
-f :    根据条件过滤显示的内容。
--format :  指定返回值的模板文件。
-l :    显示最近创建的容器。
-n :    列出最近创建的n个容器。
--no-trunc :  不截断输出。
-q :    静默模式,只显示容器编号。
-s :    显示总的文件大小。

docker ps -a


CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES


容器的ID号 加载的镜像 运行的程序 创建时间 当前的状态 端口映射 名称


3.2创建容器(基于镜像)——docker create

新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。
#格式:docker create [选项] 镜像
#常用选项:
-i:让容器的输入保持打开
-t:让 Docker 分配一个伪终端
-d:后台守护进程的方式运行
#示例:
docker create -it nginx:latest /bin/bash

3.3启动/停止容器——docker start/stop

#格式:docker start 容器的ID/名称
docker start b2a57b3ea48a
docker ps -a
停止容器
docker stop 容器ID
```![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/3aa4aece3466490698ab86b49902a12d.png)
## 3.4启动容器(一次性执行)—— docker run
```powershell
#加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。
#示例1:
docker run -itd nginx:latest /bin/bash
#示例2:执行后退出
docker run centos:7 /usr/bin/bash -c ls /   
#示例3:执行后不退出,以守护进程方式执行持续性任务
docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"

示例1:






示例2:

示例3:


watch -n 2 docker ps -a

每两秒执行一次docker ps -a



3.5日志、端口、重命名

3.5.1查看容器运行日志

#命令格式:
docker logs [容器id]
#命令效果:
$ docker logs 7c5a24a68f96

3.5.2查看容器端口信息

#命令格式:
docker port [容器id]
#命令效果:
$ docker port 930f29ccdf8a
#没有效果没有和宿主机关联

3.5.3 容器重命名

#作用:
修改容器的名称
#命令格式:
docker rename [容器id]或[容器名称] [容器新名称]
#命令效果:
$ docker rename 930f29ccdf8a u1

3.6查看容器ip地址——docker inspect

#格式:docker inspect 容器id 
docker ps -a   #先查看运行时容器的id
docker inspect e5f97c4ce37f

先查看运行时容器的id


查看容器ip地址





3.7进入容器——docker exec

进入容器的容器状态必须是up状态


exec和shell 是两种运行模式


docker run -it会创建前台进程,但是会在输入exit后终止进程。


docker attach会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止容器进程


docker exec -it 会连接到容器,可以像sSH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行。


#需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。
#格式:docker exec -it 容器ID/名称 /bin/bash
-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端。
#示例:进入(三种方式)
docker run -itd centos:7 /bin/bash  #先运行容器
docker ps -a 
①使用run进入,可以使用ctrl+d退出,直接退出终端
docker run -it centos:7 /bin/bash 
②想永久性进入,退出后还是运行状态,用docker exec
docker ps -a 
docker exec -it b99e0771c4e1  /bin/bash
③docker attach,会通过连接stdin,连接到容器内输入输出流,公在输入exit后终止容器进程(临时性的,不推荐)



①使用run进入,是一次性进入



②永久性进入,用docker exec



扩展:生产方式进入容器

我们生产中常用的进入容器方法是使用脚本,脚本内容如下:

#!/bin/bash
#定义进入仓库函数
docker_in(){
NAME_ID=$1
PID=$(docker inspect --format {{.State.Pid}} $NAME_ID)
nsenter --target $PID --mount --uts --ipc --net --pid
}
docker_in $1


3.8容器导出/导入——docker export/import

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

#导出格式:docker export 容器ID/名称 > 文件名
docker export 4ca1bf9275c4 > nginx_latest
#导入格式:cat 文件名 | docker import – 镜像名称:标签
法①
docker import nginx_latest nginx_v1 #导入后会生成镜像,但不会创建容器
法②
cat nginx_latest |docker import - nginx_v2


导出:




导入:

方法一:

方法二:




3.9删除容器——docker rm -f

#格式:docker rm [-f] 容器ID/名称
1.#不能删除运行状态的容器,只能-f强制删除,或者先停止再删除
docker rm 3224eb044879
2.#已经退出的容器,可以直接删除
docker rm 1270a6791069 
3.#基于名称匹配的方式删除
docker rm -f distracted_panini
4.#删除所有运行状态的容器
docker rm -f `docker ps -q`
5.#删除所有容器
docker rm -f `docker ps -aq`
6.#有选择性的批量删除 (正则匹配)
docker ps -a l awk ' {print "docker rm "$1}'l bash
7.#删除退出状态的容器
for i in `dockef ps -a l grep -i exit / awk '{print $1}' '; do docker rm -f $i;done



不能删除运行状态的容器,只能-f强制删除,或者先停止再删除



已经退出的容器,可以直接删除


扩展:自定义一个容器


docker run -it --name nginx \
-v  /data_nginx/:/usr/local/nginx/conf \
-v  /log_nginx:/usr/local/nginx/logs \
log-driver=json-file \
log-opts  max-size=500m \
log-opts  max-file=3 \
-p 81:80 \
-P 8443:443  \
--network  ky19  \
--ip  172.18.0.10  \
nginx:latest
1
2


3.10容器打包为镜像

docker run -itd --name nginx.01  nginx:latest  /bin/bash
###指定一个容器运行
docker commit 8d0eb4fd2119 nginx-v1beta](https://ucc.alicdn.com/images/user-upload-01/2c2932ee176448459440cf558c26b7e1.png)
### commit 直接提交






3.11查看docker消耗的资源状态

docker stats

四、总结

4.1如果镜像优化?

有效减少镜像大小(dockerfile 优化方向-》对于部分企业而言,是一种升阶面试题)


4.2怎么看当下有多大号容器,怎么看当下所有容器占用的I/O有多少,占用内存多少?

使用docker stats命令查看


4.3容器有哪些状态?

Docker容器可以有四种状态:


运行


已暂停


重新启动


已退出


4.4overlay2由哪几部分组成 ?

LowerDir


MergedDir


UpperDir


WorkDir


相关文章
|
1天前
|
存储 运维 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第18天】 在现代微服务架构中,Docker容器已成为部署和运行应用的标准环境。随之而来的挑战是如何有效监控这些容器的性能与健康状况,确保系统的稳定性和可靠性。本文将探讨构建一个高效稳定的Docker容器监控体系的关键技术和方法,包括日志管理、性能指标收集以及异常检测机制,旨在为运维人员提供实用的指导和建议。
6 0
|
10天前
|
应用服务中间件 Docker 容器
docker 镜像常用命令
docker 镜像常用命令
30 0
|
10天前
|
Linux Docker 容器
docker 容器常用命令
docker 容器常用命令
12 0
|
10天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
14 0
|
10天前
|
存储 Linux Shell
centos 部署docker容器 安装 、基本使用方法(一)
centos 部署docker容器 安装 、基本使用方法(一)
19 0
|
17天前
|
存储 Kubernetes API
Docker拉取镜像或者kubectl出现的这个解决方案x509: certificate signed by unknown authority
Docker拉取镜像或者kubectl出现的这个解决方案x509: certificate signed by unknown authority
48 2
|
6月前
|
存储 Ubuntu Shell
Docker镜像与容器备份迁移(export、import与commit、save、load)
Docker镜像与容器备份迁移(export、import与commit、save、load)
1326 0
|
22天前
|
NoSQL 关系型数据库 MySQL
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
99 1
|
2月前
|
关系型数据库 MySQL Linux
docker镜像与容器的迁移
docker迁移镜像步骤 docker迁移容器步骤 docker迁移mysql容器步骤
|
2月前
|
Java 测试技术 Maven
云效问题之构建docker镜像从容器仓库拉取镜像报错如何解决
云效镜像是指存储在阿里云效服务中的容器镜像,它们可以用于持续集成和持续部署(CI/CD)流程中;本合集将介绍如何在云效平台上管理和使用镜像资源,以及常见的镜像问题和解决办法。
66 0