docker容器部署
本文将记录如何从无到有进行容器化部署
安装docker
- 检查linux内核版本,确认是否高于3.1
- sudo yum update
- sudo yum install -y yum-utils device-mapper-persistent-data lvm2(yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的)
- sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo(设置yum源)
- yum list docker-ce --showduplicates | sort -r(查看仓库中docker版本,选择指定版本)
- sudo yum install docker-ce-17.12.0.ce(下载并安装)
- sudo systemctl start docker;sudo systemctl enable docker(设置开机启动)
- docker version(出现client和server,表示安装成功)
- systemctl status docker(查看docker启动状态,Active显示running表示启动成功)
- vim /etc/docker/daemon.json(创建docker国内镜像)
- systemctl restart docker.service(重启docker)
使用docker
mysql(举例)
- docker pull mysql:5.7(拉取mysql镜像,本人一直都使用5.7,如果想要使用其他版本,可以自行查看并下载)
- docker images(查看拉取的镜像文件信息)
- mkdir /home/fly_liu/data(在当前账号目录下创建data文件夹,用于db文件存储)
- vim my.conf(创建数据库配置文件,内容自定义)
- docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --restart always --name my-mysql2 -v /home/fly_liu/my.cnf:/etc/my.cnf -v /home/fly_liu/data/db:/var/lib/mysql mysql:5.7(启动容器,-d:后台运行;-p:端口映射;-e:初始化用户的密码,账号默认为root;-restart:表示自动重启;-name:自定义该容器名称;-v:表示挂载,将容器内的数据与实际可访问的路径进行挂载,使得数据可见性)
- docker exec -it my-mysql2 /bin/bash(进入容器内部,即可以在内部进行数据库的访问)
- docker stop my-mysql2(停止运行)
- docker rm my-mysql2(删除容器,不停止运行,无法删除容器)
- docker rmi a70d36bc331a(删除镜像,使用image id,容器未删除,无法删除镜像)
jar(运行jar文件)
-
docker pull java:8(获取jre8镜像)
-
docker
-
vim Dockerfile(编写启动文件,内容如下)
#依赖的父镜像
FROM java:8
MAINTAINER liufeiliufei@blozi.com
#jar包添加到镜像中
ADD mq-0.0.1-SNAPSHOT.jar.jar mq.jar
#容器暴露的端口 即jar程序在容器中运行的端口
EXPOSE 8888
#容器启动之后要执行的命令
ENTRYPOINT [“nohup”,“java”,"-jar",“mq.jar”,"&"] -
docker build -t mq/001 . -f Dockerfile(编译新的镜像,一定要在docerfile所在目录下执行该指令)
-
docker run -p 8088:8888 --name mq-001 -d fly_liu/jar(restart要谨慎使用,一旦出现严重的bug,只能强制杀死进程)
-
docker logs fly_liu/jar (查看运行日志,无法滚动展示)
卸载docker
- yum list installed | grep docker(查看docker安装过的相关文件)
- yum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -y(删除安装包)
- rm -rf /var/lib/docker(删除镜像、容器)
(之后在进行补充)