docker的使用简介

目录

参考文件:

一、简介

0、沙箱机制

1、Docker架构

二、docker的安装

1、Ubuntu系统

2、CentOS系统

三、docker命令

3.1 关于镜像的操作

(1)镜像的搜索

(2)镜像下载

(3)查看本地镜像

(4)删除本地镜像

3.2 容器的基本操作

3.2.1> 查看容器命令

 

3.2.2> 创建与启动容器

3.2.3> 宿主机和容器之间的拷贝

3.2.4> 目录挂载

3.2.5> 查看容器IP地址

3.2.6> 删除容器

具体示例:

(1) 创建容器:

(2) 查看运行的容器

# 注意 同一个镜像可以assign到多个容器上

(3) 停止容器

(4) 重启容器

(5) 删除容器

3.3 容器的保存

(1)进入容器

(2)保存

3.4 对容器操作

(1)创建一个有端口映射的容器

四、使用docker-compose编排镜像

五、更换docker源

六,搭建靶机

【实列】进入要搭建的环境的目录查看yml文件

七、应用部署

7.1 MySQL部署

(1)拉取mysql镜像

(2)创建容器

(3)进去mysql容器

(4)登录mysql

(5)远程登录mysql

7.2 tomcat部署

(1)拉取镜像

(2)创建容器

7.3 Nginx部署

(1)拉取镜像

(2)创建Nginx容器

7.4 Redis部署

(1)拉取镜像

(2)创建容器

(3)远程连接CentOS容器中的redis

八、迁移与备份

8.1 容器保存为镜像

8.2 镜像备份

8.3 镜像恢复与迁移


参考文件:

https://mp.weixin.qq.com/s/IEa9DfUiep33G9PGKRe9KQ

https://mp.weixin.qq.com/s/lNU9CQ5heATDw1AuwDTQlg

https://blog.csdn.net/Z_Grant/article/details/101076012

参考视频:

https://www.bilibili.com/video/BV1jz411q7f4?p=7

目录

参考文件:

 

一、简介

0、沙箱机制

1、Docker架构

二、docker的安装

三、docker命令

3.1 关于镜像的操作

(1)镜像的搜索

(2)镜像下载

(3)查看本地镜像

(4)删除本地镜像

3.2 容器的基本操作

3.2.1> 查看容器命令

 

3.2.2> 创建与启动容器

3.2.3> 创建与启动容器

3.2.4> 目录挂载

3.2.5> 查看容器IP地址

3.2.6> 删除容器

具体示例:

(1) 创建容器:

(2) 查看运行的容器

# 注意 同一个镜像可以assign到多个容器上

(3) 停止容器

(4) 重启容器

(5) 删除容器

3.3 容器的保存

(1)进入容器

(2)保存

3.4 对容器操作

(1)创建一个有端口映射的容器

四、使用docker-compose编排镜像

五、更换docker源

六,搭建靶机

【实列】进入要搭建的环境的目录查看yml文件


一、简介

0、沙箱机制

沙箱机制

  • 1.沙箱是一个虚拟系统程序,沙箱提供的环境相对于每一个运行的程序都是独立的,而且不会对现有的系统产生影响.
  • 2.沙箱具有非常良好的独立性、隔离性,所以能够搭建一些具有高风险的软件进行测试.

1、Docker架构

1.1> Docker包括三个基本概念 :镜像(Image)、容器(Container)、仓库(Respository)

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。

1.2> 容器与镜像的关系类似于面向对象编程中的对象与类。

Docker面向对象
容器对象
镜像

如图所示:

概念说明

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

Docker 容器(Container)

容器是独立运行的一个或一组应用,是镜像运行时的实体。

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker Registry

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

  

 

二、docker的安装

1、Ubuntu系统

#先下载python(最好先换源)
sudo apt install python3

#安装pip
sudo apt install python3-pip

#安装docker
sudo apt-get install docker.io
#创建软连接
sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
#下载docker-compose
sudo apt  install docker-compose

#开启docker
sudo systemctl start docker.service
sudo systemctl start docker.socket

2、CentOS系统

直接挂载课程配套的CentOS7.x镜像

# yum包更新到最新
sudo yum update

# 安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动驱动依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 设置yum源为aliyun
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


# 安装docker
sudo yum install docker-ce

# 安装后查看docker版本
docker -v


设置ustc的镜像

# ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共的服务。

https://lug.ustc.edu.cn/wikl/mirrors/help/docker

# 编辑文件
vi /etc/docker/daemon.json

# 在该文件中输入如下内容:
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}


# 启动docker服务
systemctl start docker

# 查看状态
 systemctl status docker

三、docker命令

 当前docker版本信息查询

$ docker version

3.1 关于镜像的操作

(1)镜像的搜索

$ docker  search  XXXX

(2)镜像下载

$ docker  pull  XXXX

(3)查看本地镜像

$ docker images

(4)删除本地镜像

 $ docker  rmi  镜像名 

3.2 容器的基本操作

3.2.1> 查看容器命令

# 查看正在运行的容器

$ sudo docker ps

 

# 查看所有容器

$ sudo docker ps -a

 

# 查看最后一次运行的容器

$ sudo docker ps -l

 

# 查看停止的容器

$ sudo docker ps -f status=exited

 

3.2.2> 创建与启动容器

创建容器常用的参数说明:

创建容器命令:

$ sudo docker run
  • -i:表示运行容器
  • -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
  • --name:为创建的容器命名
  • -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机的目录)。可以使用多个 -v 做多个目录或文件映射。注意:最好做目录映射,在宿主上做修改,然后共享到容器上。
  • -d:在run后边加上 -d 参数,则会创建一个守护容器在后台运行(这样创建容以后不会自动登录容器,如果只加 -i -t两个参数,创建后就会自动进入容器)。
  • -p:端口映射,前者是宿主机端口,后者为容器内的映射端口。可以多喝 -p 做多个端口映射。

# 交互式方式创建容器:

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

 

注意:这时我们通过ps命令查看,发现看到的启动的容器,状态为启动状态

# 退出当前容器:

命令:exit

 

# 守护式方式创建容器:

$ docker run -di --name=容器名称 镜像名称:标签

 

# 登录守护式容器方式:

$ docker exec -it 容器名称(或者容器ID) /bin/bash

 

3.2.3> 宿主机和容器之间的拷贝

如果我们需要将文件拷贝到容器内可以使用cp命令(不管你的容器是停止,还是运行的都可以进行拷贝)

$ sudo docker cp 需要拷贝的文件或目录 容器名称:容器目录

 

也可以将文件从容器内拷贝宿主机上

$ sudo docker cp 容器名称:容器目录 需要拷贝的文件或目录

 

3.2.4> 目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。

创建容器 添加 -v 参数 后边为 宿主机:容器目录,例如

$ sudo docker -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7

 

如果你共享的是多级目录,可能会出现权限不足的提示。

这个因为CentOS中的安全模式selinux把权限禁止了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题。

 

3.2.5> 查看容器IP地址

我们可以通过以下命令查看容器运行的各种数据:

$ sudo docker inspect 容器名称(容器ID)

 

也可以直接执行下面的命令直接输出IP地址:

$ sudo docker inspect --format='{{.NetworkSettings.IPSddress}}' 容器名称(容器ID)

 

3.2.6> 删除容器

删除指定容器:

$ sudo docker rm 容器名称(容器ID)

================================================================================================

================================================================================================

================================================================================================

 

具体示例:

(1) 创建容器:

$ docker run -itd --nane=指定容器的名称 使用的镜像名

-i:表示以交互模式运行容器
-d:表示后台运行容器,并返回容器ID
-t:为容器重新分配一个伪输入终端;

(2) 查看运行的容器

$ sudo docker ps


# 注意 同一个镜像可以assign到多个容器上


(3) 停止容器

$ docker stop 容器名/容器ID

 

(4) 重启容器

$ docker restart 容器名/容器ID

 

(5) 删除容器

$ docker rm 容器名/容器ID

 

3.3 容器的保存

(1)进入容器

docker exec -it 容器名/容器ID /bin/bash

 

(2)保存

对通过同一镜像创建的不同容器,操作之后,可以保存为一个新的镜像

3.4 对容器操作

------端口映射

(1)创建一个有端口映射的容器

$ docker run -itd -p 宿主机端口:容器端口 镜像名

 

 

访问宿主机的90端口就是nginx喽

四、使用docker-compose编排镜像

docker 提供了一个命令行工具 docker-compose 帮助完成镜像的编排, 要使用 docker-compose , 需要先编写一个 docker-compose.yml 文件, yaml 是一种常用配置文件格


 

yml :是一个可读性高,用来表达数据序列的格式

参考文献:docker-compose详解


五、更换docker源


由于本来的源太慢了。。。。。,使用阿里的加速源。【容器镜像服务】

  • 登录之后,提供一个URL

配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户

通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

六,搭建靶机

两个开源的项目:

【vulhub靶机说明:】

# 进入某一个漏洞/环境的目录
cd flask/ssti

# 自动化编译环境
docker-compose build

# 启动整个环境
docker-compose up -d

#每个环境目录下都有相应的说明文件,请阅读该文件,进行漏洞/环境测试。

#测试完成后,删除整个环境
docker-compose down -v

【实列】
进入要搭建的环境的目录查看yml文件

使用docker-compose build 编译环境,然后启动环境

 

yang@yang-machine:~/baji/vulhub-master/joomla/CVE-2017-8917$ sudo docker-compose up -d
Pulling mysql (mysql:5)...
5: Pulling from library/mysql
8f91359f1fff: Pull complete
6bbb1c853362: Pull complete
e6e554c0af6f: Pull complete
f391c1a77330: Pull complete
414a8a88eabc: Pull complete
fee78658f4dd: Pull complete
9568f6bff01b: Pull complete
76041efb6f83: Pull complete
ea54dbd83183: Pull complete
566857d8f022: Pull complete
01c09495c6e7: Pull complete
Digest: sha256:f7985e36c668bb862a0e506f4ef9acdd1254cdf690469816f99633898895f7fa
Status: Downloaded newer image for mysql:5
Pulling web (vulhub/joomla:3.7.0)...
3.7.0: Pulling from vulhub/joomla
5e6ec7f28fb7: Pull complete
cf165947b5b7: Pull complete
7bd37682846d: Pull complete
99daf8e838e1: Pull complete
ae320713efba: Pull complete
ebcb99c48d8c: Pull complete
9867e71b4ab6: Pull complete
936eb418164a: Pull complete
bc298e7adaf7: Pull complete
ccd61b587bcd: Pull complete
b2d4b347f67c: Pull complete
56e9dde34152: Pull complete
9ad99b17eb78: Pull complete
f0b49b0a34a7: Pull complete
bc8d2ddd1ca2: Pull complete
cc87e0e6b730: Pull complete
80c164075256: Pull complete
1bb70ad75826: Pull complete
b30d9e1dab0d: Pull complete
c7e4f22b689f: Pull complete
5093ee2098f3: Pull complete
Digest: sha256:8b38262a5bfd3e8f56415e369c0970a736e31d1138fb9fe0343f88435d43574d
Status: Downloaded newer image for vulhub/joomla:3.7.0
Creating cve20178917_mysql_1 ... 
Creating cve20178917_mysql_1 ... done
Creating cve20178917_web_1 ... 
Creating cve20178917_web_1 ... done
yang@yang-machine:~/baji/vulhub-master/joomla/CVE-2017-8917$ 

查看是否成功启动

访问测试是否成功

测试完成后,删除整个环境

$ docker-compose down -v
$ sudo docker rmi 镜像ID

参考文献:

https://blog.csdn.net/Z_Grant/article/details/101076012

https://mp.weixin.qq.com/s/IEa9DfUiep33G9PGKRe9KQ

https://mp.weixin.qq.com/s/lNU9CQ5heATDw1AuwDTQlg

七、应用部署

7.1 MySQL部署

参考视频:https://www.bilibili.com/video/BV1jz411q7f4?p=11

(1)拉取mysql镜像

$ sudo docker pull centos/mysql-57-centos7 

(2)创建容器

$ sudo docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=ROOT centos/mysql-57-centos7
  • -p:代表端口映射,格式为 :宿主机映射端口:容器运行端口
  • -e:代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登录密码

(3)进去mysql容器

$ sudo docker exec -it tensquare_mysql /bin/bash 

 

(4)登录mysql

$ sudo mysql -u root -p

(5)远程登录mysql

连接宿主机的IP,指定端口为33306

7.2 tomcat部署

参考视频:https://www.bilibili.com/video/BV1jz411q7f4?p=12

(1)拉取镜像

$ sudo docker pull tomcat:7-jre7

(2)创建容器

创建容器 -p 表示地址映射

$ sudo docker run -di --name=mytomcat -p 9000:8000 -v /usr/local/webapps:/usr/loacl/tomcat/webapps tomcat:7-jre7

7.3 Nginx部署

参考视频:https://www.bilibili.com/video/BV1jz411q7f4?p=13

(1)拉取镜像

$ sudo docker pull nginx

(2)创建Nginx容器

$ sudo docker run -di --name=mynginx -p 80:80 nginx

7.4 Redis部署

参考视频:https://www.bilibili.com/video/BV1jz411q7f4?p=14

(1)拉取镜像

$ sudo docker pull redis

(2)创建容器

$ sudo docker run -di --name=myredis -p 6375:6375 redis

(3)远程连接CentOS容器中的redis

八、迁移与备份

8.1 容器保存为镜像

我们可以通过以下命令将容器保存为镜像

这样可以将已经部署好的容器保存为镜像,方便已经配置好环境的移植。

$ docker commit 容器名称 镜像名称

8.2 镜像备份

我们可以通过以下命令将镜像保存为tar文件

$ docker save -o 要保存的tar文件 镜像

8.3 镜像恢复与迁移

首先我们先删除mynginx_img镜像,然后执行此命令进行恢复

 $ docker load -i mynginx.tar 

-i:输入文件

执行后再次查看镜像,可以看到镜像已经恢复了

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值