【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


相关文章
|
6天前
|
Ubuntu NoSQL 开发工具
《docker基础篇:4.Docker镜像》包括是什么、分层的镜像、UnionFS(联合文件系统)、docker镜像的加载原理、为什么docker镜像要采用这种分层结构呢、docker镜像commit
《docker基础篇:4.Docker镜像》包括是什么、分层的镜像、UnionFS(联合文件系统)、docker镜像的加载原理、为什么docker镜像要采用这种分层结构呢、docker镜像commit
120 70
|
28天前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
159 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
5天前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
53 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
8天前
|
Ubuntu NoSQL 关系型数据库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
70 29
|
15天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
21天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
108 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
5天前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
46 10
|
27天前
|
NoSQL PHP MongoDB
docker push推送自己搭建的镜像
本文详细介绍了如何搭建和复盘两个Web安全挑战环境:人力资源管理系统和邮件管理系统。首先,通过Docker搭建MongoDB和PHP环境,模拟人力资源管理系统的漏洞,包括nosql注入和文件写入等。接着,复盘了如何利用这些漏洞获取flag。邮件管理系统部分,通过目录遍历、文件恢复和字符串比较等技术,逐步绕过验证并最终获取flag。文章提供了详细的步骤和代码示例,适合安全研究人员学习和实践。
48 3
docker push推送自己搭建的镜像
|
27天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
50 3
实战~如何组织一个多容器项目docker-compose
|
1月前
|
Docker 容器