(三)docker进阶学习1(Linux虚拟化从入门到精通)

声明:本博客依旧是学习尚硅谷虚拟化视频而整理出来的,鉴于本博主之前整理过一篇博客关于docker的,所以这边就是为了巩固对docker的认知,并查漏补缺。所以很多基础知识就不再继续介绍了,但会补充一些简练的知识点。

之前整理的博客(目录如下):https://blog.csdn.net/Until_U/article/details/105986894

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第1张图片


下面开始本文的学习!!


CONTENTS

 

1、docker快速部署WordPress

2、 docker命令进阶补充

3、docker镜像和仓库管理

3.1 commit镜像

3.2 dockerfile示例

4、docker官方仓库搭建

5、docker搭建Harbor仓库


1、docker快速部署WordPress

下面我写了详细的步骤,大家也可以参考这篇博客:https://www.cnblogs.com/sunsky303/p/9396976.html

(1)防火墙和selinux配置

#检查当前防火墙版本,默认centos7是firewalld,卸载装iptables
iptables-save
systemctl stop firewalld
systemctl disable firewalld

yum install iptables-services -y
systemctl start iptables.service
systemctl enable iptables.service

#清除防火墙规则,后期根据需要配置
iptables -F
service iptables save

#关闭selinux
getenforce
sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux
cat /etc/sysconfig/selinux
setenforce 0

(2)安装docker和配置镜像加速器

安装docker可以通过官方给的脚本、yum源仓库或者rpm包进行安装,这次我选用rpm进行安装(网站链接如下,选择相应的版本):

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

#安装docker的相关操作
mkdir docker
cd docker/
mv ../docker-* ./
ls
yum install * -y
systemctl start docker
systemctl enable docker

#检测docker是否安装成功
docker run hello-world

#配置镜像加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://c63ol3wn.mirror.aliyuncs.com"]
}
EOF

cat /etc/docker/daemon.json
systemctl daemon-reload 
systemctl restart docker

(3)docker拉取mysql和WordPress,并启动。

docker pull mysql:latest
docker pull wordpress:latest
docker images
docker run --name db --env MYSQL_ROOT_PASSWORD=Root@123 -d mysql:latest
docker run --name Mywordpress --link db:mysql -p 8080:80 -d wordpress:latest
ocker ps

 (4)下载直接在浏览器输入虚拟机ip:8080,开始暗账Wordpress,并登录上去查看。(部署完毕)

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第2张图片

 

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第3张图片

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第4张图片

 

2、 docker命令进阶补充

(1)基本命令复习

docker info      守护进程的系统资源设置
docker search    docker仓库的查询
docker pull      Docker仓库的下载
docker images    Docker镜像的查询
docker rmi       Docker镜像的删除
docker ps        容器的查询
docker run       容器的创建启动
docker start/stop  容器启动停止

(2)Docker指令除了单条使用外,还支持赋值、解析变量、嵌套使用,例如以下(删除所有的容器):

docker ps -a -q
docker rm -f $( docker ps -a -q ) 

(3)进阶命令

#  查看
docker ps --no-trunc  
#  停止
docker stop/start CONTAINERID  
#   通过容器别名启动/停止
docker start/stop Mywordpress   
#查看容器所有基本信息
docker inspect Mywordpress
#查看容器日志
docker logs MywordPress
#查看容器所占用的系统资源
docker stats MywordPress
#容器执行命令
docker exec 容器名 容器内执行的命令
#登入容器的bash
docker exec -it 容器名 /bin/bash

我们要知道容器也是有IP地址的,通过 docker inspect Mywordpress 查看详细信息,知道容器的ip后可以尝试ping一下,如果关闭容器的话,就ping不通的,这应该是容器这个轻量级虚拟化的特点吧。

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第5张图片

(4)run的延伸,可以自己尝试下。

docker run --name db1 --restart=always --env MYSQL_ROOT_PASSWORD=Root@123 -d mysql:latest

--restart=always         容器的自动启动
-h X.XX.XX               设置容器主机名
--dns xx.xx.xx.xx        设置容器使用的DNS服务器[
--dns-search             DNS搜索设置
--add-host hostname:IP   注入hostname <> IP解析
-rm                      服务停止时自动删除

3、docker镜像和仓库管理

3.1 commit镜像

由于工作在前台的守护进程至少一个,我们在centos官网上下载的centos进行没有封装守护进程,所以下载centos官网上的镜像就不太好使了,所以我们选择从网易蜂巢上下载已经封装好守护进程的的镜像,这样我们一启动它就自动工作了!

(1)进入网易蜂巢官网,找到镜像一栏,我们选择centos6 public,自带tools版本的镜像。

         docker pull  hub.c.163.com/public/centos:6.7-tools

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第6张图片

(2)查看镜像,并在centos运行mysql。

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第7张图片

(3)进入mysql容器,安装并初始化mysql,并登录创建数据库

#进入容器
docker exec -it mysql /bin/bash

#进入容器后进行安装配置mysql
yum install mysql mysql-server -y
service mysqld start
chkconfig mysqld on

 初始化,登录数据库,并创建数据库做测试

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第8张图片

(4)退出来将容器mysql封装成一个镜像

docker commit mysql mysql:5.1

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第9张图片

 (5)用此镜像创建一个容器并登录shell,查看数据库

docker run --name mysql5 -d 4a6c1e651c75

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第10张图片

3.2 dockerfile示例

dockerfile具体的指令信息在我之前的博客里已经有很详细的解释了。

对于dockerfile的编写,建议从网易蜂巢上观察官方给的dockerfile文件,看懂别人写的并加以模仿就很不错啦。下面我们再看一个简单的示例。例如我们把apache-tomcat和jdk-8用dockerfile创建镜像并运行容器检测:

(1)首先上传apache-tomcat和jdk到/root/tomcat目录下。并在此文件下编辑dockerfile文件:

FROM hub.c.163.com/public/centos:6.7-tools
MAINTAINER [email protected]
ADD ./apache-tomcat-7.0.42.tar.gz /root
ADD ./jdk-8u251-linux-x64.tar.gz /root
ENV JAVA_HOME /root/jdk1.8.0_251
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 8080
ENTRYPOINT /root/apache-tomcat-7.0.42/bin/startup.sh && tailf /root/apache-tomcat-7.0.42/logs/catalina.out

(2)执行dockerfile并运行容器: (注意此时我在/root/tomcat目录下,注意命令后面的点 .

docker build -t tomcat:v1 .
docker run --name tomcat -p 80:8080 -d tomcat:v1 

(3)检测容器是否正常运行:

(4)在浏览器上访问tomcat(如下图,大功告成)

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第11张图片

 

4、docker官方仓库搭建

我们可以做两台虚拟机模拟一下实验环境,一台搭建官方仓库,另一台作为客户端去下载镜像。这种官方仓库只能是公开的,除非你去购买私有仓库哦。

(1)可以克隆一台安装了docker的虚拟机作为客户端,修改一下ip。

  • server:10.1.1.100
  • client:10.1.1.101

(2)docker服务器端配置

#拉取registry镜像
docker pull registry
#运行registry容器
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always registry
#编辑docker文件
vim /etc/docker/daemon.json 
{
   "insecure-registries": ["10.1.1.100:5000"]
}


systemctl restart docker

#正确上传镜像的方式:先打标签,然后再push到仓库中
docker tag tomcat:v1 10.1.1.100:5000/tomcat:v1
docker push 10.1.1.100:5000/tomcat:v1 

(3)客户端配置

vim /etc/docker/daemon.json 
{
   "insecure-registries": ["10.1.1.100:5000"]
}


systemctl restart docker.service 

#清空容器和镜像
docker rm -f $( docker ps -a -q )
docker rmi -f $( docker images -q )

#查看仓库中存在的镜像
curl -XGET http://10.1.1.100:5000/v2/_catalog

#从仓库中拉取镜像
docker pull 10.1.1.100:5000/tomcat:v1

#运行容器
docker run --name tomcat -p 80:8080 -d 10.1.1.100:5000/tomcat:v1 

(4)浏览器访问客户端ip地址,查看tomcat是否运行(如下图):

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第12张图片

 

5、docker搭建Harbor仓库

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能

相较于前者官方仓库,Harbor可以搭建私有仓库,比较受到用户的青睐。下面主要介绍如何搭建Harbor仓库:

(1)我们先了解Harbor底层需求

Harbor的所有服务组件都是在Docker中部署的,所以官方安装使用Docker-compose快速部署,所以需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0,python版本应该不小于2.7。

先查看服务组件需求是否满足要求

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第13张图片

(2)检查无误后开始下载安装harbor,可以到官网上下,以下是我下载的harbor-offlinev1.4,并解压。

#下载harbor-offline
wget http://harbor.orientsoft.cn/harbor-v1.4.0/harbor-offline-installer-v1.4.0.tgz

#解压文件
tar -zxvf harbor-offline-installer-v1.4.0.tgz 
ls
mv harbor /usr/local/

(3) 配置OpenSSL

openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
mkdir /data/cert -p
chmod -R 777 /data/cert
mv server.* /data/cert/
cd /data/cert/
ls

 openssl req -new -key server.key -out server.csr这条命令注意下,记得输入自己hostname为自己的主机名,有域名输入域名。

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第14张图片

(4)修改/usr/local/harbor/harbor.cfg这个文件

#以下是我修改的部分
hostname = hub.gawain.cn
ui_url_protocol = https
harbor_admin_password = 123456
db_host = mysql
db_password = Root@123
db_port = 3306
db_user = root

(5)执行install.sh脚本,安装成功如下,并且查看起来的docker。

[root@docker_server harbor]# ./install.sh 

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第15张图片

(6)配置/etc/docker/daemon.json 并重启docker

{
   "insecure-registries": ["hub.gawain.cn"]
}

(7)如果是主机名,先添加本地主机解释,然后再浏览器访问域名(https://主机名)

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第16张图片

(8)新建用户并退出登录测试看看。默认用户只能访问library公共仓库

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第17张图片

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第18张图片

(9)新建私有仓库项目,进入仓库中,选择推送镜像,按格式在harbor服务器端打标签并推送。

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第19张图片

命令推送参考: 

 docker images
 #打标签
 docker tag tomcat:v1 hub.gawain.cn/private/tomcat:v1
 #以用户名登录才可以推送
 docker login hub.gawain.cn
 docker push hub.gawain.cn/private/tomcat:v1 

查看推送的镜像:

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第20张图片

(10)客户端下载推送的镜像并运行

#先配置主机解释
echo "10.1.1.100 hub.gawain.cn" >> /etc/hosts

# vim /etc/docker/daemon.json 
{
   "insecure-registries": ["hub.gawain.cn"]
}


#清空客户机所有镜像和容器
docker rm -r $(docker ps -a -q )
docker rm -f $(docker ps -a -q )

#直接下载是不行的,要先授权
docker login hub.gawain.cn
docker pull hub.gawain.cn/private/tomcat:v1

#查看镜像并运行
docker images
docker run --name tomcat -p 80:8080 -d hub.gawain.cn/private/tomcat:v1 

浏览器访问tomcat:

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第21张图片

 


坚持打卡!!奥利给!!

(三)docker进阶学习1(Linux虚拟化从入门到精通)_第22张图片

 

 

你可能感兴趣的:(云计算和虚拟化)