大连做网站优化价格,网站开发就业怎么样,做个公司展示网站多少钱 后期有什么费用,杭州营销型网站建设容器镜像技术揭秘#xff5c;发布容器服务器#xff5c;私有镜像仓库 创建镜像使用commit方法创建自定义镜像。Dockerfile打包镜像创建apache服务镜像制作 php 镜像 微服务架构创建nginx镜像 发布服务通过映射端口发布服务容器共享卷 docker私有仓库 创建镜像
使用commit方法… 容器镜像技术揭秘发布容器服务器私有镜像仓库 创建镜像使用commit方法创建自定义镜像。Dockerfile打包镜像创建apache服务镜像制作 php 镜像 微服务架构创建nginx镜像 发布服务通过映射端口发布服务容器共享卷 docker私有仓库 创建镜像
使用commit方法创建自定义镜像。
使用现有镜像启动容器在该容器基础上修改使用commit制作新镜像
[rootdocker-0001 ~]# docker run -it centos:latest
[root02fd1719c038 ~]# rm -f /etc/yum.repos.d/*.repo
[root02fd1719c038 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/CentOS-Base-7.repo
[root02fd1719c038 ~]# yum install -y net-tools vim-enhanced tree bash-completion iproute psmisc yum clean all
[root02fd1719c038 ~]# exit
[rootdocker-0001 ~]# docker commit 02fd1719c038 myos:latestDockerfile打包镜像 创建apache服务镜像
[rootdocker-0001 ~]# mkdir apache; cd apache
[rootdocker-0001 apache]# vim Dockerfile
FROM myos:latest
RUN yum install -y httpd php
ENV LANGC
ADD webhome.tar.gz /var/www/html/
WORKDIR /var/www/html/ # 永久性的cd
EXPOSE 80
CMD [/usr/sbin/httpd, -DFOREGROUND] # -DFOREGROUND 必须加这个 放在前台运行 不然容器起不来
# 拷贝 webhome.tar.gz 到当前目录中
[rootdocker-0001 apache]# docker build -t myos:httpd .
# 验证
[rootlocalhost web]# docker run -itd myos:httpd
#因为是后台服务所以要使用-d参数制作 php 镜像
[rootdocker-0001 ~]# mkdir php; cd php
[rootdocker-0001 php]# vim Dockerfile
FROM myos:latest
RUN yum install -y php-fpm
EXPOSE 9000
CMD [/usr/sbin/php-fpm, --nodaemonize]
[rootdocker-0001 php]# docker build -t myos:php-fpm .
# 验证服务
[rootdocker-0001 ~]# docker run -itd myos:php-fpm
deb37734e52651161015e9ce7771381ee6734d1d36bb51acb176b936ab1b3196
[rootdocker-0001 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
deb37734e526 myos:php-fpm /usr/sbin/php-fpm -… 17 seconds ago Up 15 seconds
[rootdocker-0001 ~]# docker exec -it deb37734e526 /bin/bash
[rootdeb37734e526 ~]# ss -ltun
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 *:9000 *:* 微服务架构
微服务架构是一种架构模式它提倡将单一应用程序划分成一组小的服务服务之间互相协调、互相配合为用户提供最终价值。将一个应用拆分。 微服务优点
高度可扩展、出色的弹性、易于部署、易于访问、更加开发松耦合高内聚
创建nginx镜像
# 编译软件包
[rootdocker-0001 ~]# yum install -y gcc make pcre-devel openssl-devel
[rootdocker-0001 ~]# useradd nginx
[rootdocker-0001 ~]# tar -zxvf nginx-1.12.2.tar.gz
[rootdocker-0001 ~]# cd nginx-1.12.2
[rootdocker-0001 nginx-1.12.2]# ./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_ssl_module
[rootdocker-0001 nginx-1.12.2]# make make install
[rootdocker-0001 nginx-1.12.2]# # 拷贝 docker-images/info.html和info.php 到 nginx/html 目录下
[rootdocker-0001 nginx-1.12.2]# cd /usr/local/
[rootdocker-0001 local]# tar czf nginx.tar.gz nginx
# 制作镜像
[rootdocker-0001 local]# mkdir /root/nginx ;cd /root/nginx
[rootdocker-0001 nginx]# cp /usr/local/nginx.tar.gz ./
[rootdocker-0001 nginx]# vim Dockerfile
FROM myos:latest
RUN yum install -y pcre openssl useradd nginx
ADD nginx.tar.gz /usr/local/
EXPOSE 80
WORKDIR /usr/local/nginx/html
CMD [/usr/local/nginx/sbin/nginx, -g, daemon off;] # -g 配置参数 daemon off 让nginx在前台运行
[rootdocker-0001 nginx]# docker build -t myos:nginx .# 验证服务
[rootdocker-0001 ~]# docker rm -f $(docker ps -aq)
deb37734e526
[rootdocker-0001 ~]# docker run -itd myos:nginx
e440b53a860a93cc2b82ad0367172c344c7207def94c4c438027c60859e94883
[rootdocker-0001 ~]# curl http://172.17.0.2/info.html
htmlmarquee behavioralternatefont size12px color#00ff00Hello World/font/marquee
/html发布服务
通过映射端口发布服务
[rootdocker-0001 ~]# docker run -itd -p 80:80 myos:httpd
# 把 docker-0001 变成 nginx 服务首先必须停止 apache
[rootdocker-0001 ~]# docker stop $(docker ps -q)
[rootdocker-0001 ~]# docker run -itd -p 80:80 myos:nginx容器共享卷
Docker容器不适合保存任何数据数据文件与配置文件频繁更改修改多个容器中的数据非常困难多容器之间有数据共享、同步需求重要数据在容器内不方便管理易丢失解决这些问题请使用主机卷映射功能。
Docker可以映射宿主机文件或目录到容器中
目标对象不存在就自动创建 目标对象存在就直接覆盖掉 多个容器可以映射同一个目标对象来达到数据共享的目的 启动容器时使用 -v 映射参数可有多个 语法格式如下
docker run -itd -v 宿主机对象:容器内对象 myos:latest
[rootdocker-0001 ~]# mkdir /var/webconf
[rootdocker-0001 ~]# cp /usr/local/nginx/conf/nginx.conf /var/webconf/
[rootdocker-0001 ~]# vim /var/webconf/nginx.conflocation ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;}
[rootdocker-0001 ~]# docker run -itd -p 80:80 --name nginx \-v /var/webconf/nginx.conf:/usr/local/nginx/conf/nginx.conf myos:nginx
# 查看验证
[rootdocker-0001 ~]# docker exec -it nginx /bin/bash
[roote440b53a860a html]# cat /usr/local/nginx/conf/nginx.conf
[roote440b53a860a html]# # 查看 php 相关配置是否被映射到容器内共享网卡
docker私有仓库 搭建私有仓库服务器
[rootlocalhost ~]# yum install docker-distribution
[rootlocalhost ~]# systemctl start docker-distribution
[rootlocalhost ~]# systemctl enable docker-distribution使用curl测试
[rootlocalhost ~]# curl http://仓库ip:5000/v2/_catalog
{repositories:[]}搭建私有仓库服务器 修改docker配置文件改配置文件默认连接的仓库为国外官网的仓库我们需要修改为自己定义的192.168.1.100服务器。
[rootlocalhost ~]# vim /etc/docker/daemon.json # 默认没有该文件需要新建
{exec-opts: [native.cgroupdriversystemd], # cgroup驱动registry-mirrors: [https://hub-mirror.c.163.com], # 默认下载仓库 使用国内源能快一点insecure-registries:[192.168.1.100:5000, registry:5000]
}
# insecure-registries后面根私有仓库的服务器IP和端口
[rootlocalhost ~]# docker rm -f $(docker ps -aq)
[rootlocalhost ~]# systemctl restart docker
# 注意重启docker服务前要停止所有容器上传镜像到私有仓库
使用curl查看刚刚上传的镜像
查询有什么镜像
[rootdocker-0001 ~]# curl http://192.168.1.100:5000/v2/_catalog
{repositories:[busybox,myos]}
查询镜像有什么标签
[rootdocker-0001 ~]# curl http://192.168.1.100:5000/v2/myos/tags/list
{name:myos,tags:[httpd,latest,nginx,php-fpm]}在一个没有任何镜像的机器上启动容器
语法格式
docker run -it 仓库IP:5000/镜像的名称:镜像的标签
[rootdocker-0002 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
# 查看默认没有镜像
[rootdocker-0002 ~]# docker run -it 192.168.1.100:5000/myos:latest
Unable to find image 192.168.1.100:5000/myos:latest locally
Trying to pull repository 192.168.1.100:5000/myos ...
latest: Pulling from 192.168.1.100:5000/myos
b1300879af4c: Pull complete