centos7安装Docker以及使用

文章目录

  • 1. 安装
    • 1.1 安装前必读
    • 1.2 检查安装
      • 1.2.1安装前可以查看一下系统是否已经安装了Docker
    • 1.3 开始安装
      • 1.3.1切换目录
      • 1.3.2 查看当前目录所有的镜像源
      • 1.3.3 配置网易开源镜像源(或者阿里也可以)
      • 1.3.4 安装Docker Ce 社区版本
      • 1.3.5 查看docker帮助
      • 1.3.6 删除docker(慎用)
    • 1.4启动服务
  • 2. Docker的运行机制
  • 3.第一个容器
  • 4.文件复制与挂载
  • 5.自定义镜像
  • 6.私有仓库
  • 7.部署springboot项目
  • 8.ide连接docker

1. 安装

1.1 安装前必读

在安装 Docker 之前,先说一下配置,我这里是Centos7
Linux 内核:官方建议 3.10 以上,3.8以上貌似也可。

注意:本文的命令使用的是 root 用户登录执行,不是 root 的话所有命令前面要加 sudo
1.查看当前的内核版本

uname -r

centos7安装Docker以及使用_第1张图片
我这里是3.10 ,满足条件。
2.使用 root 权限更新 yum 包(生产环境中此步操作需慎重,看自己情况,学习的话随便搞)

yum -y update

这个命令不是必须执行的,看个人情况,后面出现不兼容的情况的话就必须update了

注意​
yum -y update:升级所有包同时也升级软件和系统内核;​
yum -y upgrade:只升级所有包,不升级软件和系统内核

1.2 检查安装

1.2.1安装前可以查看一下系统是否已经安装了Docker

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

centos7安装Docker以及使用_第2张图片

1.3 开始安装

1.3.1切换目录

cd /etc/yum.repos.d/

1.3.2 查看当前目录所有的镜像源

ll

centos7安装Docker以及使用_第3张图片

1.3.3 配置网易开源镜像源(或者阿里也可以)

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(阿里仓库)
 

centos7安装Docker以及使用_第4张图片
3.进行安装

yum install -y wget (如果没有安装wget需要执行)
wget http://mirrors.163.com/docker-ce/linux/centos/docker-ce.repo
(注意,需要在cd /etc/yum.repos.d/目录下执行该命令)

如下图表示镜像源已经下载成功

centos7安装Docker以及使用_第5张图片

1.3.4 安装Docker Ce 社区版本

注意:安装之前先关闭防火墙
查看防火墙是否关闭: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)

centos7安装Docker以及使用_第6张图片

1.3.5 查看docker帮助

docker --help

1.3.6 删除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

1.4启动服务

启动: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系统信息

2. Docker的运行机制

Docker并不是容器,而只是一个管理容器的引擎;

Docker的底层运行原理:

Docker服务启动–>下载镜像–>启动该镜像得到一个容器–>容器里运行着我们想要的程序
centos7安装Docker以及使用_第7张图片

3.第一个容器

根据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

​ 3.4.3、配置:
centos7安装Docker以及使用_第8张图片

{
“registry-mirrors”: [“https://这里是阿里给你的账号生成的内容.mirror.aliyuncs.com”]
}

3.4.4、重启:

systemctl daemon-reload && systemctl restart docker

3.4.5、查看是否成功:

docker info

centos7安装Docker以及使用_第9张图片
3.4.6、根据镜像创建容器,并且通过客户端访问容器

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递归设置权限

4.文件复制与挂载

简介:容器与宿主机之间文件复制与挂载

从宿主机复制到容器: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.自定义镜像

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

6.私有仓库

一、搭建私有仓库

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

7.部署springboot项目

一、部署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

8.ide连接docker

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

你可能感兴趣的:(docker,运维,linux)