在安装 Docker 之前,先说一下配置,我这里是Centos7
Linux 内核:官方建议 3.10 以上,3.8以上貌似也可。
注意:本文的命令使用的是 root 用户登录执行,不是 root 的话所有命令前面要加 sudo
1.查看当前的内核版本
uname -r
我这里是3.10 ,满足条件。
2.使用 root 权限更新 yum 包(生产环境中此步操作需慎重,看自己情况,学习的话随便搞)
yum -y update
这个命令不是必须执行的,看个人情况,后面出现不兼容的情况的话就必须update了
注意
yum -y update:升级所有包同时也升级软件和系统内核;
yum -y upgrade:只升级所有包,不升级软件和系统内核
yum list installed | grep docker
卸载旧版本(如果之前安装过的话)
yum remove containerd.io.x86_64 -y
yum remove docker-ce.x86_64 -y
yum remove docker-ce-cli.x86_64 -y
yum remove docker-ce-rootless-extras.x86_64 -y
或者
yum remove docker docker-common docker-selinux docker-engine
cd /etc/yum.repos.d/
ll
http://mirrors.163.com/ 镜像站地址
1.安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
2.设置 yum 源
设置一个yum源,下面两个都可用
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)
yum install -y wget (如果没有安装wget需要执行)
wget http://mirrors.163.com/docker-ce/linux/centos/docker-ce.repo
(注意,需要在cd /etc/yum.repos.d/目录下执行该命令)
如下图表示镜像源已经下载成功
注意:安装之前先关闭防火墙
查看防火墙是否关闭:firewall-cmd --state
临时关闭:systemctl stop firewalld (重启centos后失效)
永久关闭:systemctl disable firewalld (把防火墙置为不可用)
重新加载防火墙配置:firewall-cmd --reload
开始安装:yum install -y docker-ce.x86_64
查看是否安装成功
yum list installed | grep docker
或者
docker --version(docker version,docker -v)
docker --help
yum remove containerd.io.x86_64 -y
yum remove docker-ce.x86_64 -y
yum remove docker-ce-cli.x86_64 -y
yum remove docker-ce-rootless-extras.x86_64 -y
启动:systemctl start docker 或者 service docker start
停止:systemctl stop docker 或者 service docker stop
重启:systemctl restart docker 或者 service docker restart
检查docker进程的运行状态:
systemctl status docker 或者 service docker status
查看docker进程:ps -ef | grep docker
docker info 查看docker系统信息
Docker并不是容器,而只是一个管理容器的引擎;
Docker的底层运行原理:
Docker服务启动–>下载镜像–>启动该镜像得到一个容器–>容器里运行着我们想要的程序
根据Docker的运行机制,我们将按照如下步骤运行第一个Docker容器;
3.1、将Docker服务启动;
3.2、下载一个镜像,Docker 运行一个容器前需要本地存在有对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是 Docker Hub公共注册服务器中的仓库 https://hub.docker.com)。
3.3、镜像相关的命令:
查看本地镜像:docker images
搜索镜像:docker search centos
搜索镜像并过滤是官方的: docker search --filter “is-official=true” centos
下载centos7镜像:docker pull centos:7
修改本地镜像名字(小写):docker tag centos:7 mycentos:1
本地镜像的删除:docker rmi centos:7
3.4、配置阿里镜像加速
3.4.1、地址:https://cr.console.aliyun.com/cn-shenzhen/instances/mirrors
3.4.2、编辑:vi /etc/docker/daemon.json
{
“registry-mirrors”: [“https://这里是阿里给你的账号生成的内容.mirror.aliyuncs.com”]
}
3.4.4、重启:
systemctl daemon-reload && systemctl restart docker
3.4.5、查看是否成功:
docker info
1.查看当前docker中所有正在运行的容器
docker ps
2.查看当前docker中所有的容器(包括没有运行的)
docker ps -a
3.根据已有的镜像创建容器
docker run -it --name=c2 centos:7
参数的解释:
-i表示让容器的标准输入保持打开
-t表示为容器重新分配一个伪输入终端
–name表示为创建出来的容器起一个名称,名称为c2
centos表示根据镜像的名称
7表示镜像的tag
注意:这种方式表示前台运行容器,退出终端之后,容器会关闭,退出之前可以在xshell中打开另个一终端来查看目前正在运行的容器
退出终端之后,可以再次查看,看看容器是否关闭
如果需要在后台启动容器,可以加上参数-d
命令如下:
docker run -d --name=c3 centos:7
这种方式是以守护(后台)的方式启动容器,创建了一个容器在后台运行
注:如果是用-it的方式运行容器,运行之后会自动进入容器
如果以-d的方式运行容器 运行之后需要使用exec的方式进入容器
但是只加-d 不加-it会导致启动成功之后,容器就直接关闭,所以后台启动的时候通常都是使用-itd的方式运行容器
docker run -itd --name=c3 centos:7
运行之后进入容器
docker exec -it c3(或者容器的id) /bin/bash
退出容器:exit
从客户机上访问容器,需要有端口映射,docker容器默认采用桥接模式与
宿主机通信,需要将宿主机的ip端口映射到容器的ip端口上;
docker run -itd -p 8081:8080 tomcat
8081指的是宿主机的端口
8080指的是容器里面tocmat的端口号
查看容器的详细信息
docker inspect 容器id
注:tomcat 如果使用docker stop命令停止之后 如果再使用
docker start命令启动之后 docker ps查询 发现tomcat没有启动起来
可以使用 docker logs 容器的名称 查询一下启动不了的原因
如果提示FileNotFoundException 则有可能是 容器目录下的conf文件夹没有权限 可以使用 chmod -R递归设置权限
简介:容器与宿主机之间文件复制与挂载
从宿主机复制到容器:docker cp 宿主机本地路径 容器名字/ID:容器路径
docker cp /root/123.txt mycentos:/home/
从容器复制到宿主机:docker cp 容器名字/ID:容器路径 宿主机本地路径
docker cp mycentos:/home/456.txt /root
宿主机文件夹挂载到容器里:docker run -id -v 宿主机路径:容器路径 镜像ID
docker run -id -v /root/yjf/:/home centos:7
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3366:3306 \
--name=c_mysql \
-v /opt/mysql/conf:/etc/mysql/conf.d \
-v /opt/mysql/logs:/logs \
-v /opt/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7
参数说明:
-p 3366:3306**:将容器的 3306 端口映射到宿主机的 3307 端口。
-v etc/conf:/etc/mysql/conf.d**:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
-v etc/logs:/logs**:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
-v etc/data:/var/lib/mysql** :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
-e MYSQL_ROOT_PASSWORD=root:**初始化 root 用户的密码。
docker exec –it c_mysql /bin/bash
5.1、容器转对象
docker commit 容器id 镜像名称:版本号
docker save -o 压缩文件名称 镜像名称:版本号
docker load –i 压缩文件名称
5.2、dockerfile
定义父镜像:FROM centos:7
定义作者信息:MAINTAINER yjf
执行安装vim命令: RUN yum install -y vim
定义默认的工作目录:WORKDIR /opt
定义容器启动执行的命令:CMD /bin/bash
通过dockerfile构建镜像:docker build -f my_dockerfile -t xxx:7 .
5.3 构建tomcat运行环境
本地构建步骤:
jdk配置:
vi /etc/profile 编辑环境变量
在最后面添加:
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
重新加载环境变量:
source /etc/profile
检查是否成功:
java -version
dockerfile内容
FROM centos:7
ADD jdk-8u191-linux-x64.tar.gz /usr/local ADD命令会解压压缩包 并且解压之后删除原来的压缩包
RUN mv /usr/local/jdk1.8.0_211 /usr/local/jdk
ENV JAVA_HOME=/usr/local/jdk
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
ENV PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
ADD apache-tomcat-8.5.35.tar.gz /usr/local
RUN mv /usr/local/apache-tomcat-8.5.35 /usr/local/tomcat
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
或者 先自定义jdk镜像、在定义tomcat镜像
一、自定义jdk镜像
FROM centos:7
MAINTAINER yjf
ADD jdk-8u191-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_121
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
安装完后进入镜像检查是否成功
java -version
二、自定义tomcat镜像
FROM myjdk
MAINTAINER yjf
ADD apache-tomcat-8.5.35.tar.gz /usr/local/
EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.35/bin/catalina.sh run
一、搭建私有仓库
1、拉取私有仓库镜像
docker pull registry
2、启动私有仓库容器
docker run -id --name=registry -p 5000:5000 registry
3、打开浏览器 输入地址:http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功
例如:
http://192.168.65.133:5000/v2/_catalog
4、修改daemon.json 此步用于让 docker 信任私有仓库地
vim /etc/docker/daemon.json
{"insecure-registries":["私有仓库服务器ip:5000"]}
我这里的配置是
{
"registry-mirrors": ["https://你自己阿里云账号生成的id.mirror.aliyuncs.com"],
"insecure-registries":["192.168.65.133:5000"]
}
5、重启docker 服务
systemctl restart docker
docker start registry
二、将镜像上传到私有仓库
1.给需要上传的镜像重命名(打标签,注意,标签名称要带上私有仓库的ip地址和端口号,因为默认情况下上传到的是中央仓库)
例如
docker tag centos:7 私有仓库服务器IP:5000/centos:7
2.上传重命名后的镜像
docker push 私有仓库服务器IP:5000/centos:7
3.上传之后查看是否成功
http://私服的ip:5000/v2/_catalog
4.查看镜像的tag
http://私服的ip:5000/v2/centos/tags/list
三、从私有仓库拉取镜像
docker pull 私服的ip:5000/centos:7
一、部署jar包程序
步骤:
1、将开发的springboot程序打成jar包或者war包;
注意:在打包之前,需要先把数据库的连接地址修改正确,不要使用windows系统的数据库地址
2、将打好的jar包或war包上传到Linux某个目录下,比如:/opt
3、定义Dockerfile文件,用于创建项目镜像;
3.1定义jdk_dockerfile文件,用于创建jdk的镜像
FROM centos:7
MAINTAINER yjf
ADD jdk-8u121-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_121
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
3.2定义springboot_jar_dockerfile文件,用于创建springboot的jar包镜像
FROM jdk_image
MAINTAINER yjf
ADD springboot05-0.0.1-SNAPSHOT.jar /opt
RUN chmod +x /opt/springboot05-0.0.1-SNAPSHOT.jar
CMD java -jar /opt/springboot05-0.0.1-SNAPSHOT.jar
3.3根据dockerfile构建容器
docker build -f springboot_jar_dockerfile -t springboot_image .
3.4根据镜像启动容器
docker run -id -v 80:80 --name=sp1 springboot_image
二、部署war包程序\
FROM tomcat_image
ADD springboot-0.0.1-SNAPSHOT.war /usr/local/apache-tomcat-8.5.59/webapps/
EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.59/bin/catalina.sh run
1.编辑文件
vim /usr/lib/systemd/system/docker.service
2.配置在该文件中配置(可以把原来的注释掉)
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
3.重新读取配置文件
systemctl daemon-reload
4.重新启动docker
systemctl restart docker