为什么有Docker
- 将一整套环境打包封装成镜像,无需重复配置环境,解决环境带来的种种问题。
- Docker容器间是进程隔离的,谁也不会影响谁。
- 相较于传统的VM虚拟化方法,Docker的好处是启动速度快,资源利用率高,性能开销小。
Docker中的概念
- 镜像(Image) :Docker 镜像(Image),就相当于是一个ISO文件系统。比如Centos官方镜像 CentOS-7-x86_64-DVD-2009.iso就包含一个完整的 centos 操作系统环境。
- 容器(Container) :镜像(Image)和容器(Container)的关系,就像是java面向对象程序设计中的类和实例一样,镜像是类的定义,容器是镜像运行时的实例。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository) :仓库可看成一个代码控制中心,用来保存镜像。
CentOS 7安装Dokcer
设置Docker镜像源
yum install -y yum-utils yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker社区版本
yum install docker-ce docker-ce-cli containerd.io
启动Docker
systemctl start docker
惯例helloworld: docker run hello-world
Dokcer常用命令
- 镜像命令
docker images //列出本地主机上的所有镜像
docker search 【镜像名】//搜索镜像
docker pull 【镜像名】//拉取镜像
docker rmi -f【镜像名】//删除单个镜像
docker rmi -f【镜像名1 镜像名2】//删除多个镜像
docker rmi -f $(docker image -q) //删除全部镜像
- 容器命令
docker run -it【镜像名】//以交互模式启动容器
docker run -d【镜像名】//以后台模式启动容器
docker run -d -P 随机端口映射,容器内部端口随机映射到主机的端口
docker run -d -p 指定端口映射,格式为主机端口:容器端口
docker ps //列出当前正在运行的容器
exit //容器停止且退出
ctrl+p+q //容器不停止退出
docker start【容器id/容器名】//(退出容器后)启动容器
docker restart【容器id/容器名】//重启容器
docker stop【容器id/容器名】//停止容器
docker kill【容器id/容器名】//强制停止容器
docker rm 【容器id】//删除容器
docker rm -f $(docker ps -a -q)/ /删除全部容器
docker ps -a -q | xargs docker rm //删除全部容器
docker attach【容器id】//以交互模式进入正在运行的容器
docker exec -it【容器id】【bashshell】//可直接运行命令得到结果跳过进入容器的步骤
docker commit【容器id】【镜像名:版本号】//从容器创建一个新的镜像
更多的命令:# Docker命令大全
Dokcer容器数据卷
容器数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享。
使用命令添加容器数据卷
docker run -d -v 宿主机文件绝对路径:容器文件绝对路径【镜像名】
- 使用DockerFile添加容器数据卷
通过DockerFile创建的带有VOLUME的镜像,然后创建容器会自动将VOLUME的目录挂载到宿主机默认目录
VOLUME["dataVol1","dataVol2"]
从另一个容器当中挂载容器中已经创建好的数据卷
docker run -d --volumes from【容器名】【镜像名】
DokcerFile
DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本
docker build -f【dockerFile路径】-t【镜像名】:版本号 .
使用Docker安装redis
拉镜像
docker pull redis:3.2
2.新建本地redis.conf,目的是启动时可以自定义这个配置文件的内容映射到docker中redis的配置文件
mkdir -p /opt/redis/conf cd /opt/redis/conf touch redis.conf
设置密码
启动容器
docker run -p 6379:6379 -v /opt/redis/data:/data -v /opt/redis/conf/redis.conf:/etc/redis/redis.conf -d redis:3.2 redis-server /etc/redis/redis.conf --appendonly yes
- 连接redis
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。