1. 安装docker
(
注意 docker要求centos系统内核高于3.10
通过uname -r 命令查看当前的内核版本, centos7以上其实内核都是3.10版本
yum list docker-ce --showduplicates | sort -r -- 查看可以安装的docker版本
)
#安装 yum 源 docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
#安装 docker 此处安装的是18版本的,还有19,20等等更高版本
yum -y install docker-ce-18.06.1.ce-3.el7
#启动
systemctl enable docker && systemctl start docker
#校验安装
docker version
#出现以下的客户端及服务端信息就是安装成功了
![](https://img-blog.csdnimg.cn/dfc7c8fd9fc84cc7ace42e3d27810a0d.png)
2.docker的架构要理解
Docker官方网站 Docker: Accelerated Container Application Development
镜像搜索查询
相当于控制台docker search java
docker安装之后会有客户端、服务端以及docker远程仓库(类似maven的远程镜像仓库,地址:https://hub.docker.com/search?q=)
客户端:像是redis的客户端一样,输入docker命令就可以操作服务端
服务端:很重要,包括一个个小的docker容器和镜像,每一个docker容器就像是一个小的linux虚拟机一样
远程仓库:我们一般会设置一个阿里云的镜像地址(https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo)我们拉取镜像就是从这个远程仓库中拉取的。
3.主要的docker命令:
docker pull redis #如果不指定版本,就是最新版本
docker images #查看下载到本地的镜像
docker run ... # 这个命令(最重要)新建并且启动一个容器
例如:docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:8.0
或者可以更详细的写:
mkdir -p /home/mysql8/data /home/mysql8/config /home/mysql8/logs
docker run -d \
--name mysql8 \
--privileged=true \
--restart=always \
-p 3310:3306 \
-v /home/mysql8/data:/var/lib/mysql \
-v /home/mysql8/config:/etc/mysql/conf.d \
-v /home/mysql8/logs:/logs \
-e MYSQL_ROOT_PASSWORD=root \
-e TZ=Asia/Shanghai mysql:8.0.27 \
--lower_case_table_names=1
-d # 后台运行
--name # 给容器起一个名字
-p # 对应的端口号 例如:docker run -p 91:80 nginx (91是宿主机上的端口 80是容器的端口)
--net # 网络模式:
--net=bridge # 默认模式 表示连接到默认的网桥 容器所在的网络是一个内网
--net=host # 容器使用宿主机的网络 容器和宿主机在同一个网段
docker ps # 查看运行的容器信息及状态
docker ps -a # 查看运行和停止的容器信息及状态
docker rmi image的id # 删除镜像
docker stop 容器id # 停止正在运行的容器
docker rm 容器id # 删除容器(之前先stop)
docker rm -f 容器id # 强制删除容器(不用先stop)
docker restart 容器id # 重启容器
docker start 容器id # 启动已经停止的容器
docker inspect 容器id #比如说想看看容器中的信息:ip等等
docker exec -it 容器id /bin/bash #进入正在运行的容器内部,进入成功就可以使用Shell命令了
docker 内部文件怎么查看_mob64ca12f3f05d的技术博客_51CTO博客
docker container logs 容器id #查看容器日志
docker top 容器id #查看容器里的进程
docker cp 容器id:要拷贝的文件在容器里面的路径 宿主机相应的路径
例如:docker cp 容器id:/etc/nginx/nginx.conf /mydata/nginx
docker cp 宿主机相应的路径 容器id:要拷贝的文件在容器里面的路径
systemctl restart docker 重新启动docker
如果docker容器中无法使用vi、vim等,进入docker容器中,之后进行如下操作:
1.更新来源
apt-get update
2 . 可以安装vim的
apt-get install -y vim
当然也可以安装其他命令:
apt-get install iputils-ping #安装ping
apt-get install net-tools #安装ifconfig
4.将自己的应用部署到docker容器中
jar或者war包容器是不认识的,怎么作自己的docker镜像?
在宿主机上创建一个文件夹docker-app,在docker-app中加入Dockerfile(名字不能错)文件,编辑这个Dockerfile文件
前提:jar包放在了docker-app下,和Dockerfile文件同一级目录。
from openjdk:11
ADD sa-token-demo-springboot-0.0.1-SNAPSHOT.jar /sa-token-demo-springboot-0.0.1-SNAPSHOT.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar","/sa-token-demo-springboot-0.0.1-SNAPSHOT.jar"]
保存,退出之后Build(构建镜像) :
docker build -t sa-token-demo-springboot:0.0.1 .
运行:
docker run -d -p 8082:8081 sa-token-demo-springboot:0.0.1
5.发布镜像:
首先需要在dockerHub上注册一个账号,之后docker login
login成功之后就要进行push
先在镜像之前加一个分组名(分组名一般是账户名)
docker tag sa-token-demo-springboot:0.0.1 mmj/sa-token-demo-springboot:0.0.1
进行镜像推送
docker push mmj/sa-token-demo-springboot:0.0.1