docker笔记

Docker

一、Docker简介

1.1 什么是 Docker

Docker 是一个开源的应用容器引擎。Docker 的主要目标是“Build,Ship and Run Any App,Anywhere”,通过对应应用组件的封装、发布、部署、运行等生命周期的管理,使用户的 APP 以及其运行环境能够做到“一次封装,到处运行”

Docker应用场景

  1. Web 应用的自动化打包和发布
  2. 自动化测试和持续集成、发布
  3. 在服务型环境中部署和调整数据库或其他的后头应用
1.2 Docker 组件

Docker 是一个客户端-服务端(C/S)架构程序。Docker客户端只需要向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker提供了一个命令行工具Docker以及一整套RESTful API。你可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。

名称说明
Docker 镜像(Images)Docker 镜像是用于创建 Docker 容器的模板。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来
Docker 容器(Container)容器是独立运行的一个或一组应用。
Docker 客户端Docker 客户端通过命令行或其他工具使用 Docker API 与 Docker 的守护进程通信
Docker 主机(Host)一个物理或虚拟的机器用于执行 Docker 守护进程和容器
Docker 守护进程是 Docker 服务器端进程,负责支撑
Docker 仓库DockerHub(Registry)Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub 提供了庞大的镜像集合供使用。用户可以将自己本地的镜像推送到 Docker 仓库供其他人下载

镜像和容器的关系:就像面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

二、Docker 安装与启动

2.1 安装 Docker
  1. yum 包更新到最新

    sudo yum update
    
  2. 安装需要的软件包

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
  3. 设置 yum 源为阿里云

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  4. 安装 Docker

    sudo yum install docker-ce
    
  5. 安装后产看 Docker 版本

    docker -v
    
2.2 设置 ustc 的镜像

​ ustc 的 docker 镜像加速器很快。ustc docker mirror 的优势之一就是不需要注册,是真正的公共服务

​ 编辑该文件:vi /etc/docker/daemon.json

​ 在该文件下输入如下内容:

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

​ 保存退出esc 然后:wq

2.3 Docker 的启动与停止

​ systemctl 命令是系统服务管理器指令

​ 启动 docker:

systemctl start docker

​ 停止docker:

systemctl stop docker

​ 重启docker:

systemctl restart docker

​ 查看 docker状态

systemctl status docker

​ 开机启动:

systemctl enable docker

​ 查看 docker 概要信息

docker info

​ 查看 docker 帮助文档

docker --help

​ 指令介绍:

cp:本地文件系统(OS操作系统|宿主机)和容器之间进行文件或者文件夹拷贝
exec:登录一个容器,使用命令行操作正在运行的容器。
images:镜像的集合查询。
ps:容器列表
pull:下载镜像
restart:重启一个或多个容器
rm:删除一个或多个容器
rmi:删除一个或多个镜像
run:创建一个容器,并运行起来
save:导出镜像到一个文件(tar)中
search:搜索镜像(从Docker Hub)
start:启动一个或多个已经停止的容器
restart:重启动一个或多个已经停止的容器
stop:停止一个或多个正在运行的容器

三、常用命令

3.1.1 查看镜像
docker images

在这里插入图片描述

REPOSITORY:镜像名称

TAG:镜像标签

IMAGE ID:镜像ID

CREATED:镜像的创建日期(不是获取该镜像的日期)

SIZE:镜像大小

这些镜像都是存储在Docker的 /var/lib/docker 目录下

3.1.2 搜索镜像

如果你需要从网络中查找需要的镜像,可以通过以下命令搜索

docker search 镜像名称
# 比如 docker search nginx

NAME:仓库名称

DESCRIPTION:镜像描述

STARS:用户评价,反应一个镜像的受欢迎程度

OFFICIAL:是否官方

AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

3.1.3 拉取镜像

从docker 仓库下载镜像到本地,镜像名称格式为 名称:版本号 ,如果不指定版本号,就会下载最新版

docker pull 镜像名称
# docker pull centos:7
3.1.4 删除镜像

按镜像 ID 删除镜像

docker rm 镜像ID

删除所有镜像

docker rmi 'docker images -q'
3.2 容器相关命令

容器,是 docker 中的核心概念,镜像是创建容器的软件,容器是由镜像运行产生实例。镜像和容器的关系,就如同 Java 语言中类和对象的关系

容器存放的东西可能更偏向于应用比如网站、程序甚至是系统环境

查看正在运行的容器

docker ps

查看所有容器

docker ps -a

查看最后一次运行的容器

docker ps -l

查看停止的容器

docker ps -f status=exited
3.2.2 创建与启动容器

创建容器:docker run

参数说明

-i:表示运行容器

-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

--name :为创建的容器命名。

-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。

-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

交互式方式创建容器

以交互式方式创建并启动容器,启动完成后,直接进入当前容器。使用exit命令退出容器。需要注意的是以此种方式启动容器,如果退出容器,则容器会进入停止状态。可以理解成交互式容器 是前台容器。

docker run -it --name=容器名称 镜像名称:标签 /bin/bash

# 比如:docker run -it --name=mycentos centos:7 /bin/bash

# docker run:表示创建容器

# -it:表示运行容器并进入它的命令行

# --name=mycentos:给当前的容器命名

# centos:7:使用该镜像创建

# /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash

创建容器

docker run -it --name=mycentos centos:7 /bin/bash

在这里插入图片描述

创建好容器,并且已经进入到容器内部了,可以直接观察前面中括号里面的内容发现,跟创建容器之前不一样了,

在这里插入图片描述

并且 通过 dir 命令,会发现,其实容器内部也是一个 centos , 我们可以把每个容器都看成一个小电脑或者服务器

在这里插入图片描述

重新开一个新的会话,查看刚刚创建的容器是否已经有了。

退出当前容器

退出之后,容器也就退出了,没有删除

创建后台容器

docker run -id --name=mecentos90 centos:7

在这里插入图片描述

查看 docker 容器已经运行

在这里插入图片描述

守护式方式创建容器:

创建一个守护式容器;如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复):守护容器可以理解成在后台运行的容器

# 守护式容器和交互式容器的创建方式区别:
# ① -it 换成 -di
# ② 去掉后面的 /bin/bash
docker run -di --name=容器名称 镜像名称:标签
# 比如:docker run -di --name=mycentos10 centos:7

在这里插入图片描述

通过 docker ps 查看容器已经是运行状态

在这里插入图片描述

进入守护式容器方式:

docker exec -it 容器名称(或容器ID) /bin/bash
# 比如 docker exec -it mycentos88 /bin/bash

在这里插入图片描述

已经进入到容器内部了,如果现在退出,然后查看容器是否还在后台运行

在这里插入图片描述

3.2.3 停止与启动容器
docker stop 容器名称(或容器ID)
# 比如: docker stop mycentos88

在这里插入图片描述

查看容器是否已经停止

docker ps
3.2.4 文件拷贝

​ 我们需要在容器内安装一个软件,软件首先需要有安装包,我们就需要把安装包拷贝到容器内。我们通常的操作是先把文件上传到宿主机,然后我们在将文件从宿主机拷贝到容器内的某个目录下面进行安装。

如果我们需要将文件拷贝到容器内使用可以使用 cp 命令

docker cp 需要拷贝的文件或目录 容器名称:容器目录
# docker cp anaconda-ks.cfg mycentos88:/usr/local

也可以从容器中把问价拷贝到当前目录

docker cp mycentos88:/usr/local/anaconda-ks.cfg ./
3.2.5 目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
创建容器 添加-v参数 后边为 宿主机目录:容器目录,例如:

# 创建并启动容器,并挂在到linux中的/usr/local/myhtml 目录到容器的 /usr/local/myhtml 中,也就是操作linux中/usr/local/myhtml就相对与操作容器
docker run -di --name=容器名称 -v /usr/local/myhtml:/usr/local/myhtml centos:7

可以通过在linux目录中创建文件,再到容器中查看是否有该文件完成测试

3.2.6 查看容器 IP 地址
# docker inspect 容器名称(或容器ID)
docker imspect mycentos88

在这里插入图片描述

3.2.7 删除容器
# docker rm 容器名称(或容器ID)
docker rm mycentos88

删除容器的时候,如果容器在运行,会报错,必须先停止容器

docker stop mycentos88

docker rm mycentos88

四、应用部署

4.1 mysql 部署
# 拉取mysql镜像
docker pull centos/mysql-57-centos7
# 创建容器
docker run -di --name=mysql5.7 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7
#-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
#-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户远程登陆密码

通过window的sqlyog进行连接,ip地址为虚拟机的ip地址,端口为33306

进行测试连接

4.2 tomcat部署
# 拉取镜像
docker pull tomcat:7-jre7
# 创建容器
docker run -di --name=mytoncat -p 9000:8080 -v/usr/local/webapps:/usr/local/webapps tomcat:7-jre7

本地的war包,上传到 linux 中的/usr/local/webapps 中

在 window 端,访问:http://192.168.43.128:9000/dubbo-admin-2.6.0/

访问成功即部署成功

4.3 nginx 部署
# 拉取镜像
docker pull nginx
# 创建容器
docker run -di --name=mynginx -p 80:80 nginx

部署完成,window访问:192.168.43.128即部署成功

4.4 redis 部署
# 拉取镜像
docker pull redis
# 创建容器
docker run -di --name=myredis -p 6379:6379 redis

在window中,使用redis客户端连接

redis-cli -h 192.168.43.128

连接成功即部署成功

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值