Docker快速笔记(快速回忆、学习、常用命令查找)

本文是Docker快速回忆笔记,涵盖了Docker的基础概念如镜像、容器和仓库,以及常用命令,包括启动/停止容器、查看容器状态、进入容器、持久化修改、导出/导入镜像、删除容器/镜像、挂载数据卷等。还介绍了数据卷的两种挂载方式及其区别。最后分享了实用的Docker学习资源。
摘要由CSDN通过智能技术生成

Docker快速回忆笔记

Docker是一个很好用的工具,许多程序员把docker看成是高大上的工具,是不对的。作为一个程序员有必要牢牢学会Docker的基本用法,就像是如何使用doc一样信手念来。

Docker 久了不用了,经常会把一些基础的概念,基本的命令忘记。之前写过一篇Docker常用的命令,仅记录一些命令,本文提供了一些案例及问题,了让各位小伙伴快速唤起docker的记忆而写的。

Docker的基本概念

1.Docker 包括三个基本概念:
  • 镜像(Image):Docker 镜像(Image),就相当于是一个打包好的系统(想想我们过去常用的系统光盘ISO镜像)

  • 容器(Container):容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。画重点:Docker 容器通过 Docker 镜像来创建

  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

2.docker概念一览表
No.概念名解释
Docker镜像(Images)镜像是一个打包好的文件系统,是容器的模板
Docker容器(Container)容器是一个运行的应用,是镜像的运行实体
Docker客户端(Client)客户端用来与主机进行交互通讯,通过用户通过客户端输入命令,下达到Docker主机
Docker主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker仓库(Docker Registry)存储docker镜像的地方
Docker机器(Docker Machine)

Docker的一些重要工具及地址

Docker常见疑问快速回忆处理

0.常用的容器命令
  1. 启/停容器
# 中央镜像库中拉去镜像
docker pull training/webapp

# 通过一个镜像后台启动一个容器,并设置随机映射端口
docker run -d -P training/webapp python app.py
# -P(大写P)为内部端口号随机映射到主机的端口号
# -p 5000:5001 使用小写,可定义端口映射 5000为主机端口,5001为容器端口

# 启动/停止/重启镜像/删除
docker <start|stop|restart|rm> <containerName|Id> 
  1. 常用的状态查看命令
# 查看所有运行中的容器
docker ps

# 查看所有本地镜像
docker images

# 查看某个容器的状态
docker inspect <containerName|Id>

# 查看某个容器内部的运行进程
docker top <containerName|Id>

# 查看某个容器的日志
docker logs -f <containerName|Id>

# 在中央库中查找一个镜像
docker search <keyword>
1.如何通过镜像启动容器
docker run -d <imageName:tag>

-d为后台运行,执行完命令后,不会停止容器,会继续挂着(可通过docker exec 进入容器内部),一般情况下,命令执行完后,会立即关掉容器

2.如何查看本地拥有的镜像列表及所有容器列表
# 查看本地的镜像列表
docker images

# 查看容器列表
docker ps # 查看当前运行中的容器
docker ps -a # 查看当前所有容器,过去启动过的已停止的,也会列出来

docker ps -a 可以查看所有的容器,所有通过 docker run 命令启动的都会列出来

3.如何进入一个容器的内部交互终端
docker exec -it <containerId|containerName> /bin/bash

注意容器未启动则,docker exec 命令无法使用
其实docker exec 本质是指定一个容器,执行该容器下的某个命令,要想进入该容器,我们需要执行/bin/bash ,所以上面命令可以进入到容器内部;当然也可以通过该命令执行容器内部的其他命令

4.修改了一个容器内部系统的文件,如何持久化对容器的修改(生成一个新docker Image)

我们知道一个容器是经常删除的,是不稳定的,因此,如何持久化容器中的修改内容呢?

  • 方法一: 使用docker export命令将容器导出为*.tar容器快照
docker export <containerName|Id> > <newName>.tar 
# docker export 1e560fca3906 > myUbuntu.tar

导出人myUbuntu.tar 快照包,可以通过docker import命令重新导入为docker 镜像 (注意,是dokcer镜像),在本地的images镜像库,可通过docker images命令查看

通过如下命令可将容器快照导入为docker镜像

# 导入tar为docker images
cat ./myUbuntu.tar | docker import - myImages/ubuntu:v1

# 当然,也可以直接指定快照*.tar的目录,甚至是URL都可以直接导入
docker import http://example.com/exampleimage.tgz myImages/testImages:v2
  • 方法二: 使用docker commit创建一个新镜像版本
    可以直接将一个容器提交为一个新版本的镜像
docker commit -m="some msg" -a="Mr.XiaoMing" <containerName|Id> <imageName:tag>
# eg: docker commit -m="some msg" -a="Mr.XiaoMing" e228ed010168 myImages/ubuntu:v2

提交后,直接在本地镜像库中创建了一个新的镜像,可以直接通过该镜像运行一个容器,通过docker images可以查看新创建的镜像

5.如何导出/导入一个本地的Docker Image镜像

使用docker save可直接将一个本地镜像导出一个压缩文件,然后复制到其他Docker服务器中导入使用

docker save <sourceImageName> > <tagestFileName.tar.gz>
# 可以直接一次性导出多个Image镜像到压缩文件中 
docker save <sourceImageName1> <sourceImageName2> <sourceImageName3> > <tagestFileName.tar.gz>

使用docker load可以将导出的镜像压缩文件,再次导入到本地镜像

docker load 
6.删除容器/镜像
# 删除一个容器
docker rm <containerName> # 运行中的容器无法删除
# 强制删除运行中的容器
dcoker rm -f <containerName> 

# 删除镜像
docker rmi <imageName>
# 强制删除
docker rmi -f <imageName>

如果镜像正在运行,或曾经运行过是无法直接删除的,需要使用强制删除;

批量删除已停止的容器

docker container prune
7.如何挂在数据卷实现主机目录与容器内的目录对应

方法一: 直接挂载目录法(Bind Mount)
使用docker run创建容器时,指定-v /host/path/data:/container/path/data 参数,实现本地任意目录挂在到容器目录

docker run -itd --name <newContainerAlias> -v </host/path>:</conatiner/path> <imageName:tag> /bin/bash
# eg docker run -itd --name vUbuntu -v /docker/vUbuntu:/data ubuntu:15.10 /bin/bash

注意通过指定主机目录路径的方式,主机目录必须是完整的绝对路径

方法二: 使用docker的volumes管理创建volume
使用docker run创建容器前,先通过docker volume create <newVolumeName>

# 创建数据卷
dokcer volume create myUbuntuData

# 挂载刚才的创建的数据卷
ocker run -itd --name vUbuntu -v myUbuntuData:/data ubuntu:15.10 /bin/bash

注意 Bind方式与Volumes方式是有区别的,前者会忽略容器中的绑定目录的内容,只能读到主机的绑定目录;后者会把容器中的内容复制到主机的volume目录

这里介绍一下对docker volume的相关命令
查看所有数据卷 docker volume ls
查看指定数据卷 docker volume inspect <volumeName>
删除一个数据卷 docker volume rm <volumeName>
删除没使用的数据卷(谨慎使用) docker volume prune

推荐docker学习的网址 http://www.yunweipai.com/34721.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值