Docker笔记

1,Docker简介

        Docker是一个用于创建、管理和编排容器的工具软件。Docker的出现,彻底改变了开发者和运维人员“构建、交付和运行(build,ship and run)”应用的方式。

1,应用容器化(在容器中运行应用程序)

        Docker的核心功能是将应用整合到容器中运行,通过容器,实现了应用进程与底层系统的隔离,同时对不同的应用进程也实现了隔离。将应用整合到容器中并且运行起来的这个过程,称为“容器化”(Containerizing)。使用容器的目的是简化应用的构建、部署和运行过程。

容器技术能够提供的功能如下:

1、隔离不同的应用,解决环境冲突,避免互相影响。

2、能够快速、可靠、一致地部署应用程序,不受部署环境的影响。

3、多个容器运行在一台宿主机上,共享硬件和操作系统资源,提高了基础设施的利用率。

2, 容器和虚拟机的区别

虚拟机(如VMware)是在宿主操作系统上通过软件虚拟了另外一台主机硬件,然后安装相应的操作系统。

    我们可以通过虚拟机软件虚拟出多台主机,分别安装不同的操作系统。每个虚拟机中都是一套完整的用户操作系统。

    容器技术也能给用户虚拟出多个相对独立的操作系统,但容器并不是模拟完整的操作系统,而是采用隔离的进程,在进程的外面加了一个保护层。

    对于容器里面的应用进程来说,它接触到的是容器提供的各种虚拟资源,实现了与底层系统的隔离。

    容器和虚拟机技术最主要区别是:容器并不是虚拟了完整的操作系统,而是共享宿主机硬件资源及操作系统。

    在宿主机操作系统中,每个容器对应一个独立的进程。

    每个容器中可以包含不同的应用及其依赖的运行环境(配置,软件,库等)。

Docker和虚拟机的区别示意图:

Docker相对于虚拟机的优缺点:

优点:

1、docker 容器的启动非常快(秒级别),虚拟机则通常需要几分钟启动。 

2、Docker容器运行效率高,性能优于传统虚拟机。

3、docker 更轻量,占用系统资源非常少,同样的硬件环境,可运行的 docker 容器数量远多于虚拟机数量。

下面这张表格是docker相比于传统虚拟机的优势:

特性

docker

VM

启动

秒级

分钟级

硬盘占用

一般为MB

一般为GB

性能

接近原生环境

弱于原生环境

系统支持量

单机支持上千个容器

一般是几十个

缺点:

1、docker 隔离性比较弱, docker 属于进程之间的隔离,而虚拟机则是系统级别的隔离。

2、docker 的安全性也较弱。 docker 容器中的 root用户 和宿主机 root用户等同,可进行无限制的操作。而虚拟机中的root 权限和宿主机中的 管理员不是一回事。

2,Docker的安装和使用

1,环境准备

Docker CE 需要64位版本的CentOS 7,并且内核版本不低于3.10。查看内核版本的命令:

 uname -a

 查看是否已经安装了Docker:

yum  list  installed | grep  docker

rpm -qa | grep  docker

要卸载旧版本的 Docker,可使用如下命令:

 yum  -y  remove  docker  docker-common  docker-selinux   docker-engine

2,在线安装 

1,安装yum-utils包,它提供了yum-config-manager 工具:

yum  -y  install  yum-utils  device-mapper-persistent-data  lvm2

2, 通过yum-config-manager 添加阿里云仓库(该仓库中有docker-ce软件包):

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

3, 更新yum缓存

 yum makecache  fast

4, 安装最新版的docker-ce引擎以及containerd:

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

5, 安装之后会创建 docker 组,但该组中没有添加任何用户。可以将普通用户加入到docker组,该用户后续不用加sudo就可以执行docker相关命令。

 usermod -aG docker  ${USER}

6, 启动Docker:

systemctl start docker

systemctl enable docker  #启动电脑后,docker服务自启动

3,离线安装 

1,下载Docker CE的.rpm 文件:

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 

2, 安装Docker CE,按如下顺序安装各个rpm包:

rpm -ivh  containerd.io-1.2.6-3.3.el7.x86_64.rpm

rpm -ivh  docker-ce-cli-19.03.9-3.el7.x86_64.rpm

rpm -ivh  docker-ce-19.03.9-3.el7.x86_64.rpm

3,启动Docker:

systemctl  start  docker

4,验证是否安装成功

四选一命令

docker -v

docker --version

docker version

docker info

3, Docker架构

Docker 采用的是 C/S 结构,即客户端/服务器体系结构。用户需要借助Docker  Client(客户端)与 Docker daemon(服务端) 交互,如下图所示:

启动Docker daemon:

# systemctl  start  docker

如果希望机器重启后能自动启动docker服务,则执行如下命令:

# systemctl  enable  docker

提示:docker daemon启动后要绑定到一个Unix Socket上以便能够进行跨进程通信,默认的,该Unix Socket为root用户所有,因此,docker daemon总是以root用户运行。

普通用户每次执行Docker命令时也要使用sudo以便有权访问该Unix Socket。如果嫌每次都使用sudo命令太麻烦,可将该用户添加到docker组中:

# usermod -aG docker $USER

1,镜像、容器和仓库

1,Image (镜像)

        镜像是一个只读文件,基于镜像可以创建和启动容器,镜像可以被看作是容器的定义文件(容器说明书或清单)。

2,Container (容器)

容器是基于镜像所启动的一个独立的运行环境。容器的实质是进程,与直接在宿主系统上运行的进程不同,容器中的进程受Docker管理。就是一个简易的 Linux系统

3,Registry (注册中心/远程镜像仓库)和Repository (仓库)

Registry是用来存储、分发镜像的服务器。一个Registry上会有很多个仓库(Repository),每个仓库中包含同一个软件不同版本的镜像。一般使用 <仓库名>:<标签> 格式来表示某个软件特定版本的镜像。当我们执行docker pushdocker pulldocker search命令时,实际上是请求 Docker daemon 与 Docker Registry进行通信,完成相应的操作。

4,Docker常用命令

1,帮助命令

docker version ----------显示docker的版本信息。

docker info ----------显示docker的系统信息,包括镜像和容器的数量

docker 命令 --help ---------帮助命令

 2,镜像命令

docker images---------查看本地镜像仓库中所有的镜像

docker pull <镜像名称:TAG>----------拉取镜像

docker rmi -f <镜像名称:TAG>或镜像ID-----------删除单个镜像

docker images -q--------------获取所有镜像的id

docker rmi -f $(docker images -q)-----------删除所有镜像

docker save -o xxx.tar <镜像名称:TAG>或镜像ID--------------制作本地的镜像tar文件

docker load -i xxx.tar---------------使用本地镜像tar文件载入镜像

3,Docker容器命令

docker ps -a-----------列出所有容器

docker start 容器名/容器ID-----------启动容器

docker stop 容器名/容器ID------------停止容器

docker rm -f 容器名/容器ID------------删除单个容器

docker rm -f $(docker ps -aq)---------删除所有容器

4,Docker启动命令 

docker run [选项] image----------启动镜像容器

其中选项有:

--name ------------设置容器名称,容器名称不能冲突

--rm ------------容器关闭后,自动删除容器文件

-it ----------用于和容器进行交互

-d--------- 以后模式运行容器,当前终端会断开和容器的连接,可以使用docker attach进行连接。

-p [主机端口:容器端口]----------端口映射

-v -----------目录映射

-e------------ 设置环境变量

exit --------- 直接容器停止并退出

Ctrl + P + Q ------------- 容器不停止退出

 5,进入容器命令

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

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

docker 容器id:/home/xxx.java /home--------在主机上 拷贝 centos 容器 /home 目录下xxx.java 文件 到主机 /home 目录

5, 数据卷和绑定挂载

        如果希望容器中的应用产生的数据不会随着容器的删除而消失,可以使用数据卷和绑定挂载。数据卷(Volumes)和绑定挂载(Bind Mounts)都是在启动容器是通过-v参数进行配置。

1,绑定挂载

绑定挂载(Bind Mounts)是在容器启动时,直接指定宿主机上的某个目录挂载到容器内特定的目录上,这样容器内针对特定目录下的文件操作就相当于操作宿主机上的指定目录,绑定挂载也称为“目录映射”或“文件映射”。

格式:-v  hostDir:containerDir

     宿主机上的目录如果不存在,Docker会自动创建。

     容器内的目录必须使用绝对路径。

# docker run --name fedora3 -it -v ~/data:/root/data fedora

注意:-v会自动创建data目录,不用手动创建

2,数据卷

创建数据卷:

# docker volume create nginx_pages   说明:数据卷默认保存在/var/lib/docker/volumes

查看数据卷:

# docker volume ls

启动容器使用数据卷:(如果nginx_pages这个卷不存在,则该命令会自动创建)

# docker run --name nginx01 -dit -p 8080:80 -v nginx_pages:/usr/share/nginx/html nginx

使用匿名卷:

# docker run --name nginx02 -dit -p 8080:80 -v /usr/share/nginx/html nginx

3,绑定挂载和数据卷的区别

1,绑定挂载可以是宿主机上的任何目录,Docker之外的进程也可以对其进行修改。而数据卷对应的目录则完全由Docker进行管理(/var/lib/docker/volumes),用户通过docker volume命令进行操纵。

2,绑定挂载不能通过docker volumes ls进行查看。

3,如果数据卷中初始没有文件,容器启动时Docker会自动将容器内目录下的文件拷贝到卷目录下,以后再次启动容器就使用卷中已有的文件了;绑定挂载时Docker不会将容器内目录下的文件拷贝到宿主机目录,需要手动给宿主机目录下放置文件。

因此,绑定挂载通常用来保存容器在运行过程中输出的数据。

4,环境变量

1,创建mysql数据卷

docker volume create mysql_conf

2,启动mysql容器

docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=root -p 3308:3306 -v mysql_conf:/etc/mysql mysql:8.0

3, 使用sqlyog连接mysql容器时,远程访问报1521错误

4,解决1521错误:修改mysql配置文件

进入到/var/lib/docker/volumes/mysql_conf数据卷/_data/my.cnf添加配置:

default_authentication_plugin=mysql_native_password

5, 重新启动一个mysql容器

docker run --name mysql02 -e MYSQL_ROOT_PASSWORD=root -p 3309:3306 -v mysql_conf:/etc/mysql mysql:8.0

6,连接测试 

 

安装tomcat 注意:

进入容器中的:/usr/local/tomcat中执行cp -r webapps.dist/* webapps才可以访问tomcat

6,制作自己的镜像

使用docker build命令生成镜像,编写Dockerfile文件

1,基于centos:7创建一个镜像

1,创建工作目录my_image1

 mkdir my_image1

2,镜像添加jdk

cp  jdk-11.0.2_linux-x64_bin.tar.gz my_image1/

3,复制springboot文件jar包 

4, 在my_imag1下创建Dockerfile文件,编写内容

FROM centos:7

ADD jdk-8u221-linux-x64.tar.gz  /opt----------添加jdk

WORKDIR /opt----------设置当前工作目录

RUN mv jdk1.8.0_221 jdk8----------重命名jdk

ENV JAVA_HOME /opt/jdk8----------jdk环境配置

ENV PATH $JAVA_HOME/bin:$PATH----------jdk环境配置

COPY springboot-demo-0.0.1-SNAPSHOT.jar .----------复制项目jar包

EXPOSE 8080----------公开容器中的端口

VOLUME ["/root/data"]----------容器内部的 /root/data 目录映射到本地的一个目录

CMD ["java","-jar","springboot-demo-0.0.1-SNAPSHOT.jar"]---------- Docker 在运行容器时,使用 "java" 命令启动一个 Java 进程,并运行

5, 创建镜像

docker build -t my_centos:1.0 .

6, 启动容器

docker run --name centos01 -it -p 8080:8080 my_centos:1.0

7,从阿里云镜像仓库上传和下载镜像

1,将镜像推送到Registry

2, 从Registry中拉取镜像

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要下载Docker笔记,首先需要了解Docker是什么以及其使用场景。 Docker是一种开源的容器化平台,可以帮助用户打包、部署和运行应用程序。通过使用容器化技术,用户无需担心运行环境的差异,可以将应用程序和其依赖项打包到一个可移植的容器中,随时在不同的环境中运行。 要下载Docker笔记,可以按照以下几个步骤进行操作: 1. 首先,需要在计算机上安装Docker。可以从Docker官方网站(https://www.docker.com/)上下载适合自己操作系统的Docker安装包,并按照安装指南进行安装。 2. 安装完成后,需要启动Docker服务。根据操作系统的不同,可以在启动菜单或终端中找到Docker应用程序,并点击打开。在Docker控制台中,可以查看、管理容器以及进行其他操作。 3. 接下来,需要搜索并下载Docker笔记的镜像。可以使用Docker Hub(https://hub.docker.com/)这个官方的镜像仓库,搜索关键词以找到合适的笔记镜像。在搜索结果中,会显示镜像的名称、描述、标签等信息,选择一个合适的镜像。 4. 找到想要下载的笔记镜像后,可以使用Docker命令行工具或Docker控制台中的图形界面来下载镜像。通过输入命令`docker pull 镜像名称:标签`,即可下载对应的笔记镜像到本地。 5. 下载完成后,可以使用`docker images`命令在本地查看已下载的镜像列表。根据下载的笔记镜像的名称和标签,可以使用`docker run`命令来创建并启动一个容器,从而运行笔记。 通过以上步骤,就可以成功下载Docker笔记并在本地运行。希望这些信息对您有帮助! ### 回答2: 要下载Docker笔记,首先需要知道从哪里获取这些笔记Docker有一个官方文档网站,其中包含了大量关于Docker的技术文档、教程和示例以及各种使用场景的说明。用户可以访问Docker官方网站,在文档部分进行浏览和搜索,找到所需的笔记。 在Docker官方文档网站上,用户可以按照主题、标签或关键字进行检索,以找到相关的笔记。网站还提供了各种文件格式的下载选项,包括PDF、EPUB和HTML版本,用户可以根据自己的使用习惯选择适合的格式进行下载。 此外,还有一些第三方资源库和网站提供了Docker相关的笔记下载。例如GitHub上有很多开源项目,其中包含了Docker的使用笔记和示例代码。用户可以通过在GitHub上搜索关键字"Docker笔记"或"Docker notes"来找到相关的项目,然后根据项目的说明进行下载。 总之,下载Docker笔记可以通过Docker官方文档网站或第三方资源库进行。用户可以根据自己的需求和偏好选择下载适合自己的格式和来源。 ### 回答3: 要下载 Docker 笔记,首先需要确保已经安装了 Docker 客户端工具。然后按照以下步骤进行下载: 1. 打开终端或命令提示符,输入以下命令来下载 Docker 笔记Docker 镜像: ``` docker pull [镜像名称] ``` 这里的 `[镜像名称]` 是 Docker Hub 上提供的 Docker 镜像名称,可以根据需要搜索并选择合适的镜像。 2. 等待镜像下载完成后,使用以下命令来创建和运行一个 Docker 容器,并将笔记下载到本地: ``` docker run -it --name [容器名称] [镜像名称] [下载命令] ``` 这里的 `[容器名称]` 是用于标识容器的名称,`[下载命令]` 是具体的下载命令,可以根据下载方式的不同进行相应的设置。 3. 等待下载完成后,可以使用以下命令来停止并删除容器: ``` docker stop [容器名称] docker rm [容器名称] ``` 这里的 `[容器名称]` 是之前创建容器时指定的名称。 通过以上步骤,你就可以成功下载 Docker 笔记到本地了。记得根据实际需求选择适合的 Docker 镜像和下载命令,同时也可以通过 Docker Hub 上的文档和社区提供的资源,了解更多有关 Docker 的使用方法和技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hbb123654

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值