下面是我自学docker的整理资料:--------------------声明:前部部分虚拟机不用了(出了很多问题转入别的虚拟机排查但是这个也没问题),后半部分问题主要内核问题,建议先升级内核。
- 简介
Docker是一个开源的应用容器引擎;是一个轻量级容器技术;Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;运行中的这个镜像称为容器,容器启动是非常快速的。
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker客户端(Client):连接docker主机进行操作;
docker仓库(Registry):用来保存各种打包好的软件镜像;
docker镜像(Images):软件打包好的镜像;放在docker仓库中;
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用;
使用Docker的步骤:
1)、安装Docker
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件的启动停止;
2. Docker的安装
安装Linux的虚拟机:
点击下一步即可。
打开软件-管理-导入虚拟电脑。
选择这个虚拟电脑(需要软件的找我留言即可)
注意选择重新初始化所有的网卡地址。
打开虚拟机。默认的用户名是root密码是123456
使用客户端连接服务器:
注意网卡的设置保证虚拟机可以上网:
区分有线和无线的,要是有线的话选择这个
如果是无线网卡选择这个
勾选接入网线。
设置好了之后就和虚拟机处在同一个网段了。
启动之后设置service network restart重启网卡。
查看ip地址:ip addr
打开shell进行连接:省略。
下面就是帮助linux虚拟机安装docker:
1)首先docker的必须要求Linux的内核版本高于3.10 命令uname -r
内核版本不匹配的话要升级:yum update
2)安装doecker:yum install docker稍等就会安装好。
出现Complate的时候安装完毕。
3)启动docker:systemctl start docker
重启docker:systemctl restart docker
此时如果报错:
解决办法:https://www.imooc.com/article/69367
sudo groupadd docker
sudo usermod -aG docker $(whoami)
vi /etc/sysconfig/docker
改为:--selinux-enabled=false
查看版本号:docker -v
说明安装成功。
设置docker开机启动:systemctl enable docker
停止docker:systemctl stop docker
3. Docker的常用的操作
1)镜像操作:docker search mysql
这个命令就是默认去docker hub寻找的:https://hub.docker.com/
这两排分别表示是否是官方的是否是自动配置的。
拉取镜像:docker pull+镜像名称:docker pull mysql
下载成功。
默认下载最新的mysql,可以下载指定的mysql:docker pull mysql:5.5
docker下载会出现timeout的现象:https://blog.csdn.net/qq_33575129/article/details/78196279
查看docker镜像:docker images
删除本地的镜像:docker rmi image-id,注意是镜像不是容器记住了。
2)容器操作
软件的镜像(QQ.exe安装程序)-运行镜像-产生一个容器(正在运行的软件,可运行的QQ)
1---搜索镜像:docker search tomcat
2---拉取镜像:docker pull tomcat
3---根据镜像启动容器:docker run --name mytomcat -d(后台)tomcat(镜像名字):latest(Tag)
docker run --name mytomcat -d tomcat:latest
启动失败:https://blog.csdn.net/u013182745/article/details/85097310
启动失败大多数是因为内核的原因,解决的方法是升级内核:
# 导入yum源的认证key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 在yum的elrepo源中,有mainline(4.0.2)这个内核版本
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
# 查看默认启动顺序
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
# 默认启动的顺序是从0开始
grub2-set-default 0 && reboot
uname -r
4.20.10-1.el7.elrepo.x86_64
导入失败的话:https://bugxia.com/851.html
yum -y update nss
4---查看容器 docker ps [-a]
5---停止/启动容器docker stop/start id/名字
6---删除容器:docker rm id
7---docker run --name mytomcat -d -p 8888:8080 tomcat(虚拟机:容器)
8---访问:192.168.244.130:8888
9-----查看容器的日志:docker logs 容器的id
10---
4.docker安装mysql redis rabbitmq elasticsearch
1)安装mysql
2)运行:docker run --name mysql101 -d mysql
错误的启动。
原因:docker logs id
数据库在初始化没有指定密码项。
正确的启动:
docker rm id
创建容器:docker run --name mysql101 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
docker stop ip
创建容器:docker run -p 3306:3306 --name mysql102 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
上面的报错尝试缩短语句:
接下来连接mysql会报错2059:
select user,plugin from user where user=’root’;
ALTER USER ‘root’@’%’ IDENTIFIED BY ‘123456’ PASSWORD EXPIRE NEVER;
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
flush privileges;
docker进入mysql:docker exec -it id bash
几个其他的高级操作:59后半部分
docker面试题:https://www.jdon.com/51223