Docker基础理解以及容器指令、镜像指令、docker本身的指令

Docker

Docker学习

开发打包跨平台部署上线,一套流程做完!

打包项目带上环境(镜像),Docker类似于商店,下载发布的镜像,直接运行即可。

Docker概述

Docker 通过隔离机制,可以将服务器利用到极致

Docker历史

将自己的技术(容器化技术)命名

刚刚诞生时,没有引起行业的注意,2013年,Docker开源,2014年4月9日,Docker1.0发布!

  • 轻巧(在容器技术出来之前,使用的都是虚拟机技术)
    • 虚拟机:通过VMware,虚拟出一台或者多台电脑,占用内存。
    • 虚拟机属于虚拟化技术,Docker容器技术,也是一种虚拟化技术
    • docker隔离,镜像(最核心的环境4m+jdk+mysql等),秒级启动

Docker是基于Go语言开发的

Doker和虚拟机技术的不同

  • 传统虚拟机,虚拟出一条硬件,运行出一个完整的操作系统,然后在这个系统上安装和运行软件
  • 容器内的应用直接运行在宿主机的内核,容器是没有自己的内核的,也没有虚拟硬件,所以轻便
  • 每个容器见是互相隔离的,每个容器内都有一个属于自己的文件系统,互不影响

DevOps(开发\运维)

  • 应用更快速的交付和部署

    打包镜像发布测试,一键运行

  • 更便捷的升级和扩容

    部署、升级应用更简单

  • 更简单的系统运维

    在容器化之后,开发环境、测试环境都是高度一致的

  • 更高效的计算资源利用

    一个物理机上可以运行多个容器实例

Docker安装

名词介绍

镜像(image)

docker镜像类似于一个模板,可以通过这个模板来创建容器服务

eg:tomcat镜像,先运行run这个镜像,会创建一个tomcat容器(提供服务),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在这个容器中的)。

容器(container)

docker利用容器技术,独立运行一个或者一个组应用,容器通过镜像运行来创建。

启动,停止,删除等基本命令

目前就可以把在这个容器理解为就是一个简易的linux系统

仓库(repository)

仓库就是存放镜像的地方

  • 公有仓库:Docker Hub(默认国外)
  • 私有仓库:阿里云,华为云(配置镜像加速)

安装步骤

**参考官方文档:****https://docs.docker.com

https://docs.docker.com/get-docker/**

环境准备

  1. linux基础
  2. CentOS 7
  3. Xshell连接远程服务器进行操作

环境查看

  1. 系统内核是 3.0 以上的

    uname -r
    

在这里插入图片描述

  1. 系统版本是CentOS 7

    cat /etc/os-release
    

在这里插入图片描述

安装

  1. 卸载旧的版本

    yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
    

在这里插入图片描述

  1. 需要的安装包

    yum install -y yum-utils
    

在这里插入图片描述

  1. 设置镜像的仓库(推荐使用阿里云的)

    yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

在这里插入图片描述

  1. 更新yum软件包索引

    yum makecache fast
    
  2. 安装docker相关的内容

    docker-ce 是社区版 -ee是企业版

    yum install docker-ce docker-ce-cli containerd.io
    

在这里插入图片描述

  1. 安装指定版本

    要安装特定版本的 Docker Engine,请在存储库中列出可用版本,然后选择并安装

    一种。列出并排序您存储库中可用的版本。本示例按版本号(从高到低)对结果进行排序,并被截断

    $ yum list docker-ce --showduplicates | sort -r
    docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
    yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
    
  2. docker run hello-world
    

    寻找镜像-拉取镜像-运行-验证Docker安装成功

    docker inage 镜像

  3. 查看下载的hello-world 镜像

    docker images
    

在这里插入图片描述

  1. 卸载docker

    #1. 卸载依赖
    $ sudo yum remove docker-ce docker-ce-cli containerd.io
    #2. 删除资源
    $ sudo rm -rf /var/lib/docker  # docker的默认工作路径
    $ sudo rm -rf /var/lib/containerd
    
  2. 配置阿里云镜像加速

  3. run hello world的流程分析图
    在这里插入图片描述

底层原理

Docker是怎么工作的?

Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问,DockerServer接收到Docker-Client的指令,执行命令

在这里插入图片描述

Docker为什么比VM快?

  1. Docker有着比虚拟机更少的抽象层
  2. docker利用的是宿主机的内核,VM需要的是GuestOS

docker 有着比虚拟机更少的抽象层。由于 docker 不需要 Hypervisor 实现硬件资源虚拟化,运行在 docker 容器上的程序直接使用的都是

实际物理机的硬件资源。因此在 CPU、内存利用率上 docker 将会在效率上有明显优势。

docker 利用的是宿主机的内核,而不需要 Guest OS。因此,当新建一个 容器时,docker 不需要和虚拟机一样重新加载一个操作系统内核。

仍而避免引寻、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载 GuestOS,返个新建过程是分钟

级别的。而 docker 由于直接利用宿主机的操作系统,则省略了返个过程,因此新建一个 docker 容器只需要几秒钟。

Docker命令

帮助命令

docker version		# docker版本信息
docker info     	# docker详细系统信息,包括镜像和容器的数量
docker --help   	# 万能命令

帮助文档的地址:

https://docs.docker.com/engine/reference/commandline/cli/

1.Docker本身命令

1.1启动Docker

systemctl start docker

1.2停止Docker

systemctl stop docker

1.3重启Docker

systemctl restart docker

1.4查看Docker状态

systemctl status docker

1.5开机自启动

systemctl enable docker

1.6取消开机启动

systemctl disable docker

1.7查看Docker概要信息

docker info

2.Docker容器命令

说明:有了镜像才可以创建容器

2.1 查看运行的容器

docker ps  #查看当前正在运行的容器

2.2 查看所有容器

docker ps -a   #查看正在运行的容器,以及过去运行过的容器

在这里插入图片描述

docker ps -n=?  #?=数字,查看最近创建的容器
举例:docker ps -n=2  #查看最新创建的两个容器

在这里插入图片描述

2.3 创建容器

docker run [可选参数] image
# 参数说明
--name="name"		# 创建容器并命名
-d					#后台方式运行容器
-it					#使用交互方式创建容器
-P					#大写P,指定容器的端口 -P:8080
	-P 主机端口:容器端口 #(常用)
-p					#小写p,随即指定端口
  • -i:表示运行容器
  • -t:表示容器启动后会进入命令行
  • -name:为创建的容器命名
  • -v:表示目录映射
  • -d:表示守护式运行
  • -p:表示端口映射

交互式方式创建:

docker run -it 容器名 /bin/bash	#随机命名
#创建容器,并运行,/bin/bash 系统下的驱动文件,如果创建镜像不存在的容器,则会优先拉去最新的镜像,并创建容器,运行容器

在这里插入图片描述

语法:docker run -it --name=自定义容器名字 镜像名称:镜像标签   /bin/bash	#自定义名称

举例:docker run -it --name=my centos centos:7 /bin/bash

守护式方式创建:

语法:docker run -id --name=自定义容器名称 镜像名称:镜像标签

举例:docker run -id --name=mycentos centos:7

2.4 退出容器

exit		#容器停止并退出
Ctrl+P+Q	#不停止容器退出

在这里插入图片描述

2.5 停止容器

语法:docker stop 容器名称 或 容器ID

举例:docker stop mycentos

在这里插入图片描述

2.7 启动容器

语法:docker start 容器名称 或 容器ID

举例:docker start mycentos

2.8 容器文件拷贝

  • 文件 拷贝到 容器
语法:docker cp 本地文件地址 容器名称:docker目标地址

举例:docker cp /tmp/jenkins.war mycentos:/usr/tmp
  • 容器 拷贝到本地
语法:docker cp 容器名称:docker目标地址 本地文件地址

举例:docker cp mycentos:/usr/tmp/jenkins.war /tmp/jenkins2.war

2.9 容器目录挂载

  • 创建时挂载目录
语法:docker run -id --name=容器名称 -v 宿主机目录:容器目录 镜像名称:镜像标签

举例:docker run -id --name=mycentos -v /tmp:/tmp centos:7
  • 运行时挂载

2.10删除容器

语法:docker rm 容器名称或容器ID	#删除指定的容器,不能删除正在运行的容器

举例:docker rm mycentos	

docker rm -f 容器名称或容器ID	#删除容器,包括正在运行的容器

3.Docker镜像命令

3.1 查看镜像

docker images		#展示详细镜像信息
docker images -a	#展示所有镜像
docker images -q	#只展示镜像ID

在这里插入图片描述

以下镜像都是存储在Docker宿主机的/var/lib/docker目录下

  • REPOSITORY:镜像名称
  • TAG:镜像标签
  • IMAGE ID:镜像ID
  • CREATED:镜像的创建日期
  • SIZE:镜像大小

3.2 搜索镜像

在这里插入图片描述

# 正常搜索
语法:docker search 镜像名

举例:docker search centos

# 过滤搜索,后缀条件
docker search mysql --filter=STARS=3000

在这里插入图片描述

  • NAME:仓库名称
  • DESCRIPTION:镜像描述
  • STARS:用户评价
  • OFFIOCIAL:是否官方
  • AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建

3.3 拉取最新镜像
在这里插入图片描述

语法:docker pull 镜像名称(默认最新版)

举例:docker pull centos   #分层下载,docker的核心

3.4 拉取指定镜像

语法:docker pull 镜像名称:镜像标记

举例:docker pull centos:7

# 下载不同版本的镜像,若系统检测到存在重复文件,不会下载,公用文件

3.5 删除镜像
在这里插入图片描述

# 删除指定的容器
语法:docker rmi 镜像ID   #remove image

举例:docker rmi 9e4a20b3bbbc

3.6 删除所有镜像

docker rmi \`docker images -q\`
docker rmi -f $(docker images -aq)		#删除全部的镜像
docker rmi -f 镜像ID 镜像ID 镜像ID		#删除多个镜像

常用其他命令

后台启动容器

docker run -d 镜像名称	#后台启动运行容器
# 注意:如果前台没有进程,后台容器运行,docker发现没有进程,就会自动停止

查看日志命令

docker logs -f -t --tail 10 容器ID
# 查看该容器的日志信息前十行,前提是该容器在运行

查看容器内部的进程信息

docker top 容器ID或容器名称

在这里插入图片描述

查看镜像的元数据

docker inspect 容器iD

进入当前正在运行的容器

方式一:

docker exec -it 容器id /bin/bash
#进入容器后开启一个新的终端,可以在里面进行操作

方式二:

docker attach 容器id
#进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件

docker cp 容器id:/home/text.java /home

docker 连不上网

  1. 虚拟机-网络适配器-桥接模式(勾选“复制物理网络连接状态”)-确定

  2. 进入终端输入指令“cd /etc/sysconfig/network-scripts/”目录下,ls展示,查看是否有“ifcfg-ens33”这个文件

  3. 输入指令“vim ifcfg-ens33”进入编辑器,跟图片修改至一致,保存退出

  4. 输入“systemctl restart network”重启,“ping www.baidu.com”是否ping通
    在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker build指令用于构建Docker镜像。在构建过程Docker引擎会根据指定的上下文目录打包并交给Docker引擎来构建镜像。\[1\]上下文目录是指在docker build命令指定的路径,它包含了构建镜像所需的文件和目录。\[1\] 需要注意的是,不要使用根目录/作为构建上下文的路径,因为这会导致将硬盘驱动器的全部内容发送到Docker守护程序,逐一运行Dockerfile指令。每条指令都是独立运行的,并会创建一个新的镜像。因此,像RUN cd /tmp这样的指令不会对下一条指令产生任何影响。\[2\] 此外,Docker在构建过程会尽可能使用构建缓存来加速构建过程。如果之前的构建结果已经缓存了,那么在控制台输出会显示CACHED消息。\[2\] 命令行参数-f或--file用于指定Dockerfile的路径。Dockerfile是一个文本文件,其包含了构建镜像所需的指令和配置。\[3\] 综上所述,docker build指令用于根据Dockerfile和上下文目录构建Docker镜像,并可以通过命令行参数来指定Dockerfile的路径。 #### 引用[.reference_title] - *1* [docker build与Dockerfile用法解释](https://blog.csdn.net/vic_qxz/article/details/119766007)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Docker - docker build 命令详解](https://blog.csdn.net/hshloveyy/article/details/129395861)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Docker(45)- docker build 命令详解](https://blog.csdn.net/qq_33801641/article/details/120945037)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值