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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 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


相关文章
|
4天前
|
关系型数据库 MySQL API
|
5天前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
4天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
142 28
|
6天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
64 2
|
7天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
35 1
|
8天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
17 1
|
8天前
|
Docker 容器
docker 修改容器内的系统时间
【10月更文挑战第27天】docker 修改容器内的系统时间
150 2
|
9天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
5天前
|
Docker 容器
docker 容器重启
【10月更文挑战第30天】docker 容器重启
10 0
|
3月前
|
存储 安全 Ubuntu
Docker 镜像与 Docker 容器的区别
【8月更文挑战第27天】
273 5
下一篇
无影云桌面