Docker——玩Docker必会的常规操作合集

一、镜像

以nginx为例

  • 搜索镜像:docker search 镜像名称
docker search nginx

在这里插入图片描述

  • 下载镜像:docker pull 镜像名称
docker pull nginx

Docker的镜像下载一般都是使用公有仓库进行下载,也就是在Docker官网下载,因此我们需要进行镜像加速,详情可参考Docker——相关概念及安装方法
在这里插入图片描述
在这里插入图片描述

镜像下载完存放在:/var/lib/docker,下载的文件信息:/var/lib/docker/image/overlay2/repositories.json

  • 查看已有镜像:docker images
docker images

在这里插入图片描述

  • 查看镜像详细信息:docker inspect 镜像ID
docker inspect f6d0b4767a6c

在这里插入图片描述

  • 添加新标签:docker tag 镜像名:标签 镜像名:新标签
    相当于复制了该镜像并且换了个别名
docker tag nginx:latest nginx:web  

在这里插入图片描述

  • 删除镜像:docker rmi 镜像ID

注:一般情况下都是通过指定镜像ID删除镜像,但如果此时镜像有其他标签,就会删除失败;虽然可以指定镜像名来删除,但删除的只是原先下载的镜像,后面添加的别名镜像还在
在这里插入图片描述

想要彻底删除这个镜像只能删除别名镜像再删除原镜像

扫描二维码关注公众号,回复: 12904023 查看本文章

在这里插入图片描述

  • 导出(保存)镜像:docker save -o 相应目录 仓库名:标签
docker save -o /opt/nginx nginx:latest

在这里插入图片描述

  • 导入镜像:

方法1:docker load < 镜像
方法2:docker load --input 镜像
在这里插入图片描述

二、容器

  • 创建容器:docker create -it 仓库名:标签 登录环境
docker create -it nginx:latest /bin/bash
#-i:让容器的标准输入保持打开
#-t:让docker分配一个伪终端
  • 查看容器状态:docker ps -a

在这里插入图片描述

  • 启动容器:docker start 容器id
docker start 62aa15300391

在这里插入图片描述

  • 登陆正在运行的容器

方法一:docker exec -it 容器id 环境
方法二:docker run -it 容器名:标签 环境
在这里插入图片描述

  • 停止容器:docker stop 容器id
docker stop 62aa15300391

在这里插入图片描述
注:容器在停止状态下是无法登录

  • 启动容器并执行命令(执行完自动退出):docker run 镜像 环境 -c 命令(如果没有镜像会自动下载)
docker run centos:7 /bin/bash -c ls /
docker ps -a

在这里插入图片描述
在这里插入图片描述

docker run -d  centos:7 /bin/bash -c "while true;do echo hello;done"
  • 启动容器并执行命令(持续在后台运行)
docker run -d  centos:7 /bin/bash -c "while true;do echo hello;done"

在这里插入图片描述
注:要先停止这个容器才可以删除
在这里插入图片描述

  • 容器导出docker export a1ad151da20e > /opt/centos7

在这里插入图片描述

  • 删除所有未在运行的容器docker container prune

在这里插入图片描述

  • 容器导入(会生成镜像,而不会创建容器)cat /opt/centos7 | docker import - centos7.1

在这里插入图片描述

  • 删除所有未在运行的容器
    docker container prune
    docker ps -a | awk '{print "docker rm "$1}'| bash

在这里插入图片描述
在这里插入图片描述

三、仓库

  • 私有仓库建立
docker pull registry
vim /etc/docker/daemon.json

{
    
    
  "insecure-registries":["192.168.153.50:5000"],     #添加此行
  ... ...
}

systemctl restart docker

在这里插入图片描述
在这里插入图片描述

docker create -it registry /bin/bash

docker ps -a

docker start 6f7497fcc8c2

在这里插入图片描述

#宿主机的/data/registry 自动创建并挂载到容器中的/tmp/registry
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry

#更改标记为192.168.153.50:5000/nginx
docker tag nginx:latest 192.168.153.50:5000/nginx

#上传镜像
docker push 192.168.153.50:5000/nginx

#获取私有仓库列表
curl -XGET http://192.168.153.50:5000/v2/_catalog

#测试私有仓库下载
docker pull 192.168.153.40:5000/nginx

在这里插入图片描述

Docker 数据卷

docker pull centos:7

#宿主机目录/opt/share挂载容器中的/test
docker run -v /opt/share:/test --name web01 -it centos /bin/bash

cd /test/
touch abc.txt
exit

ls /opt/share/     #返回宿主机查看
abc.txt

在这里插入图片描述
此方法可以在不进入容器的情况下进行相关操作

数据卷容器

#数据卷容器
docker run --name web02 -v /test01 -v /test02 -it centos:7 /bin/bash        
#新容器挂载数据卷容器web02
docker run -it --volumes-from web02 --name web01 centos:7 /bin/bash

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数据卷与数据卷容器的区别在于:数据卷是挂载在宿主机上的,宿主机挂载目录上相关操作会同步到容器中;而数据卷容器是通过–volumes-from实现容器与容器之间的挂载

端口映射

docker run -d -P nginx             #-P随机端口
docker run -d -p 42515:80 nginx    #-p指定端口)

docker ps -a

在这里插入图片描述
在这里插入图片描述

docker run -itd -P --name web11 centos:7 /bin/bash      #创建并运行容器取名web11,端口号自动映射
docker run -itd -P --name web22 --link web11:web00 centos:7 /bin/bash     #创建并运行容器取名web22,链接到web11和其通信进web22容器 ping web11
##--link name:alias                  --link容器名:别名

在这里插入图片描述
因为web11的地址映射到了web22的/etc/hosts里,所以这里才可以ping通

猜你喜欢

转载自blog.csdn.net/weixin_51613313/article/details/115125075
今日推荐