Docker操作笔记-从小白到入门
序言
- 我们在项目开发过程中,往往会依赖于很多中间件,如:MySQL,Redis,Zookeeper,MQ等等,而很多时候项目启动会强依赖于他们,当我们想自己学习一些技术或者脱离公司网络去运行项目时,就很有必要在本地搭建一套运行环境,但是往往会因为繁琐的安装和配置过程被劝退,即使全部安装好了,其高昂的内存消耗也会拖慢我们的电脑,如何优雅快速的在本地安装一套完整的开发环境呢?Docker则是最好的解决方案。
- 如果各位还不知道什么是Docker,可以暂停先去百度花十几分钟分钟查一查,我相信有过计算机和开发经验的人,基本都能看懂,我这里就不做过多介绍了,我只讲Docker的安装以及如何用Docker搭建一套完整的开发环境,和期间我遇到的坑,避免大家走冤枉路,作为一个开发人员,我不建议大家花太多时间在Docker的原理学习上,我们并不是专业运维人员,Docker我们可以熟练使用和操作就可以了。
1、Docker安装
目前Docker已经可以全平台安装,包括Linux,Windows,Mac系统,如果你用的是Windows,我建议通过虚拟机安装Linux,在Linux系统上安装Docker,这样更有利于我们学习,兼容性也会更好。如果用的是Mac,其底层本身就是基于Linux开发的,可以直接安装Docker,这里我建议有条件的程序员最好还是选择mac作为开发平台, 我在毕业入行的前5年都是用的windows,自从我用了 mac作为主力开发平台之后,就再也换不回Windows了,这就好比我的青春,再也回不去了。
1.1、Linux安装
- windows用户推荐使用虚拟机 VirtualBox 安装 Centos7
- Centos安装docker:查看版本:
cat /etc/redhat-release
参考网址
1 | 1.先安装gcc:yum -y install gcc |
1.2、Windows/Mac安装
2、Centos操作docker常用命令
- 查看配置:
vi /etc/yum.repos.d/docker-ce.repo
- 更新软件包:
yum makecache fast
- 安装docker:
yum install docker-ce docker-ce-cli containerd.io
- 配置文件位置:
/etc/sysconfig/docker
- 启动docker:
systemctl start docker
- 设置开机启动:
systemctl enable docker
- 查看docker启动进程:
ps -ef|grep docker
- 查看docker版本:
docker version
- 查看docker信息:
docker info
2.1、权限问题解决
docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令
- 添加docker用户组
sudo groupadd docker
- 将登陆用户加入到docker用户组中
sudo gpasswd -a $USER docker
- 更新用户组
newgrp docker
- 测试docker命令是否可以使用sudo正常使用
docker ps
3、镜像
首先简单介绍一下镜像的概念,如果把Docker比作一台电脑,那么镜像就好比软件的安装包,想要安装什么软件,取决于你下载的安装包,下面就是镜像的下载地址以及阿里云的加速地址。
1 | docker pull mysql:5.7 |
3.1、镜像操作
- 查看镜像:
docker images
- 展示所有所有镜像(包含中间镜像层):
docker images -a
- 查询镜像:
docker search 镜像名字
- 删除镜像:
docker rmi 镜像id
4、容器操作
如果我们把镜像比作下载到电脑上的软件安装包,那么容器就是安装包经过安装之后的样子,启动容器的过程就好比软件安装的过程,不同的是,一个镜像可以启动多个容器,往往我们自己本地一个镜像启动一个容器就可以了,除非在本地搭建集群,否则没必要启动多个容器。
4.1、启动容器
- 启动mysql:
docker run -p 3306:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- 启动rabitmq:
docker run -d -p 5672:5672 -p 15672:15672 --name myrabitmq 镜像id
- 启动redis:
docker run -d -p 6379:6379 --name myredis 镜像id
- 启动zookeeper:
docker run --name zk01 -p 2181:2181 --restart always -d 镜像id
- 启动nacos:
docker run --name nacos-2.0.1 -e MODE=standalone -p 8849:8848 -d nacos/nacos-server:2.0.1
- 启动kibana:
docker run -d --name kibana7.7.1 --net mynet -p 5601:5601 kibana:7.7.1
4.2、容器其他操作
Kibana 在Doker中启动相关配置
1 | docker exec -it kibana7.7.1 bash |
- 查看日志: docker logs -f -t –tail 100 kibana7.7.1
- 更新启动参数: docker update –restart=always xxx
- 查看所有容器:
docker ps -a
- 查看启动容器:
docker ps
- 启动已停止的容器:
docker start 容器id或名字
- 关闭容器 :
docker stop 容器id
- 取消容器开机启动:
docker update --restart=no 容器ID
- 强制关闭:
docker kill 容器id
- 删除已停止容器 :
docker rm 容器id
- 删除没有停止容器:
docker rm -f 容器id
- 进入容器内部:
docker exec -it 程序id /bin/bash
- exit 关闭容器退出(自测不会退出):
ctrl+p+q
- 查看日志:
docker logs -f (追加) -t (加入时间戳) --tail 3 (显示最后3行) 容器id
- 查看容器结构细节:
docker inspect 容器id
- 拷贝容器中的文件:
docker cp 容器id:文件路径 要拷贝到的路径
- 提交自己的docker镜像:
docker commit -a="lgd" -m="mysql-lgd" 243baa0ea2a7 ligoudan/lgd-mysql:1.0