docker基础概念入门以及示例教程

文章目录

  • 前言
  • 简介
  • docker的架构
  • docker安装
  • 常用命令
    • 卸载docker
    • 搜索镜像
    • 下载镜像
    • 列出镜像
    • 删除本地镜像
      • 按照名字删
    • 新建并启动容器
      • 示例
    • 停止容器
    • 进入容器
    • 删除容器
  • 参考文献

前言

在阅读本文前,建议参照笔者的这篇get start简记
从0带你极简入门docker

简介

docker时一个开源的容器引擎,有助于更快的交付应用,docker可将应用程序和基础设施层隔离,并且能够将基础设施当作程序一样进行管理。使用docker可以更快的进行打包、测试部署应用程序,从而缩短程序开发周期。

docker的架构

  1. docker daemon:docker守护进程,是一个运行在宿主机的后台进程,可通过docker客户端与其进行通信
  2. client :这就是docker的客户端了,从下图我们就可以看出client就是通过各种命令和docker daemon进行交互的。
  3. images :docker image我们可以将其视为创建docker容器的模板,就好比使用系统iso就可以定制安装你所需要的操作系统。
  4. container:docker容器,就如上所说,就是基于镜像造出来的一个实例,可通过docker api进行启动,停止,删除
  5. registry:我们在本机上构建了镜像之后,如果需要在其他主机上运行,是不是还要复制过去呢?这很明显是一件很麻烦的事情。docker registry可以包含多个docker仓库,而每个仓库可以包含多个镜像标签,每个标签对应一个docker镜像。我们完全可以把docker registry比较maven仓库,而docker仓库比较jar的坐标,镜像标签当作依赖的版本。
    docker registry可分为公有和私有的,私有的最常用的无非是官方的docker hub,也是默认的docker registry。
    docker基础概念入门以及示例教程_第1张图片

docker安装

  1. 卸载旧版本(如果安装过旧版本的话)
 yum remove docker  docker-common docker-selinux docker-engine
  1. 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
 yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 可以查看所有仓库中所有docker版本,并选择特定版本安装
 yum list docker-ce --showduplicates | sort -r
  1. 直接使用默认版本安装docker
 yum install docker-ce
  1. 查看版本,如果有显示则说明docker安装成功
docer version
  1. 启动并设置开机运行
systemctl start docker
 systemctl enable docker
  1. 配置镜像加速器
    编辑,添加如下图所示内容,具体可以去阿里云控台复制
vim /etc/docker/daemon.json

重启生效

systemctl daemon-reload
systemctl restart docker

docker基础概念入门以及示例教程_第2张图片

常用命令

卸载docker

  1. 卸载docker软件包
yum -y remove docker-engine
  1. 若需要删除镜像、容器、卷以及自定义配置文件,可执行以下命令
rm -rf /var/lib/docker

搜索镜像

docker search java

可以得到这样的结果。每一列的意思分别是
NAME:镜像仓库名称
DESCRIPTION:镜像仓库描述
STARS:收藏数
OFFICIAL:表这个仓库是否是官方仓库,若显示ok则说明是官方创建和维护的

NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
node                                 Node.js is a JavaScript-based platform for s…   11312     [OK]
tomcat                               Apache Tomcat is an open source implementati…   3297      [OK]
openjdk                              OpenJDK is an open-source implementation of …   3220      [OK]
java                                 DEPRECATED; use "openjdk" (or other JDK impl…   1976      [OK]
ghost                                Ghost is a free and open source blogging pla…   1492      [OK]
couchdb                              CouchDB is a database that uses JSON for doc…   467       [OK]
jetty                                Jetty provides a Web server and javax.servle…   383       [OK]
amazoncorretto                       Corretto is a no-cost, production-ready dist…   196       [OK]
circleci/node                        Node.js is a JavaScript-based platform for s…   127
groovy                               Apache Groovy is a multi-faceted language fo…   125       [OK]
tomee                                Apache TomEE is an all-Apache Java EE certif…   95        [OK]
ibmjava                              Official IBM® SDK, Java™ Technology Edition …   95        [OK]

下载镜像

 docker pull java

列出镜像

使用这条命令就可以知晓我们之前所下载的镜像

docker images

下图列意依次为:

  1. REPOSITORY:镜像所属仓库
  2. TAG:镜像标签,默认lastest,即最新版
  3. IMAGE ID:镜像id
  4. CREATED:镜像创建的时间
  5. SIZE:镜像大小

在这里插入图片描述

删除本地镜像

按照名字删

如下所示,即意为删除java的镜像

docker rmi java

新建并启动容器

使用docker run即可创建并启动一个容器,这是最常用的一个命令,他还有很多的选项如下所示

-d 表示后台运行
-P 随机端口映射
-p 指定端口映射,有以下四种格式
	ip:hostPort:containerPort
	ip::containerPort
	containerPort


--network选项:指定docker的网络模式,该选项有以下几个参数
--network=bridge 连接默认网桥
--network=host 仅主机
--network=container:Name_or_I:这种就是格式docker让新建的容器使用已有容器的网络配置
--network=none 无网络配置

示例

使用映射端口的形式运行nginx

docker pull nginx
 docker run -d -p 91:80 nginx

使用91端口即可访问到页面

补充:笔者使用阿里云做实验,默认91端口没开,所以需要按照下图所示将91端口开放
docker基础概念入门以及示例教程_第3张图片docker基础概念入门以及示例教程_第4张图片
具体可以参考

阿里云服务器开放端口教程(通过配置安全组规则)

docker基础概念入门以及示例教程_第5张图片

停止容器

  1. 找到运行容器的id
 docker ps

如下图所示,可知nginx的container id为c93a0e0ac108

在这里插入图片描述

  1. 运行stop命令
docker stop c93a0e0ac108

再次使用docker ps可以看到这个容器已经被关闭了

在这里插入图片描述
当然如果我们需要再开启还可以使用docker start 容器id启动

docker start c93a0e0ac108

进入容器

  1. 得到容器pid docker inspect --format "{{.State.Pid}}" 容器id
docker inspect --format "{{.State.Pid}}" c93a0e0ac108


输出

16951 
  1. 进入容器
nsenter --target 16951 --mount --uts --ipc --net --pid

可以看到我们已经进入docker了,并可以操作

在这里插入图片描述键入命令exit即可退出容器,回到终端界面

docker基础概念入门以及示例教程_第6张图片

删除容器

docker rm 容器id

参考文献

yum源安装docker
docker配置阿里云镜像加速器

《Spring Cloud与Docker微服务架构实战》

你可能感兴趣的:(微服务,操作系统,数据结构,链表)