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)、对容器的启动停止就是对软件的启动停止;
查看内核版本 <Docker 要求 CentOS 系统的内核版本高于 3.10> uname -r 本机<内核版本: 3.10.0-327.el7.x86_64>
把yum包更新到最新 sudo yum update
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
查看仓库中docker版本 yum list docker-ce --showduplicates | sort -r
安装docker sudo yum install docker-ce
启动Docker, 设置开机启动, 停止Docker sudo systemctl start docker sudo systemctl enable docker sudo systemctl stop docker
查看版本 docker version
查看日志状态成功日志 systemctl status docker.service
官网:https://hub.docker.com/
软件镜像(QQ安装程序)----运行镜像----产生一个容器(正在运行的软件,运行的QQ);
Docker镜像报错:Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request cance
解决方案:
打开 vim /etc/docker/daemon.conf(若没有自行创建)写入: { "registry-mirrors": ["https://registry.docker-cn.com",“http://hub-mirror.c.163.com"] }Docker 官方中国区 https://registry.docker-cn.com 网易 http://hub-mirror.c.163.com 中国科技大学 https://docker.mirrors.ustc.edu.cn 阿里云 https://pee6w651.mirror.aliyuncs.com
重启一下docker: systemctl daemon-reload systemctl restart docker产生原因:
在docker启动tomcat(版本是从阿里云上拉下的)时,访问tomcat首页时出现HTTP Status 404 – 未找到
解决方法
以交互方式进入容器: [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a9f62ec95602 tomcat:8-jdk8-corretto "catalina.sh run" 15 minutes ago Up 5 minutes 0.0.0.0:8888->8080/tcp tomcat8 [root@localhost ~]# docker exec -it a9f62ec95602 bash bash-4.2# ls BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist work CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps bash-4.2# 修改Tomcat中的webapp文件夹为webapp2 bash-4.2# mv webapps webapps2 修改Tomcat中的webapp.dist文件夹为webapp【修改完成后 exit 退出】 bash-4.2# mv webapps.dist webapps 创建新镜像 [root@localhost ~]# docker commit -m="update mv webapps" -a="mh" a9f62ec95602 tomcat8 启动新镜像即可 [root@localhost ~]# docker start a9f62ec95602去https://hub.docker.com/ 搜索mysql 选择自己需要的版本【这里以5.7.30为例】
拉取镜像 docker pull mysql:5.7.30 初始化mysql容器 docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -d -p 33608:3306 mysql:5.7.30 --name mysql5.7 【自定义名称】 MYSQL_ROOT_PASSWORD=123456 【root密码】 -p 33608:3306 【配置端口映射】 mysql:5.7.30 初始话的镜像及版本 docker ps 可查看运行中的docker容器注意:
必需指定 【MYSQL_ROOT_PASSWORD、MYSQL_ALLOW_EMPTY_PASSWORD、MYSQL_RANDOM_ROOT_PASSWORD】中的任意一个 不然会出现如下错误: [root@localhost ~]# docker logs 42f09819908b error: database is uninitialized and password option is not specified You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD;这个三个参数必须指定一个 同时若想通过客户端连接mysql需要指定 ip映射docker run --name mysql03 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag 把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面 改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql)
直接指定mysql容器配置docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 指定mysql的一些配置参数
如何设置docker启动后,一些镜像自动启动在-d 后添加–restart=unless-stopped下次docker启动后,mysql就会自动启动,如下:
docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -d --restart=unless-stopped -p 33608:3306 mysql:5.7.30