声明:本博客依旧是学习尚硅谷虚拟化视频而整理出来的,鉴于本博主之前整理过一篇博客关于docker的,所以这边就是为了巩固对docker的认知,并查漏补缺。所以很多基础知识就不再继续介绍了,但会补充一些简练的知识点。
之前整理的博客(目录如下):https://blog.csdn.net/Until_U/article/details/105986894
下面开始本文的学习!!
CONTENTS
1、docker快速部署WordPress
2、 docker命令进阶补充
3、docker镜像和仓库管理
3.1 commit镜像
3.2 dockerfile示例
4、docker官方仓库搭建
5、docker搭建Harbor仓库
下面我写了详细的步骤,大家也可以参考这篇博客: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,并登录上去查看。(部署完毕)
(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不通的,这应该是容器这个轻量级虚拟化的特点吧。
(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 服务停止时自动删除
由于工作在前台的守护进程至少一个,我们在centos官网上下载的centos进行没有封装守护进程,所以下载centos官网上的镜像就不太好使了,所以我们选择从网易蜂巢上下载已经封装好守护进程的的镜像,这样我们一启动它就自动工作了!
(1)进入网易蜂巢官网,找到镜像一栏,我们选择centos6 public,自带tools版本的镜像。
docker pull hub.c.163.com/public/centos:6.7-tools
(2)查看镜像,并在centos运行mysql。
(3)进入mysql容器,安装并初始化mysql,并登录创建数据库
#进入容器
docker exec -it mysql /bin/bash
#进入容器后进行安装配置mysql
yum install mysql mysql-server -y
service mysqld start
chkconfig mysqld on
初始化,登录数据库,并创建数据库做测试
(4)退出来将容器mysql封装成一个镜像
docker commit mysql mysql:5.1
(5)用此镜像创建一个容器并登录shell,查看数据库
docker run --name mysql5 -d 4a6c1e651c75
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(如下图,大功告成)
我们可以做两台虚拟机模拟一下实验环境,一台搭建官方仓库,另一台作为客户端去下载镜像。这种官方仓库只能是公开的,除非你去购买私有仓库哦。
(1)可以克隆一台安装了docker的虚拟机作为客户端,修改一下ip。
(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容器应用的开发和运行离不开可靠的镜像管理,虽然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。
先查看服务组件需求是否满足要求
(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为自己的主机名,有域名输入域名。
(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
(6)配置/etc/docker/daemon.json 并重启docker
{
"insecure-registries": ["hub.gawain.cn"]
}
(7)如果是主机名,先添加本地主机解释,然后再浏览器访问域名(https://主机名)
(8)新建用户并退出登录测试看看。默认用户只能访问library公共仓库
(9)新建私有仓库项目,进入仓库中,选择推送镜像,按格式在harbor服务器端打标签并推送。
命令推送参考:
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
查看推送的镜像:
(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:
坚持打卡!!奥利给!!