实战演练:玩转Docker
搭建私有镜像仓库
这里介绍最简单的 Docker Registry,而功能更完善的 CNCF Harbor 留到后续。
拉取registry
docker pull registry
运行本地registry
对外暴露端口5000
docker run -d -p 5000:5000 registry
这里的registry是在192.168.56.102中运行的
查看状态
给上传的镜像打标签
因为上传的目标不是默认的Docker Hub,而是本地仓库,所以镜像的名字前面还必须加上仓库的地址
docker tag lcfgrn/busybox:hello 192.168.56.102:5000/lcfgrn/busybox:hello
这里的打标签、上传操作都是在192.168.56.101中操作的
上传镜像到本地registry
docker push 192.168.56.102:5000/lcfgrn/busybox:hello
这里需要修改docker的配置,否则会报错http: server gave HTTP response to HTTPS client
用vim编辑/etc/docker/daemon.json,增加如下配置
"insecure-registries":["仓库ip:port"]
注意要保证daemon.json符合json格式
然后进行docker的重启
systemctl restart docker.service
验证是否成功推送
docker rmi 192.168.56.102:5000/lcfgrn/busybox:hello
docker pull 192.168.56.102:5000/lcfgrn/busybox:hello
搭建 WordPress 网站
网站需要用到三个容器:WordPress、MariaDB、Nginx

拉取镜像
docker pull wordpress:5
docker pull mariadb:10
docker pull nginx:alpine
启动 MariaDB
docker run -d --rm \
--env MARIADB_DATABASE=db \
--env MARIADB_USER=wp \
--env MARIADB_PASSWORD=123 \
--env MARIADB_ROOT_PASSWORD=123 \
mariadb:10
启动 WordPress
查看数据库的IP
docker inspect a38 | grep IPAddress
启动 WordPress
docker run -d --rm \
--env WORDPRESS_DB_HOST=172.17.0.2 \
--env WORDPRESS_DB_USER=wp \
--env WORDPRESS_DB_PASSWORD=123 \
--env WORDPRESS_DB_NAME=db \
wordpress:latest
启动 Nginx
查看WordPress的IP
docker inspect 6e9 | grep IPAddress
配置Nginx
在当前路径下新增配置文件wp.conf,内容如下:
server {
listen 80;
default_type text/html;
location / {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_pass http://172.17.0.3;
}
}
这里的IP地址必须与WordPress容器的IP匹配
启动Nginx
docker run -d --rm \
-p 80:80 \
-v `pwd`/wp.conf:/etc/nginx/conf.d/default.conf \
nginx:alpine
这里使用-p将本机端口映射到Nginx的80端口,使用-v将当前路径下的wp.conf文件映射到Nginx的conf.d目录下。
查看容器状态
docker ps
状态都为Up,说明都正常启动。
验证WordPress服务
打开浏览器,输入本机的“127.0.0.1”或者是虚拟机的 IP 地址(我这里是“http://192.168.56.101”),就可以看到 WordPress 的界面
总结
使用 Docker 实际搭建了两个服务:Registry 镜像仓库和 WordPress 网站
《极客时间-Kubernetes入门实战课》学习笔记 Day8