Docker--r镜像、容器相关操作

  • 一、镜像操作
    • 1.搜索镜像
    • 2.下载镜像
    • 3.镜像打标签
    • 4.查看镜像信息
    • 5.删除镜像
    • 6.运行镜像
    • 7.镜像的导出、导入
  • 二、容器操作
    • 1.查看所有容器(包括非启动状态的容器)
    • 2.删除容器
    • 3.启动运行容器
      • 1. 使容器开启并持续性运行
      • 2. 启动一次性运行容器
      • 3.容器的开启、关闭
      • 4. 持续后台运行
    • 4.进入/退出容器
      • 1.进入容器
        • run
        • exec
      • 注意点:
      • 2. 退出容器
    • 5.容器导出、导入

一、镜像操作

1.搜索镜像

docker search 镜像名称
docker search 镜像名称:标签名称

2.下载镜像

docker pull 镜像名称
[root@localhost docker]# docker pull nginx
Using default tag: latest   //如果下载时不指定标签,会默认下载最新的镜像,latest表示最新
latest: Pulling from library/nginx
a330b6cecb98: Pull complete
5ef80e6f29b5: Pull complete
f699b0db74e3: Pull complete
0f701a34c55e: Pull complete
3229dce7b89c: Pull complete
ddb78cb2d047: Pull complete
Digest: sha256:a05b0cdd4fc1be3b224ba9662ebdf98fe44c09c0c9215b45f84344c12867002e
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

3.镜像打标签

docker tag 镜像名称:旧标签名 镜像名称:新标签名
[root@localhost docker]# docker images  //查看镜像列表
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    822b7ec2aaf2   32 hours ago   133MB
[root@localhost docker]# docker tag nginx:latest nginx:lnmp
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    822b7ec2aaf2   32 hours ago   133MB
nginx        lnmp      822b7ec2aaf2   32 hours ago   133MB

4.查看镜像信息

docker inspect 镜像id
docker images -q    //查询镜像过滤IDq:代表过滤;只过滤容器ID
[root@localhost docker]# docker inspect 822b7ec2aaf2

[root@localhost docker]# docker images -q
822b7ec2aaf2
822b7ec2aaf2

5.删除镜像

docker rm  **    //删除容器ID
docker rmi 镜像ID (或者 镜像名称:标签名)rm i:rm image  //删除镜像
[root@localhost docker]# docker rmi 822b7ec2aaf2
Error response from daemon: conflict: unable to delete 822b7ec2aaf2 (must be forced) - image is referenced in multiple repositories
//如果想要删除该镜像,使用docker rmi 镜像名称:标签名 的方式一个一个的删除
[root@localhost docker]# docker rmi nginx:latest
Untagged: nginx:latest  //直到没有引用了,才会删除
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        lnmp      822b7ec2aaf2   33 hours ago   133MB
docker rmi nginx:lnmp        //删除nginx的lnmp标签
[root@localhost docker]# docker rmi nginx:lnmp
Untagged: nginx:lnmp
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    822b7ec2aaf2   33 hours ago   133MB

6.运行镜像

docker run 镜像名
[root@docker ~]# docker run nginx //一次性运行镜像,在执行run操作的时候,如果没有该镜像,会先下载,在start该镜像
Unable to find image 'nginx:latest' locally //在本地没有发现nginx的镜像
latest: Pulling from library/nginx //没有找到镜像,就去公共仓库下载镜像
a330b6cecb98: Pull complete
......
2021/09/03 08:52:57 [notice] 1#1: exit //这里执行的是 CTRL+C[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    822b7ec2aaf2   33 hours ago   133MB
nginx        lnmp      822b7ec2aaf2   33 hours ago   133MB

7.镜像的导出、导入

docker save -o 文件名镜像名    //导出到本地
docker load < 文件名镜像名 //导入镜像

导出

[root@localhost docker]# docker save -o nginx:latest nginx:latest
[root@localhost docker]# ls
daemon.json  key.json  nginx:latest

导入

[root@localhost docker]# docker load < nginx\:latest
Loaded image: nginx:latest

使用场景,有的生产环境,企业不直接使用docker 私有仓库,而是存放在一个ftp服务器中,按需上传下载。
scp hello-world root@192.168.35.10:/opt ##传到其他docker的内容

二、容器操作

1.查看所有容器(包括非启动状态的容器)

docker ps -a     //显示所有的容器,包括未运行的a:all;全部
docker ps -aq       //查询容器的idq:代表过滤;只过滤容器ID
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
de9a0588ca0b   822b7ec2aaf2   "/docker-entrypoint.…"   23 minutes ago   Exited (0) 21 minutes ago             quizzical_volhard
2ee799de4e0c   nginx          "/docker-entrypoint.…"   24 minutes ago   Exited (0) 23 minutes ago             admiring_germain
9cc37e301d66   nginx          "/docker-entrypoint.…"   26 minutes ago   Exited (0) 25 minutes ago             sharp_ritchie

2.删除容器

docker rm 容器ID       ##删除容器
docker rm -f 容器ID       ##强制删除容器(正在运行的容器)
docker ps -a | awk '{print "docker rm " $1'} | bash     ##批量删除容器(正则匹配);$1:是容器的id
for i in `docker ps -a | grep -i exit | awk '{print$1}'`; do docker rm -f $i;done   ##批量删除"exit"状态(指定状态)的容器
docker rm -f `docker ps -q`       ##强制批量删除非up状态的容器;不建议使用,若需要删除删选出id进行删除
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                       PORTS     NAMES
177891c75c4b   nginx:latest   "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes                 80/tcp    eager_tharp
075c017bdb40   nginx:latest   "/docker-entrypoint.…"   4 minutes ago   Exited (127) 4 minutes ago             loving_lewin[root@localhost ~]# docker rm 075c017bdb40
075c017bdb40

强制删除

[root@localhost ~]# docker rm -f 177891c75c4b
177891c75c4b

3.启动运行容器

1. 使容器开启并持续性运行

创建容器docker create -it nginx:latest /bin/bash-i:让容器的标准输入保持打开-t:分配一个伪终端-d:后台守护进程的方式运行
启动容器docker start 容器id
[root@localhost docker]# docker create -it nginx:latest /bin/bash
b2ebf19d65ac6562fdefa67c68fbce0f2f9f5832e7c337dccd3836cf06443b84
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
b2ebf19d65ac   nginx:latest   "/docker-entrypoint.…"   24 seconds ago   Created(创建状态)                               eloquent_mccarthy
[root@localhost docker]# docker start b2ebf19d65ac //启动镜像
b2ebf19d65ac
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
b2ebf19d65ac   nginx:latest   "/docker-entrypoint.…"   2 minutes ago    Up 15 seconds               80/tcp    eloquent_mccarthy

2. 启动一次性运行容器

持续性运行浪费资源,那么一次性执行如下操作:

docker run centos:7 /usr/bin/bash -c ls /-c:传递命令参数
[root@localhost docker]# docker run centos:7 /usr/bin/bash -c ls /
Unable to find image 'centos:7' locally
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7
anaconda-post.log
bin
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
ac0d0db77d6b   centos:7       "/usr/bin/bash -c ls…"   42 seconds ago   Exited (0) 41 seconds ago             frosty_darwin

3.容器的开启、关闭

docker start 容器id
docker stop 容器id

4. 持续后台运行

docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello; done"   ##后台运行centos:7的容器while true;do echo hello; done:代表给予一个死循环
[root@localhost docker]# docker run -d centos:7 /usr/bin/bash -c "while turn;do echo hello; done"
c7858bb06fa80ecf09b820c20c971820f1ec68a90d40b0cb54376061f1bb0e43
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
c7858bb06fa8   centos:7       "/usr/bin/bash -c 'w…"   29 seconds ago   Exited (0) 28 seconds ago             tender_zhukovsky
ac0d0db77d6b   centos:7       "/usr/bin/bash -c ls…"   2 minutes ago    Exited (0) 2 minutes ago              frosty_darwin

4.进入/退出容器

1.进入容器

run

docker run -it centos:7 /bin/bash

进入容器没有systemctl
命令解决:添加–privileged=true;指定此容器是否为特权容器,使用此参数,则不能用attach

[root@localhost docker]# docker run -it centos:7 /bin/bash
[root@1b89f40baa26 /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
[root@1b89f40baa26 /]# exit
exit
[root@localhost docker]# docker ps -a  //查询容器是否开启
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS                        PORTS     NAMES
1b89f40baa26   centos:7       "/bin/bash"              About a minute ago   Exited (127) 20 seconds ago             goofy_joliot
c7858bb06fa8   centos:7       "/usr/bin/bash -c 'w…"   9 minutes ago        Exited (0) 9 minutes ago                tender_zhukovsky
ac0d0db77d6b   centos:7       "/usr/bin/bash -c ls…"   11 minutes ago       Exited (0) 11 minutes ago               frosty_darwin

exec

docker exec -it 容器ID /bin/bash       //进入容器(容器必须是运行状态)
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                       PORTS     NAMES
837a4c69cd81   centos:7       "/bin/bash"              21 seconds ago   Up 20 seconds                          heuristic_almeida
[root@localhost ~]# docker exec -it 837a4c69cd81 /bin/bash
[root@837a4c69cd81 /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
[root@837a4c69cd81 /]# yum -y install httpd        //随便安装一个服务
[root@6acc38b198d6 /]# systemctl start httpd
[root@837a4c69cd81 /]# systemctl status httpd      //使用systemctl命令查询服务
● httpd.service - The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: dActive: active (running) since Sun 2021-09-05 02:43:18 UTC; 2s agoDocs: man:httpd(8)man:apachectl(8)Main PID: 175 (httpd)Status: "Processing requests..."CGroup: /docker/6acc38b198d60a8e841ab6dd25eeca9c422fe5ce811f9984fb5d1a2e3ca5b239/├─175 /usr/sbin/httpd -DFOREGROUND├─176 /usr/sbin/httpd -DFOREGROUND├─177 /usr/sbin/httpd -DFOREGROUND├─178 /usr/sbin/httpd -DFOREGROUND├─179 /usr/sbin/httpd -DFOREGROUND└─180 /usr/sbin/httpd -DFOREGROUND? 175 /usr/sbin/httpd -DFOREGROUNDSep 05 02:43:18 6acc38b198d6 systemd[1]: Starting The Apache HTTP Server...
Sep 05 02:43:18 6acc38b198d6 httpd[175]: AH00558: httpd: Could not reliably determin
Sep 05 02:43:18 6acc38b198d6 systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

注意点:

在进入centos容器时,systemctl命令用不了。
使用 systemctl start 启动某个服务可能会出现如下错误 :
Failed to get D-Bus connection: Operation not permitted
需要给容器提权添加 --privileged=true参数,并将 cmd 或者 entrypoint 设置为 /usr/sbin/init

[root@localhost ~]# docker run -itd --name centos7-v3 --privileged=true centos:7 /sbin/init
6acc38b198d60a8e841ab6dd25eeca9c422fe5ce811f9984fb5d1a2e3ca5b239

弄好之后进入centos容器就可以使用systemctl命令操作了

2. 退出容器

ctrl+d 或者 exit

5.容器导出、导入

容器导出

docker export 容器ID >文件名
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                        PORTS     NAMES
e1965c614d66   centos:7       "/bin/bash"              2 minutes ago   Exited (0) 2 minutes ago                compassionate_maxwell
6acc38b198d6   centos:7       "/sbin/init"             3 hours ago     Exited (137) 5 minutes ago              centos7-v3
[root@localhost docker]# docker export e1965c614d66 > centos7
[root@localhost docker]# ls
centos7  daemon.json  key.json

容器导入
容器导入(生成镜像)2种方式

docker import 导出的文件名(容器) 指定镜像名称(打上标签)
[root@localhost docker]# docker import centos7 centos7:new
sha256:c18a7e8988bf2ecdc22702f4381a623f324672c468db112da9fe16a238e89b63
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos7      new       c18a7e8988bf   32 seconds ago   204MB
php          latest    1ecee270c294   37 hours ago     480MB
nginx        latest    822b7ec2aaf2   47 hours ago     133MB
centos       7         8652b9f0cb4c   9 months ago     204MB
cat 文件名(容器) | docker import - hello-world:latest
[root@localhost ~]# cat ng | docker import - nginx1:new
sha256:826ee37d5806c05de24d45f2410941ce74fc3c04007d4006b431d40d30a9724a
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx1       new       826ee37d5806   10 seconds ago   132MB

Docker--镜像、容器相关操作相关推荐

  1. 二、docker 镜像容器常用操作(让我们用docker 溜得飞起)

    文章目录 前言 基本概念 镜像的使用 下载镜像 查询镜像 删除镜像 容器的使用 创建和启动 终止容器 查看容器 重启容器 删除容器 番外 前言 上篇讲了我们如何安装docker,现在该我们一展拳脚的时 ...

  2. docker 删除所有未启动的容器_Docker 镜像容器常用操作(让我们用 docker 溜得飞起)...

    推荐阅读: 面试字节跳动三轮凉凉,内推4面终拿下抖音offer(Java后台研发)​zhuanlan.zhihu.com 一线架构师Spring boot 学习笔记:我的成长全记在这份PDF文档里​z ...

  3. docker镜像容器的创建删除

    目录 1. Docker是什么? 2. CentOS7用阿里云Docker Yum源在线安装Docker 3. 镜像 3.1 配置加速器 3.2 搜索镜像 3.3 下载镜像 3.4 查看宿主机上的镜像 ...

  4. docker镜像容器创建和保存

    docker镜像容器创建和保存 第一步 创建: 创建容器(此处名为wwy/cuda8:v1.0) 以容器可后台运行方式进入容器 第二步 保存: 开启新的终端 第三步 查看: (前提:ubuntu系统, ...

  5. Docker学习--Docker镜像的管理操作

    一.获取镜像 docker pull [IMAGE_NAME]:[TAG] [IMAGE_NAME]表示的是镜像的名称,[TAG]表示的是镜像的标签,也就是说我们需要通过"镜像名+标签&qu ...

  6. 第一章 docker 镜像,容器,仓库基本命令(二)

    仓库(repository)是镜像存放的地方,目前官方维护了一个公共仓库 https://hub.docker.com; 具体的操作自行百度, 这里我们讨论如何搭建私有仓库 1.拉取仓库 $ dock ...

  7. 【云原生Docker篇】Docker的容器管理操作

    1.创建容器 容器创建:就是将镜像加载到容器的过程. 创建容器时如果没有指定容器名称,系统会自动创建一个名称. 新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器. doc ...

  8. docker镜像/容器的基本命令

    ** Docker学习 ** docker常用命令 dockers version // 查看docker的版本*** docker info // 显示docker的系统信息,包括镜像和容器的数量* ...

  9. docker 镜像容器导入导出、查看日志、拷贝文件命令

    1. 本地文件拷贝到docker 容器中,参考 docker cp /root/pcl-pcl-1.8.1.tar.gz 7ff95b333e12:/docker cp /root/lib64_a 7 ...

最新文章

  1. Curator selector
  2. getAttribute方法在IE6/7下获取href/src属性值的问题
  3. echarts柱状图间距调整_Excel每天学个统计图(1)-折线柱状图
  4. 交换两个局部变量Integer的值
  5. 【Codeforces - 769D】k-Interesting Pairs Of Integers(暴力,统计,思维,数学,异或)
  6. Resharper进阶一
  7. (81)Vivado实现约束过程
  8. 程序员的量化交易之路(17)--Cointrader之Temporal实体(5)
  9. Informix数据库安装配置
  10. Mysql insert without auto-increase when duplicate
  11. 【Matlab】矩阵
  12. 文王八卦圖와 易經組織
  13. Mahalanobis(马哈拉诺比斯)距离
  14. python爬虫豆瓣电影按电影类型_Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题...
  15. ips入侵防御系统部署
  16. mysql创建表报错1055的原因_[Err] 1055
  17. Neo4j 学习笔记 1:属性图
  18. Windows 10 Insider Preview 预览版本19603发布
  19. 柔性电子 --基于碳纳米管的柔性压力传感器
  20. typora 分割线_最全Typora语法大全(含详细数学表达式及流程图)

热门文章

  1. java深入探究07-jsp
  2. 手机服务器响应出错 错误码500,jmeter响应代码:500响应消息:内部服务器错误响应标头:...
  3. php 检测字符串是否为字母和数字组合
  4. Codeforces - Choosing The Commander
  5. 华为OD-机试(三道)
  6. cmd 设置 路由 route
  7. haskell-win10安装配置
  8. 招银网络科技 面试记
  9. PaddleClas套件——PP-ShiTuV2模型详解
  10. AC3 overview