(1)查看centos版本;
Docker 要求CentOS系统的内核版本最低3.10
(2)若版本低于 3.10 则更新
(3) 安装docker yum install docker
(4)启动docker
(5)设置docker开启则启动
(6)停止docker 命令
配置完镜像加速后:
1.通知systemd重载此配置文件;
systemctl daemon-reload
2.重启docker服务
systemctl restart docker
(7)docker 安装MySQL
执行 docker search 关键字 去docker hub上检索镜像的详细信息,如镜像的TAG。 会得到一个镜像列表
拉取docker pull 镜像名:tag tag是可选的,tag表示标签,多为软件的版本,默认是latest
列表 docker images 查看所有本地镜像
删除 docker rmi image-id 删除指定的本地镜像
若容器已经在运行,请先删除容器,再删除镜像。
容器操作:
运行docker容器:
docker run --name mytomcat -d tomcat:latest
注意这里还不能通过外部的 8080 端口访问,因为docker容器中启动的8080端口号不是虚拟机的8080端口号,需要映射才能完成操作。需要进行一下操作,启动Tomcat ,然后在浏览器中输入 localhost:虚拟机端口号 就可以方法 Tomcat 主页。
查看防火墙状态: service firewalld status
临时关闭防火墙: service firewalld stop
启动MySQL
添加端口映射,外部才能访问。
[root@localhost docker]# docker run -p 3306:3306 --name mydata -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6.46
2d000afd66abda1b0acdc316dc3413780e0bb508f94787575a4080de1d641f02
查看已经安装的docker镜像的基础信息: docker inspect images-name:tag
[root@localhost ~]# docker inspect mysql:5.6.46
容器操作:运行
docker run--name 容器名-i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像ID或镜像名:TAG
#--name 指定容器名,可自定义,不指定自动命名
#-i以交互模式运行容器
#-t分配一个伪终端,即命令行,通常-it组合来使用
#-p指定映射端口,讲主机端口映射到容器内的端口
#-d后台运行容器
#-V指定挂载主机日录到容器日录,默认为rw读写模式,ro表示只读
进入到容器里面:# docker exec -it 容器名或容器id /bin/bash
找到Tomcat容器配置文件 # cd /docker-java-home/jre/lib/security/ -----》java.security
验证文件改为 securerandom.source=file:/dev/./urandom
exit 退出容器
删除容器: docker rm -f 容器名或容器id
进入root目录 #cd /root/
上传文件 # rz
快速启动容器 # docker run --name 自定义容器名 -p 80:8880 -v /root/java.security:/docker-java-home/jre/lib/security/java.security -d tomcat:latest
查看Tomcat日志 # docker logs 自定义容器名
在docker中部署 springboot 项目
在jar包路径下创建Dockerfile文件vi Dockerfile
#指定基础镜像,本地如果没有会从 dockerhub 上 pull 下来
FROM openjdk:8
#把可执行jar包复制到基础镜像的根目录下
ADD learn.jar /learns.jar
#镜像要暴露的端口,如要使用端口,在执行docker run命令时使用-p生效
EXPOSE 80
#在镜像运行为容器后执行的命令
ENTRYPOINT ["java","-jar","/learns.jar"]
使用dockerbuild命令构建镜像,基本语法
docker build -f Dockerfile -t mylearn/mypro:v1 .
#-f指定Dockerfile文件的路径
#-t指定镜像名字和TAG
#.指当前日录,这里实际上需要一个上下文路径
运行容器
# docker run --name 自定义容器名称 -p 80:80 -d --restart=always mylearn/pro:v1
#加上--restart=always 表示此容器开机启动,只要docker也设置了开机自启,docker不死
构建镜像:
构建镜像:
【方式一】通过commit的方式创建镜像【将容器保存为镜像】
docer commit 容器名/ 容器id 自定义镜像名称
【方式二】通过dockerfile的方式创建镜像
vim Dockerfile
FROM nginx
ADD ./ /user/share/nginx/html/
vim index.html 【在html文件中写内容】
docker build -t m2 .
docker run -d -p 100:80 m2
【方式三】通过docker save 指令完成
将一个镜像保存到一个文件里
docker save 镜像id/镜像名 > test.tar
docker load < test.tar
------------------------------------------------------------------------------
-d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i-t两个参数,创建后就会自动进去容器)
-p 指定端口映射
-v 映射文件(将宿主机和容器的目录或者文件做映射)
--name 指定容器运行起来后的名称 docker ps 中的 【names】就是我们自定义的名字 【name】是镜像的名称
-i 表示运行容器
-t 表示容器启动后会进入其命令行
加入这两个参数后,容器创建就能登录进去
查看正在运行的容器
docker ps
查看所有容器
docker ps -a
查看最后一次运行的容器
docker ps -l
查看停止的容器
docker ps -f status=exited
(1)交互式方式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态
退出当前容器
exit
(2)守护式方式创建容器(后台运行):
docker run -di --name=容器名称 镜像名称:标签
登录守护式容器方式:
docker exec -it 容器名称(或者容器ID)/bin/bash
进入到容器中:
docker exec -it 容器名称/容器id /bin/bash
【外部】复制文件到【容器】中去:
docker cp /外部目录/外部文件 容器名:/容器目录/文件名【若最后写了文件名,就以最后的文件名为主】
【容器】复制文件到【外部】:
docker cp 容器名:/容器目录/容器中的文件 /外部目录/文件名【若最后写了文件名,就以
(目录挂载)文件映射:
docker run -di -v /us/local/myhtml:/user/local/myhtml --name=自定义容器名 镜像名:版本号
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
docker run -di --name=mynginx -p 90:80 -v /usr/html:/usr/share/nginx/html nginx:1.17.5
查看容器所有信息:
docker inspect 容器名
docker inspect --format=`{{.Networksettings.IPAddress}}`
nginx :
cd /etc/nginx/nginx.conf
这里面包含nginx下的所有配置
include /etc/nginx/conf.d/*.conf
cd conf.d
dir
cat default.conf
location {
root /usr/share/nginx/html;
index index.html index.htm;
}
将当前目录下的dist文件夹 改名为html
mv dist html
命令 作用
FROM image_name:tag 定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name 声明镜像的创建者
ENV key value 设置环境变量(可以写多条)
RUN command 是Dockerfile的核心部分(可以写多条)
ADD source_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
dest_dir/file
COPY souce_dir/file 和ADD相似,但是如果有压输文件并不能解压
dest_dir/file
WORKDIR path_dir 设置工作目录