docker安装、命令、常见操作

1、Docker简介

Docker是一个开源的应用容器引擎,是一个轻量级容器技术;

Docker官网地址

Docker文档地址 Docker镜像仓库地址 

个人理解:主要用来快速部署应用。可以使用简单的命令搭建常用的中间件、也可以将自己开发的应用做成镜像。每一个运行的镜像都是一个容器(盒子)!盒子与盒子之间是相互隔离的。

一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。

  • 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
  • 容器化软件适用于基于 Linux 和 Windows 的应用,在任何环境中都能够始终如一地运行。
  • 容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。

举个例子:

我们物理机上部署一个jar包应用时,为我们需要 执行 Java -jar x.jar 。但是在这之前我们需要安装 jak 环境、安装各种依赖、和配置、写启动脚本什么的。如果我们要做 集群分布式部署,我们就要重复做这些操作。

但是我们做成一个docker镜像,当重复部署时就只用很简单的命令就能快速复制。

会将常用的所有命令都放在这儿!!!!

2、为什么要用 docker?

1、更高效的利用系统资源:

由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用 率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。

2、更快速的启动时间:docker 构建于操作系统之上,他的启动是很快的,并且打包文件也不是很大。

传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。

3、一致的运行环境:

开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些bug并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这类问题。

4、持续交付和部署:docker 可以通过版本镜像完成持续交付、快速部署。

对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试, 而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便 运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。

5、更轻松的迁移:

由于Docker确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。 因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行 环境的变化导致应用无法正常运行的情况。

6、更轻松的维护和扩展:

Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,以及应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。

7、统一管理:

一个个容器就相当于一个个软件,一个个“环境”。可以在一个地方集中管理,进行创建,启动,运行,停止,查看。省去了由于各种差异导致的不同操作及问题。同时还可以有自己的中央资源管理服务器和版本管理。

8、隔离:

docker 的每个容器之间是相互隔离的,有各自独立的进程,一个出现问题不会影响到整个环境,整个服务器。

3、基础概念

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,镜像是静态的定义,容器是镜像运行时的实体容器可以被创建、启动、停止、删除、暂停等。

容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。

按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据 ,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此, 使用数据卷后,容器可以随意删除、重新 run ,数据却不会丢失。

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

Docker Hub(https://hub.docker.com) 是一个共有仓库,提供了庞大的镜像集合供使用。私有仓库可以在官网找到安装。

私有仓库搭建

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

4、安装Docker

1.检查内核版本,必须是3.10及以上
# yum list installed | grep docker
2、检查内核版本,必须是3.10及以上
# uname -r
3.把yum包更新到最新
# yum update
4.存在旧版本_删除旧版本
 #sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
5.需要的安装包
# sudo yum install -y yum-utils
6.设置镜像的仓库
# sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
7.更新 yum安装包
# yum makecache fast
8.安装
# sudo yum install docker-ce docker-ce-cli containerd.io
9、启动docker
# systemctl start docker
设置开机启动docker
# systemctl enable docker
关闭docker命令
# systemctl stop docker
10、查看版本
#  docker version
11、检测是否启动成功,可以使用search命令
# docker search mysql

5、卸载Docker

12、卸载
# sudo yum remove docker-ce docker-ce-cli containerd.io
# sudo rm -rf /var/lib/docker
# sudo rm -rf /var/lib/containerd

6、docker 帮助命令

#直接输入 docker  会列出所有命令

# 显示docker的版本号
docker -v	   
# 显示docker的版本信息
docker version 	  
# 显示docker的系统信息,包括镜像和容器的数量
docker info		  
# 帮助命令 (COMMAND,命令),例如 docker save --help
docker [COMMAND] --help  

7、镜像操作命令

#查看镜像 
docker images:
#搜索镜像 
docker search
#下载镜像 
docker pull
#删除镜像 
docker rmi -f
#查看镜像的详细信息 
docker inspect
#给镜像打标签 
docker tag
#将镜像保存为tar文件 
docker save
#从tar文件中加载镜像
docker load
#使用Dockerfile创建镜像 
docker build
#查看镜像的创建历史
docker history

注意:有些命令需要加参数 比如:强制删除(docker rmi -f),需要的二参数使用 

docker [COMMAND] --help  查看

8、容器操作


1、查看正在运行的容器
# docker ps       用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号
2、查看所有容器,包括运行中的和停止的
# docker ps -a
3、查看容器内的进程
# docker top 容器id
4、查看容器内部细节
# docker inspect 容器id
5、创建并运行一个新容器。其中,-d表示后端运行;-p表示宿主机端口映射到容器端口;--name表示给新容器起名字。
# docker run -d --name 新容器名 -p 8081:8080 镜像名:Tag
    端口映射
    # docker run -d -p 8888:8080 tomcat
    -d:[后台运行]
    -p: [将主机的端口映射到容器的一个端口]    
    8888:8080 [主机端口:容器内部的端口]
6、docker容器运行日志
# docker logs 容器id或容器名  持续查看容器日志: docker logs -f 容器id
7、交互命令式进入容器内部
# docker exec -it 容器id 推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止
# docker attach 容器id 如果从这个容器退出,会导致容器的停止
8、查看镜像、容器、数据卷占用的空间
# docker system df
9、启动容器
# docker start 容器id
10、停止一个容器
# docker stop 容器id
11、重启容器
# docker restart
12、重启容器
# docker restart
13、导出和导入容器
# docker export          导出容器快照
# docker import          导入容器快照
11、删除一个容器
# docker rm 容器id   强制删除容器: docker rm -f
12、进入docker容器 交互模式
# docker exec -it 容器id /bin/bash
13、查看docker运行状态
# docker stats
14、让一个运行的容器暂停
# docker pause
14、让一个容器从暂停状态恢复运行
# docker unpause
15、拷贝
docker cp path toPath (可以将物理机和容器之间的文件相互拷贝)

把容器设置开机自启:docker update --restart=always 容器名

查询指定名称开头的容器id:docker ps -a -q --no-trunc --filter name=^/xxx 。(这里xxx表示容器开头名称)

组合命令启动指定名称开头的容器:docker start docker ps -a -q --no-trunc --filter name=^/xxx。

一个容器可以映射多个端口同时访问。docker IP查看 : docker inspect container Id

9、在大部分情境下使用的docker命令

1.  容器生命周期管理 — # docker [ run | start | stop | restart | kill | rm | pause | unpause ]
2.  容器操作运维 — docker [ps | inspect | top | attach | events | logs | wait | export | port ]
3.  容器rootfs命令 — docker [commit|cp|diff]
4.  镜像仓库 — docker [login|pull|push|search]
5.  本地镜像管理 — docker [images|rmi|tag|build|history|save|import|load]
6.  其他命令 — docker [info|version]

注意(坑点):

使用 docker save -o xxx.tar imagesId 打出来tar 
使用 docker load -i xxx.tar 出来的镜像没有 repository 和 tag
建议使用:docker save -o xxx.tar repository:tag
  • 56
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值