安装docker
如果之前安装过需要卸载原有的docker(可选)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
首先需要大家Linux服务器联网,安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
更新本地镜像源:
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
输入安装命令(docker-ce为社区免费版本 ):
yum install -y docker-ce
启动docker
Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议直接关闭防火墙!
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
通过命令启动docker:
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
可以查看docker版本命令:
docker -v
因为使用docker经常会拉取镜像,要配置一个镜像加速器,这里以腾讯云配置镜像加速器为例
1. 打开 /etc/docker/daemon.json 配置文件
命令: cd /etc/docker/daemon.json
2.修改daemon.json文件,配置镜像加速器
命令: vim daemon.json
三步走:
1.按住键盘: "i" 修改文件
2.按住键盘: ":"
3.输入"wq"保存退出
修改后的daemon.json样式
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
重启 Docker 即可
systemctl restart docker
镜像
镜像名称:由两部分组成:[repository]:[tag],在没有指定tag时,默认是latest,代表最新版本的 镜像
查看镜像:docker images
删除镜像:docker rmi mysql:5.7 (删除镜像需要先删除镜像下的容器,或者强制删除,在rmi后面加上 -f, docker rmi -f mysql:5.7)
加载镜像:docker load -i mysql:5.7
保存镜像到磁盘:docker save -o mysql.tar mysql:5.7
拉取镜像:docker pull mysql:5.7 (docker Hub有很多官方的镜像就像Java的maven仓库)
查看镜像详细信息:docker inspect mysql:5.7
容器
创建一个容器( 创建容器比较重要单独拿出来说)
docker run --name containerName -p 80:80 -d nginx
命令解读:
-
docker run :创建并运行一个容器
-
--name : 给容器起一个名字,比如叫做containerName
-
-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
-
-d:后台运行容器
-
nginx:镜像名称,例如mysql:5.7
提醒:容器命令有很多扩展的属性,例如环境 -e,不再一一赘述,学习是一件快乐的事情
查看容器(存活的): docker ps
查看所有容器(不管死活的): docker ps -a
删除容器: docker rm mysql
进入容器:docker exec -it mn bash 【mn:要进入的容器的名称】
启动容器:docker start mysql
暂停容器:docker pause mysql
从暂停状态恢复运行: docker unpause mysql
停止容器:docker stop mysql
查看容器日志:docker logs mysql
数据卷
导读:
当你关机了你的Linux或者docker,容器的数据会丢失,最典型的案例就是你把自己的项目发布 到线上,没有做数据卷的操作,如果有一天docker重启了,你就会懵逼的发现你的项目登录账号 密码错误,因为mysql容器挂了数据库连不上,根本拿不到数据
创建数据卷:docker volume create coco (coco数据卷名称,自定义即可)
查看数据卷详细信息:docker volume inspect coco
列出所有数据卷:docker volume ls
删除指定数据卷:docker volume rm coco
删除所有未使用的数据卷: docker volume prune coco
案例 创建一个容器挂载数据卷
docker run --name mn -v html:/root/html -p 8080:8080 -d mysql:5.7
这里的-v就是挂载数据卷的命令:
- `-v html:/root/htm` :把html数据卷挂载到容器内的/root/html这个目录中
注意:
-v后面的映射关系是"宿主机文件/目录:容器里对应的文件/目录",其中,宿主机上的文件/目录是要提前存在的,容器里对应的文件/目录会自动创建。
自定义镜像
导读:
虽然docker Hub给我们提供了很多镜像,但是自己的是最香,想要个性化的镜像,把自己的项目做成一个镜像发布到外网,享受当站长的快乐!
【 Linux中任意位置创建一个目录,把下面用到的文件丢进去,具体实现下面懒人版Dockerfile有】
创建一个Dockerfile文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local
# 拷贝jdk8的压缩包和自己java项目打的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./coco.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \
&& tar -xf ./jdk8.tar.gz \
&& mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口,这里端口跟项目配置文件保持一致 server.port = 8080
EXPOSE 8080
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
如果你觉的上面的Dockerfile文件太复杂繁琐,有懒人版的Dockerfile
基于java:8-alpine镜像,将一个Java项目构建为镜像
实现思路如下:
- ① 新建一个空的目录,然后在目录中新建一个文件,命名为Dockerfile
- ② 拷贝自己项目的jar包到这个目录中
- ③ 编写Dockerfile文件:
- a )基于java:8-alpine作为基础镜像
- b )将app.jar拷贝到镜像中
- c )暴露端口
- d )编写入口ENTRYPOINT
内容如下:
FROM java:8-alpine
COPY ./coco.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar
Dockefile文件完成了就可以创建镜像了,回退到你创建的目录,输入下面命令:
docker build -t javaweb:1.0 . 【javaweb:1.0自定义即可,后缀.不能省略】
基于自定义镜像创建容器(镜像名称跟上面保持一直):
docker run --name coco -p 8080:8080 -d javaweb:1.0
然后就可以在浏览器输入自己的IP地址端口访问项目了,到这里最后一步 部署一个Spring boot项目完成了
部署一个Spring boot项目