菜鸟入门Docker[通俗易懂]

菜鸟入门Docker[通俗易懂]菜鸟入门Docker说明一、什么是Docker(1)虚拟机和Linux容器二、Docker用途三、Docker安装(1)设置仓库(2)安装DockerEngine-Community(3)验证安装成功四、Docker启动与停止(1)启动docker(2)停止docker(3)重启docker五、Docker配置(1)将用户加入Docker用户组(2)配置daemon.json六、image…

大家好,又见面了,我是你们的朋友全栈君。


更新时间:2021/2/13 01:15

说明

最近在学习docker时,发现网上很多教程都是很老的教程,导致本人在学习时遇到各种各样的坑,为了方便以后查看,现将学习相关笔记记录在这里。
本文仅为记录学习轨迹,如有侵权,联系删除

一、什么是Docker

在学习docker时,在网上看到一篇博文讲得很好,自己总结一下就是,Docker 将应用程序与该程序的依赖,打包在一个文件里面,改文件包括了所有打包得应用程序的所有依赖,像数据库等;直接运行改文件,就可以让程序跑起来,从而不用再去考虑环境问题。

(1)虚拟机和Linux容器

  • 说到Docker就必须了解虚拟机和Linux容器,虚拟机可以实现在一种操作系统里面运行另一种操作系统,比如在 Windows 系统里面运行 Linux 系统等,而且不会对实际的电脑产生影响,不想用时将虚拟机相关文件删掉即可,用户可以通过虚拟机还原软件的原始环境,实际上就是解决了配置环境的问题。尽管它有资源占用多,启动慢等缺点。

  • Linux容器是为了解决虚拟机的确缺点而生的,Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)。Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。由于容器是进程级别的,相比虚拟机有很多优势。像启动快、资源占用少等

  • 而Docker 就是属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。就像一开始说的,Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题

二、Docker用途

这里引用网上某博主的部分内容,Docker 的主要用途,目前有三大类。

(1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。

(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。

(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

三、Docker安装

说明:由于Docker需要Linux内核的支持,所以本人在自己的电脑(window10)安装了VMware虚拟机,在虚拟机里面安装了一个ubuntu系统,在这基础上进行Docker的安装,安装参考了菜鸟教程,链接:https://www.runoob.com/docker/ubuntu-docker-install.html

(1)设置仓库

卸载旧版本

$ sudo apt-get remove docker docker-engine docker.io containerd runc

更新 apt 包索引

$ sudo apt-get update

安装 apt 依赖包,用于通过HTTPS来获取仓库

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

添加 Docker 的官方 GPG 密钥

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。

$ sudo apt-key fingerprint 0EBFCD88

使用以下指令设置稳定版仓库

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"

(2)安装 Docker Engine-Community

更新 apt 包索引

$ sudo apt-get update

安装最新版本的 Docker Engine-Community 和 containerd

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

(3)验证安装成功

输入命令:docker,出现以下命令即安装成功
在这里插入图片描述

四、Docker启动与停止

(1)启动docker

sudo service docker start

(2)停止docker

sudo service docker stop

(3)重启docker

sudo service docker restart

五、Docker配置

(1)将用户加入 Docker 用户组

Docker 需要用户具有 sudo 权限,为了避免每次命令都输入sudo,建议将用户加入Docker用户组

  • 添加docker用户组
    sudo groupadd docker
  • 将当前用户加入到docker用户组
    sudo gpasswd -a ${USER} docker
  • 重启docker服务
    sudo service docker restart
  • 退出当前用户重登一下

(2)配置daemon.json

本人一开始安装完Docker后,启动docker服务,直接拉取 image文件(注意:不是图片,后面有讲到image文件)后直接报错,显示超时,因为默认网址是国外的,需要配置国内镜像

  • 进入root权限
    su root
    在这里插入图片描述
  • 进入docker文件
    查看改文件下只有一个key.json,新建一个daemon.json文件
    查看文件夹命令:ls
    新建文件夹命令:vim daemon.json
    在这里插入图片描述
  • 编辑docker.json文件
    输入以下内容:
    { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] }
    在这里插入图片描述
    保存退出,重启docker服务

六、image 文件

Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
简单理解就是,将程序打包在image文件(也叫image仓库)里面,运行image文件,生成一个容器生例,容器里面跑程序(已将mysql之类的依赖都打包在里面了,不用去配置数据库等环境)
也就是说,别人的程序打包在image里面,自己直接拿过来后不用配置环境就可以直接跑(很神奇)

# 列出本机的所有 image 文件。
$ docker image ls

# 删除 image 文件
$ docker image rm [imageName]

在这里插入图片描述
hello-world是自己手动下载的image仓库

七、安装Hello-world实例

命令行直接输入

命令:docker image pull library/hello-world

命令解析:
	docker image pull:抓取 image 文件
	library:image 文件所在的组
	hello-world:image 文件的名字
	注意:后期需要的image文件都可以通过这样的方式拉取,像mysql数据库,ubuntu系统等

其中Docker 官方提供的 image 文件,都默认放在library组里面,因此,上面的命令可以写成下面这样。

docker image pull hello-world

运行该实例

命令:docker container run hello-world

命令解析:
	docker container run:自动抓取 image 文件
	注意:如果发现本地没有指定的 image 文件,就会从仓库自动抓取

运行结果
在这里插入图片描述
注意:输出这段提示以后,hello world就会停止运行,容器自动终止。对于那些不会自动终止的容器,必须使用docker container kill 命令手动终止。

$ docker container kill [containID]

八、容器文件

image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。

# 列出本机正在运行的容器
$ docker container ls

# 列出本机所有容器,包括终止运行的容器
$ docker container ls --all

上面命令的输出结果之中,包括容器的 ID。很多地方都需要提供这个 ID,比如上一节终止容器运行的docker container kill命令。

终止运行的容器文件,依然会占据硬盘空间,可以使用docker container rm命令删除。

$ docker container rm [containerID]

运行上面的命令之后,再使用docker container ls –all命令,就会发现被删除的容器文件已经消失了。

九、配置阿里镜像

这个是额外补充的,当前面配置了各种加速镜像都没有的情况下,用这个方式
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

命令:vi /etc/docker/daemon.json
注意:daemon.json该文件可能不存在,这个时候正常创建即可

加入如下内容:

{ 
   
  "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}

例如
在这里插入图片描述
配置完重启服务即可
命令1:sudo systemctl daemon-reload
命令2:sudo systemctl restart docker

十一、docker的另一种安装方式

1. 下载docker-ce的repo
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
2. 安装依赖
yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
3. 安装docker-ce
dnf -y  install docker-ce  docker-ce-cli --nobest
4.启动 docker
systemctl start docker
5.查看 docker 版本信息
docker -v
6.设置开机自动启动
systemctl enable --now docker

本人用centos 8亲测可以,就是有一个安装102M的过程有点久,只有不到100k/s的速率,不过也是可以安装成功的

至此,Docker基本入门结束,该博文参考了网上大多Docker教程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145609.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Docker 启动redis镜像

    Docker 启动redis镜像查看本地所有容器:dockerps-a查看本地运行中的容器:dockerps查看所有镜像:dockerimagesdaocker启动redis镜像同时设置密码:dockerrun-d–nameredis1-p6379:6379redis–requirepass“gs123456”参数解释:-d:后台运行-name为容器的名字-p端口映射–requirepass:redis密码redis为镜像名…

  • 不同宿主机docker 通信_如何设置同网段IP

    不同宿主机docker 通信_如何设置同网段IP依赖包net-toolsiproute2bridge-utilsgitcurl权限需要在root下执行脚本dnet.shj脚本内容#likebr0要创建的桥接设备名BRNAME=$1#likeeth0要矫健的网络接口名IFNAME=$2#192.168.1.2/24当前主机IPLOCALIP=$3#192.168.1.1当前主机…

  • Centos7下安装Docker(详细安装教程)[通俗易懂]

    一,Docker简介百科说:Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。看起来有点雾,用过虚拟机的应该对虚拟化技术有点印象,不知道也没关系,就把它当成轻量级的虚拟机吧(虽然一个是完全虚拟化,一个是操作系统层虚拟化),这个解释到位:ht…

  • centos7.6安装docker_docker自动部署多环境

    centos7.6安装docker_docker自动部署多环境前言前面一篇学了mac安装docker,这篇来学习在linux上安装docker环境准备Docker支持以下的CentOS版本,目前,CentOS仅发行版本中的内核支持Docker。Doc

  • docker容器端口冲突_docker web管理工具

    docker容器端口冲突_docker web管理工具COMMAND_FAILED:’/sbin/iptables-tnat-A Docker -ptcp-d0/0–dport8111-jDNAT–to-destination172.17.0.6:8111!-idocker0’failed:iptables:Nochain/target/matchbythatname.pk

  • docker项目经验_如何培育与指导部署

    docker项目经验_如何培育与指导部署每个人的前半生,都在不停地做加法。可到了后半生,我们就要学会不断地做减法。目录前置工作1、需要准备的东西2、连接云服务器安装Docker环境1、安装Docker的依赖库。2、添加DockerCE的软件源信息。3、安装DockerCE。4、启动Docker服务。准备Dockerfile并部署项目(构建新的业务镜像)1、准备nginx.conf.template、Dockerfile、dist(前端项目build后的包)2、部署项目知识点(需要…

    2022年10月19日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号