您的位置:首页 > 运维架构 > Docker

Docker学习笔记

2020-01-13 06:40 85 查看

一、Docker简介


Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

Docker应用场景:

  • Web 应用的自动化打包和发布
  • 自动化测试和持续集成、发布
  • 在服务型环境中部署和调整数据库或其他的后台应用

使用Docker可以实现开发人员的开发环境、测试人员的测试环境、运维人员的生产环境的一致性。

Docker容器与传统虚拟机比较

  • 传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(如:VirtualBox和VMWare等),创建虚拟机(虚拟出各种硬件),在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用。
  • Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。

Docker组成部分


Docker安装

安装

1、yum 包更新到最新
sudo yum update

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

3、 设置yum源
3.1、方案一:使用ustc的(推荐)
sudo yum-config-manager --add-repo http://mirrors.ustc.edu.cn/dockerce/
linux/centos/docker-ce.repo

3.2、方案二:使用阿里云(可能失败)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/
linux/centos/docker-ce.repo

4、 安装docker;出现输入的界面都按 y
sudo yum install -y docker-ce

5、 查看docker版本
docker -v

设置ustc镜像

ustc的docker镜像加速器速度很快,无需注册。https://lug.ustc.edu.cn/wiki/mirrors/help/docker

1、 编辑文件/etc/docker/daemon.json

2、在文件中加入下面内容

Docker启动与停止命令

Docker镜像相关命令

Docker镜像是由文件系统叠加而成(是一种文件的存储形式);是docker中的核心概念,可以认为镜像就是对某些运行环境或者软件打的包,用户可以从docker仓库中下载基础镜像到本地,比如开发人员可以从docker仓库拉取一个只包含centos7系统的基础镜像,然后在这个镜像中安装jdk、mysql、Tomcat和自己开发的应用,最后将这些环境打成一个新的镜像。开发人员将这个新的镜像提交给测试人员进行测试,测试人员只需要在测试环境下运行这个镜像就可以了,这样就可以保证开发人员的环境和测试人员的环境完全一致。
1、查看镜像
查看本机中存在的镜像

2、搜索镜像
可以从网络上搜索自己想要的镜像

3、拉取镜像
从Docker仓库中将自己想要的镜像下载到本地

4、删除镜像
可以按照镜像名称删除镜像

Docker容器相关命令

1、查看所有正在运行的容器

2、查看所有容器,包括未运行的

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

2)、守护式容器
创建一个守护式容器;如果对于一个需要长期运行的容器来说,可以创建一个守护式容器(创建容器后再进入容器)

4、停止、启动容器

5、删除容器
删除容器前要保证要删除的容器不是运行状态,否则会报错

6、文件复制
将文件从宿主机复制到容器、将容器中的文件复制到宿主机

7、目录挂载
可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
注意:如果共享的是多级的目录,可能会出现权限不足的提示。 这是因为CentOS7中的安全模块selinux把权限禁掉了,需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题。

8、查看容器ip
命令:docker inspect mycentos

Docker部署Mysql

1、拉取镜像
2、创建容器
docker run -di --name=mysql_localhost -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
3、进入容器
docker exec -it mysql_localhost /bin/bash
4、登录数据库

5、使用图形化工具连接数据库

Docker部署Redis

1、拉取镜像
docker pull redis
2、创建容器
docker run -di --name=redis_localhost -p 6379:6379 redis
3、进入容器并测试连接

4、使用redismanager图形化界面登录测试

Docker部署Tomcat

1、拉取镜像
docker pull tomcat
2、创建容器
docker run -di --name=tomcat_localhost -p 8080:8080 -e /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat
3、宿主机访问地址http://192.168.150.130:8080/可查看tomcat首页;也可以往/user/local/tomcat/webapps下部署应用,然后再访问

Docker部署Nginx

1、拉取镜像
docker pull nginx
2、创建容器
docker run -di --name=nginx_localhost -p 80:80 nginx
3、宿主机访问http://192.168.150.130:80/显示nginx欢迎页

迁移与备份

1、将Docker容器保存为镜像

2、镜像备份

3、镜像恢复与迁移
在执行docker load命令恢复镜像时,需要先删除原镜像。

  • 停止容器:docker stop nginx_localhost
  • 删除容器:docker rm nginx_localhost
  • 删除镜像:docker rmi nginx_backup
  • 加载备份:docker load -i nginx.tar
  • 创建容器:docker run -di --name=nginx_localhost -p 80:80 nginx_backup

Dockerfile文件

要获得镜像,可以从Docker仓库中进行下载。那如果我们开发一个镜像,急需要用Dockerfile。Dockerfile其实就是一个文本文件,由一系列命令和参数构成,Docker可以读取Dockerfile文件并根据Dockerfile文件的描述来构建镜像。Dockerfile文件内容一般分为4部分:

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时执行的指令

常用命令:

使用Dockerfile创建镜像:
1、创建目录:
mkdir –p /usr/local/dockerjdk8
cd /usr/local/dockerjdk8
2、上传jdk安装包到目录
3、创建Dockerfile文件
vi Dockerfile
4、编辑文件内容

FROM centos:7
MAINTAINER ZZY
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u202-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME /usr/local/java/jdk1.8.0_202
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

5、执行命令构建镜像
docker build -t=‘jdk1.8’ .
6、查看镜像是否创建成功
docker images

Docker私有仓库

Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,可以从上面拉取镜像到本地,也可以把自己的镜像推送上去。但是,有时候服务器无法访问互联网,或者不希望将自己的镜像放到公网当中,那就需要搭建自己的私有仓库来存储和管理自己的镜像。

私有仓库搭建步骤:
1、拉取镜像
docker pull registry
2、启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
3、访问地址http://192.168.150.130:5000/v2/_catalog,出现下面数据说明已经成功

4、修改daemon,json文件,让 docker 信任私有仓库地址

5、重启docker服务

将镜像上传到私有仓库:


再通过网址查看私有仓库情况:

从私有仓库拉取镜像:

其它服务器拉取私有仓库镜像:


在重启之后;那么则可以去拉取私有仓库中的镜像:

实际操作中遇到的问题

报错信息:warning:ipv4 forwarding is disable.networking will not work

解决方法:
编辑下图中的文件,增加红框中的一行数据

  • 点赞
  • 收藏
  • 分享
  • 文章举报
weixin_39936680 发布了7 篇原创文章 · 获赞 0 · 访问量 157 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: