Docker学习笔记
一、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
解决方法:
编辑下图中的文件,增加红框中的一行数据
- 点赞
- 收藏
- 分享
- 文章举报
- docker学习笔记1---Centos7安装docker
- docker学习笔记1
- Docker学习笔记-Docker端口映射
- Docker 学习笔记
- docker学习笔记
- docker 学习笔记
- 2.docker学习笔记:制作docker镜像
- Docker学习笔记 — Compose简介、安装与简单使用
- Docker学习笔记一:理论
- Docker学习笔记 — 配置国内免费registry mirror
- docker学习笔记
- Docker学习笔记
- Docker学习笔记3:CentOS7下安装Docker-Compose
- Docker学习笔记
- Docker学习笔记
- Docker学习笔记 — Docker与LXC的区别
- Docker学习笔记(1)——基本概念
- 非常详细的 Docker 学习笔记
- docker学习笔记--重基础使用
- [Docker]Docker快速上手学习笔记