翼度科技»论坛 云主机 LINUX 查看内容

docker_1

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
Docker概述

Docker为何要出现

由于传统的方式,不能打包环境,而环境的配置也及其繁琐,及其耗费时间,而docker就可以非常有效的解决这个问题
docker的思想来源于集装箱,docker的核心思想!打包装箱,也就是说每个箱子都是隔开的,docker通过这种机制可以吧服务器利用到极致
docker为什么这么多人喜欢用

在类似docker这种技术出现之前,我们用的都是虚拟机,而虚拟机和docker都称为虚拟化技术,不同的则是:

  • 虚拟机安装和启动相当于一个全新的操作系统,体积十分的大
  • docker则是直接运行在宿主机的,而且每个容器是相互隔离的,每个容器都有属于自己的文件系统,而每个容器相同的东西是共用的,互不影响,也十分的小巧
docker是基于go语言开发的,是一个开源项目
docker官网:https://www.docker.com/
docker的官方文档:https://docs.docker.com/
docker的镜像仓库:https://hub.docker.com/

  • 应用更快熟的交付和部署
  • 更便利的升级的扩展,删减
  • 更简单的系统运维
  • 更高效的计算机资源利用
Docker安装

参考官方文档和百度以及Google
Docker的基本组成


  • 镜像(images)
    可以通过镜像来创建多个容器
  • 容器(container)
    利用容器化技术,独立运行应用,通过镜像来创建,目前可以理解为一个简易的linux
  • 仓库(repository)
    存放镜像的地方,分为私有和公有,国内结合阿里云的容器的镜像加速服务使用
Docker的常用命令

帮助命令
  1. docker version  # 查看docker的版本信息
  2. docker info # 查看docker的系统信息,包含镜像和容器的数量
  3. docker 命令 --help #帮助命令,帮助文档:https://docs.docker.com/engine/reference/commandline/build/
复制代码
镜像命令
  1. docker images # 查看本地主机上的所有镜像,也可以用docker image ls
  2. # 解释
  3. #REPOSITORY # 镜像的仓库源
  4. #TAG # 镜像的标签
  5. #IMAGE ID # 镜像的id
  6. #CREATED # 镜像的创建时间
  7. #SIZE # 镜像的大小
  8. docker search # 搜索镜像
  9. docker pull #下载镜像
  10. docker rmi # 删除镜像
复制代码
docker pull下载镜像
  1. #下载镜像 docker pull 镜像名[:tag]
  2. ❯ docker pull gcc
  3. Using default tag: latest
  4. latest: Pulling from library/gcc #不写tag默认就是latest
  5. b9a857cbf04d: Already exists # 分层下载 docker images的核心,联和文件系统
  6. d557ee20540b: Already exists
  7. 3b9ca4f00c2e: Already exists
  8. 667fd949ed93: Already exists
  9. 4ad46e8a18e5: Already exists
  10. 6b12d912e8a1: Pull complete
  11. 469a7950a2b4: Pull complete
  12. b0ef12232a36: Pull complete
  13. c261ba6eb26c: Pull complete
  14. Digest: sha256:f418921b872c4831dfc9bc33aaec2a8480d37e46190da766c3497cd8d5fedb75 # 防伪签名
  15. Status: Downloaded newer image for gcc:latest
  16. docker.io/library/gcc:latest # 真实地址
复制代码
docker rmi删除镜像
  1. docker rmi -f 镜像id #删除指定的镜像
  2. docker rmi -f 镜像id 镜像id 镜像id 镜像id#删除指定的镜像
  3. docker rmi -f $(docker images -aq) #删除全部的镜像
复制代码
容器命令
  1. docker run 镜像id # 新建容器并启动
  2. docker ps # 列出所有运行的容器 docker container list
  3. docker rm 容器id # 删除指定容器
  4. docker start 容器id # 启动容器
  5. docker restart 容器id # 重启容器
  6. docker stop 容器id # 停止当前正在运行的容器
  7. docker kill 容器id # 强制停止当前容器
复制代码
注:我们有了镜像才可以创建容器,linux
  1. > docker container
  2. Usage:  docker container COMMAND
  3. Manage containers
  4. Commands:
  5.   attach      Attach local standard input, output, and error streams to a running container # 当前shell下 attach连接指定运行的镜像
  6.   commit      Create a new image from a container's changes # 提交当前容器为新的镜像
  7.   cp          Copy files/folders between a container and the local filesystem
  8.   create      Create a new container
  9.   diff        Inspect changes to files or directories on a container's filesystem
  10.   exec        Run a command in a running container
  11.   export      Export a container's filesystem as a tar archive
  12.   inspect     Display detailed information on one or more containers
  13.   kill        Kill one or more running containers
  14.   logs        Fetch the logs of a container
  15.   ls          List containers
  16.   pause       Pause all processes within one or more containers
  17.   port        List port mappings or a specific mapping for the container
  18.   prune       Remove all stopped containers
  19.   rename      Rename a container
  20.   restart     Restart one or more containers
  21.   rm          Remove one or more containers
  22.   run         Run a command in a new container
  23.   start       Start one or more stopped containers
  24.   stats       Display a live stream of container(s) resource usage statistics
  25.   stop        Stop one or more running containers
  26.   top         Display the running processes of a container
  27.   unpause     Unpause all processes within one or more containers
  28.   update      Update configuration of one or more containers
  29.   wait        Block until one or more containers stop, then print their exit codes
  30. Run 'docker container COMMAND --help' for more information on a command.
复制代码
新建容器并启动
  1. docker run [可选参数] images | docker container run [可选参数] image
  2. #参数说明书
  3. --name="Name" # 容器名字 tomcat01 tomcat02 用来区分容器
  4. -d # 后台方式运行
  5. -it # 使用交互方式运行,进入容器查看内容
  6. -p # 指定容器的端口 -p 8080(宿主机):8080(容器)
  7.         -p ip:主机端口:容器端口
  8.         -p 主机端口:容器端口(常用)
  9.         -p 容器端口
  10. -P(大写) 随机指定端口
  11. # 测试
  12. ❯ docker run -it centos
  13. Unable to find image 'centos:latest' locally
  14. latest: Pulling from library/centos
  15. 7a0437f04f83: Already exists
  16. Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
  17. Status: Downloaded newer image for centos:latest
  18. i[root@8f62df7602af /]# ls
  19. bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
  20. dev  home  lib64  media       opt  root  sbin  sys  usr
  21. [root@8f62df7602af /]# exit # 退出容器到主机
  22. exit
复制代码
查看当前正在运行的容器
  1. ❯ docker ps
  2. CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
  3. 565c3e0b43ca   centos    "/bin/bash"   12 seconds ago   Up 11 seconds
  4.   practical_hermann
复制代码
退出容器
  1. exit # 直接退出容器
  2. ctrl+p+Q # 容器不停止退出
复制代码
删除容器
  1. docker rm 容器id # 删除指定容器,不能删除正在运行的容器,可以使用rm -rf强行删除
  2. docker rm -f $(docker ps -aq) # 删除指定的容器
  3. docker ps -a -q|xargs docker rm #删除所有的容器
复制代码
启动和停止容器的操作
  1. docker start 容器id # 启动容器
  2. docker restart 容器id # 重启容器
  3. docker stop 容器id # 停止当前正在运行的容器
  4. docker kill 容器id # 强制停止当前容器
复制代码
常用的其它命令

后台启动命令
  1. # docker run -d 镜像
  2. ❯ docker run -d centos
  3. 0a739d000eafcb8e190e890ed06832de1b7ee2f1544d59fcd60390699f1612fe
  4. ❯ docker ps
  5. CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  6. # 常见的坑,docker容器使用后台运行,就必须要有一个前端进程,docker发现没有应用,就会自动停止
复制代码
查看日志
  1. # 显示日志
  2. -tf # 显示日志信息(一直更新)
  3. --tail number # 需要显示日志条数
  4. docker logs -t --tail n 容器id # 查看n行日志
  5. docker logs -ft 容器id # 跟着日志
复制代码
查看镜像的元数据
  1. ❯ docker inspect centos #centos为容器id或名称
  2. [
  3.     {
  4.         "Id": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
  5.         ..........
  6.     }
  7. ]
复制代码
进入当前正在运行的容器
  1. docker exec -it 容器id bashshell # 进入当前容器重开一个终端,可以在里面操作
  2. docker attach 容器id # 进入当前容器正在执行的终端
复制代码
从容器拷贝到主机上
  1. docker cp 容器id:容器内路径 主机
复制代码
Docker镜像讲解

镜像是什么

镜像其实就是一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,将所有的应用和环境打包成docker镜像,即可直接运行
Docker镜像加载原理


  • UnionFs(联合文件系统)
    我们下载的时候看见的一层层的就是这个
    也就是一种分层,轻量级并且高性能的文件系统,支持对文件系统修改作为一次提交来一层层叠加,同时可以将不同的目录挂载在同一个虚拟文件系统下,是docker镜像的基础,镜像可以分层继承
    特性:可以一次加载多个文件系统,但总体就一个文件系统,联和加载会把各层文件系统叠加起来,最终的文件系统就会包含底层的所有文件和目录
分层
最大的好处就是资源共享,查看镜像分层的方式可以通过docker images inspect来查看
理解

所有的docker都起始于一个基础的镜像层,当进行修改的或者新加内容时,就会在当前的镜像层之上新建镜像层,类似于游戏打补丁
Docker通过存储引擎(新版本采用快照机制)的方式来实现镜像层堆栈,并保证多镜像层对外展示为统 一的文件系统
Linux上可用的存储引撃有AUFS、 Overlay2、 Device Mapper、Btrfs以及ZFS。顾名思义,每种存储引擎都基于 Linux中对应的文件系统或者块设备技术,井且每种存储引擎都有其独有的性能特点
Docker在 Windows上仅支持 windowsfilter 一种存储引擎,该引擎基于NTFS文件系统之上实现了分层 和CoW
docker镜像都是只读的,当容器启动的时候,一个新的可写层加载到镜像的顶部,这一层就是我们常说的容器层,容器之下的都叫镜像
commit镜像
  1. # 和git的原理类似
  2. docker commit -m="描述" -a="作者" 容器id 目标镜像名[:TAG]
复制代码
来源:https://www.cnblogs.com/NingYaFelix/p/17622798.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

上一篇: docker_1

下一篇: linux进阶:设备号

举报 回复 使用道具