Docker的使用及常用操作(镜像操作与容器操作)

Docker是个图标是鲸鱼的玩意 其实很早以前就知道Docker了 但一直没有深入接触(因为觉得可能比较难
这次稍微系统地学习一下 顺便记录一下

一、概述

Docker是一个开源的应用容器引擎 是一个轻量级容器技术
类似于虚拟机 但不是虚拟机 且实现了虚拟机的资源隔离 Docker的性能远远高于虚拟机(反正一大堆好处

Docker主要的应用场景:

若一个人要安装Windows原生系统 安装完毕还需要下载其它软件 例如QQ 微信等 还需要进行配置
另一个人也要安装Windows原生系统的话 同样安装完毕还需要下载其它软件 例如QQ 微信等 还需要进行配置
因此就有了Windows镜像系统:
一个人安装完了Windows原生系统 安装完了其它软件 配置好了 然后打包
另一个人直接安装镜像系统 安装完了就有了那些打包好的软件 包括配置好了的东西也会有
同样的 在开发或运维的过程中经常也需要给服务器安装各种各样的环境
例如MySQL Redis Tomcat等
尤其是在当今分布式集群趋势下 有很多服务器 要一个个安装 还要一个个进行配置 过于麻烦

那么 解决方案来了:

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级 可移植的容器中
然后发布到任何流行的Linux机器上 也可实现虚拟化

Docker支持将软件编译成一个镜像(就像windows系统的镜像) 然后在镜像中对各种软件做好配置
这样 就有了MySQL镜像 Redis镜像 Tomcat镜像 等各种软件的镜像 需要的时候直接下载对应的即可
将镜像发布出去之后 其他使用者可以直接使用这个镜像 直接放置于Docker中运行镜像即可
这个运行起来的镜像有一个专业术语 称为 容器
例:MySQL镜像运行后 就有了MySQL容器 MySQL就是在该容器之中运行
每个容器之间都是沙箱的隔离机制 相互之间不会有任何接口 且容器性能开销极低


二、核心概念

  • Docker主机(Host):安装了Docker的机器
    Docker是直接安装在操作系统之上的 无论是Windows还是Linux还是OS都可安装
  • Docker客户端(Client):连接Docker主机从而进行操作
    有命令行方式还有图形化界面方式操作
  • Docker仓库(Registry):用于保存各种打包好的软件镜像
    有公共仓库 也可以搭建私人仓库
  • Docker镜像(Images):软件打包好的包
    存放在Docker仓库中
  • Docker容器(Container):镜像启动后的实例即容器
    容器就是独立运行的一个或一组应用
    例如 运行Tomcat容器就是运行Tomcat了

Docker的使用也很简单

使用流程:

  • 1、安装Docker
  • 2、去Docker仓库下载需要的镜像到本机
  • 3、然后直接使用Docker来运行镜像
    一运行镜像 就会产生一个容器
    运行镜像几次 就有几个容器
  • 4、对容器进行启动 停止 配置等操作
    对容器的启动和停止就是对目标软件的启动和停止

三、常用操作

1、安装及使用

安装之前 首先需要查看内核:uname -r
Docker需要内核版本高于3.10
若机器内核过低 需要升级内核:yum update

然后就是安装Docker了:

yum install docker

Docker安装好之后 查看Docker版本(version):

docker -v

启动Docker(Centos7写法):

systemctl start docker

注:若启动Docker时出现Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.
解决方法可看我另一篇文章:完美解决虚拟机Docker启动异常Job for docker.service failed because the control process exited with error code.

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

将Docker设为开机启动:

systemctl enable docker

停止Docker:

systemctl stop docker

2、镜像操作

✧、首先 需要搜索镜像:
docker search 镜像关键字

例:docker search mysql

默认是去Docker Hub搜索(然而有时候会很卡 毕竟国外网站
在这里插入图片描述
然后就会有一大堆结果 这些字段的意思是:
NAME:镜像名
DESCRIPTION:镜像描述
STARS:关注人数(以k为单位 类似于Github的star 相当于有多少人点赞)
OFFICIAN:是否为官方镜像
AUTOMATED:是否为自动配置的镜像(即 下载过来即可自动配置)

✧、当挑选到合适的镜像后 接下来就是下载/拉取镜像了:
docker pull 镜像名:tag

镜像名无须带docker.io 比如镜像的名称为docker.io/mysql 那么镜像名即为mysql
当然 全名也行
这个:tag是可选的 tag表示标签 即软件的版本号
不带标签的话 默认是latest 即最新的

若报错 请指定镜像仓库:docker pull 镜像仓库名/镜像名:tag
具体请参看我另一篇博客:解决Docker在pull的时候报错Get https://registry-1.docker.io/v2/: net/http: request canceled (Client.Timeout e
在这里插入图片描述

✧、镜像下载到本地之后 可以列出本地所有的镜像:
docker images

在这里插入图片描述

✧、最后 如果哪个镜像不想要了 可以删除镜像:
docker rmi 镜像id(IMAGE ID):版本号(TAG)

(rmi:remove image)
在这里插入图片描述

3、容器操作

使用流程:得到软件的镜像 --> 运行镜像 产生容器 得到真正的软件
也就是说 镜像就相当于安装程序 当运行安装程序就会产生真正运行的软件(可能比喻不太恰当 哪有程序安装完不跟你说就自动运行的2333
因此 当镜像下载好之后 接下来就需要根据镜像启动容器了

✧、首先是运行容器:
docker run --name 容器名 -d 镜像名

例如:docker run –name myredis –d redis

若镜像不是从官方仓库下载的 则需带上全名(下面图片上的案例即是如此)

  • –name:自定义容器名(也可不指定 不指定的话使用默认名)
  • -d:后台运行
  • image-name:指定要运行的镜像名

想要启动几个 执行几次即可
在这里插入图片描述

✧、然后 可以查看容器:

查看运行中的容器

docker ps 

加上-a 查看所有容器(a:all)

docker ps -a

在这里插入图片描述
我就运行了一个 因此效果相同

✧、当容器未启动时 可启动容器:
docker start 容器名/容器id

在这里插入图片描述

✧、若想停止容器:
docker stop 容器名/容器id

在这里插入图片描述

✧、删除容器:
docker rm 容器id
✧、端口映射

让外部能访问远程服务器的Docker中的端口

-p 服务器的端口:容器中的端口

:须在docker run的时候添加该参数
以Tomcat为例:docker run -d -p 8888:8080 docker.mirrors.ustc.edu.cn/library/tomcat
想要启动几个 执行几次即可(当然 每次的端口须不一样)
在这里插入图片描述
Tomcat启动成功
若出错 须关闭服务器的防火墙或开放指定端口

✧、查看容器日志
docker logs 容器名/容器id

在这里插入图片描述

✧、进入容器内部
docker exec -it  容器id  bash

注:当然 bash也可改为容器内部的目录
若退出 输入exit即可


发布了174 篇原创文章 · 获赞 5 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/Piconjo/article/details/105045675