docker镜像管理和镜像仓库创建

本文介绍了如何使用Docker进行镜像管理,包括通过`commit`和Dockerfile打包镜像,详细讲解了Dockerfile的语法及制作不同应用的镜像。此外,还探讨了如何设置Nginx-PHP动静分离的实验,并详述了建立和配置docker私有仓库的过程,包括上传镜像及验证测试。
摘要由CSDN通过智能技术生成

容器技术 – 2

镜像管理

commit 打包镜像

docker commit 容器id 新镜像名称:标签

[root@node-0001 ~]# docker run -it centos:latest
[root@02fd1719c038 ~]# rm -f /etc/yum.repos.d/*.repo
[root@02fd1719c038 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/CentOS-Base-7.repo
[root@02fd1719c038 ~]# yum install -y net-tools vim-enhanced tree bash-completion iproute psmisc && yum clean all
[root@02fd1719c038 ~]# exit
[root@node-0001 ~]# docker commit 02fd1719c038 myos:latest
Dockerfile打包镜像
Dockerfile语法
语法指令 语法说明
FROM 基础镜像
RUN 制作镜像时执行的命令,可以有多个
ADD 复制文件到镜像,自动解压
COPY 复制文件到镜像,不解压
EXPOSE 声明开放的端口
ENV 设置容器启动后的环境变量
WORKDIR 定义容器默认工作目录(等于cd)
CMD 容器启动时执行的命令,仅可以有一条CMD
使用Dockerfile创建镜像

docker build -t 镜像名称:标签 Dockerfile所在目录

制作 myos:python 镜像
[root@node-0001 ~]# mkdir mybuild
[root@node-0001 ~]# cd mybuild
[root@node-0001 mybuild]# vim Dockerfile
FROM centos:latest
RUN  rm -f /etc/yum.repos.d/*.repo
COPY CentOS-Base.repo /etc/yum.repos.d/
RUN  yum install -y net-tools vim-enhanced tree bash-completion iproute psmisc && yum clean all
CMD  ["/usr/bin/python"]
[root@node-0001 mybuild]# cp /etc/yum.repos.d/CentOS-Base.repo ./
[root@node-0001 mybuild]# docker build -t myos:python .
制作apache镜像

CMD 指令可以查看 service 文件的启动命令 ExecStart(/lib/systemd/system/httpd.service)

ENV 环境变量查询服务文件中的环境变量配置文件 EnvironmentFile 指定的文件内容

[root@node-0001 ~]# mkdir web; cd web
[root@node-0001 web]# vim Dockerfile
FROM myos:latest
RUN  yum install -y httpd php
ENV  LANG=C
ADD  webhome.tar.gz  /var/www/html/
WORKDIR /var/www/html/
EXPOSE 80
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
# 拷贝 webhome.tar.gz 到当前目录中
[root@node-0001 web]# docker build -t myos:httpd .

查看与验证镜像

[root@node-0001 web]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myos                httpd               db15034569da        12 seconds ago      412MB
myos                python              1739313b5b75        About an hour ago   281MB
myos                latest              867409e412c8        2 hours ago         281MB
[root@node-0001 web]# docker rm -f $(docker ps -aq)
[root@node-0001 web]# docker run -itd myos:httpd
[root@node-0001 web]# curl http://172.17.0.2/info.php
<pre>
Array
(
    [REMOTE_ADDR] => 172.17.0.1
    [REQUEST_METHOD] => GET
    [HTTP_USER_AGENT] => curl/7.29.0
    [REQUEST_URI] => /info.php
)
php_host: 	6c9e124bee1a
1229
对外发布服务

给他 node-0001 绑定一个公网IP

docker run -itd -p 宿主机端口:容器端口 镜像名称:标签

# 把 node-0001 变成 apache 服务
[root@node-0001 ~]# docker run -itd -p 80:80 myos:httpd

# 把 node-0001 变成 nginx 服务,首先必须停止 apache
[root@node-0001 ~]# docker stop $(docker ps -q)
[root@node-0001 ~]# docker run -itd -p 80:80 nginx:latest

验证方式: 通过浏览器访问即可

容器共享卷

docker run -itd -v 宿主机对象:容器内对象 镜像名称:标签

[root@node-0001 ~]# docker rm -f $(docker ps -aq)
# 创建 apache 容器
[root@node-0001 ~]# docker run -itd --name webtest myos:httpd
# 创建目录,并拷贝 httpd.conf 配置文件
[root@node-0001 ~]# mkdir -p /var/{webroot,webconf}
[root@node-0001 ~]# docker cp webtest:/etc/httpd/conf/httpd.conf /var/webconf/
# 设置默认首页
[root@node-0001 ~]# echo "i am apache" >>/var/webroot/index.html
# 修改配置文件的监听端口
[root@node-0001 ~]# vim /var/webconf/httpd.conf
Listen 8080
# 启动容器,映射 80端口到8080,映射配置文件 /var/webconf/httpd.conf 映射数据目录 /var/webroot
[root@node-0001 ~]# docker run -itd -p 80:8080 \
                               -v /var/webconf/httpd.conf:/etc/httpd/conf/httpd.conf \
                               -v /var/webroot:/var/www/html myos:httpd

验证方式: 通过浏览器访问即可

制作php-fpm镜像
[root@node-0001 ~]# yum install -y php-fpm
[root@node-0001 ~]# mkdir php; cd php
[root@node-0001 php]# cp /etc/php-fpm.d/www.conf ./
12:  listen = 0.0.0.0:9000
24:  ;listen.allowed_clients = 127.0.0.1
# 拷贝云盘 kubernetes/docker-images/info.php 到当前目录
[root@node-0001 php]# vim Dockerfile
FROM myos:latest
RUN  yum install -y php-fpm
COPY www.conf /etc/php-fpm.d/www.conf
EXPOSE 9000
WORKDIR /usr/local/nginx/html
COPY info.php info.php
CMD ["/usr/sbin/php-fpm", "--nodaemonize"]
[root@node-0001 php]# docker build -t myos:php-fpm .
制作nginx镜像
[root@node-0001 ~]# yum install -y gcc make pcre-devel openssl-devel
[root@node-0001 ~]# useradd nginx
[root@node-0001 ~]# tar -zxvf nginx-1.12.2.tar.gz
[root@node-0001 ~]# cd nginx-1.12.2
[root@node-0001 nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
[root@node-0001 nginx-1.12.2]# make && make install
[root@node-0001 nginx-1.12.2]# cd /usr/local/
# 拷贝云盘 kubernetes/docker-images/info.html和info.php 到 nginx/html 目录下
[root@node-0001 local]# tar czf nginx.tar.gz nginx
[root@node-0001 local]# mkdir /root/nginx ;cd /root/nginx
[root@node-0001 nginx]# cp /usr/local/nginx.tar.gz ./
[root@node-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;"]
[root@node-0001 nginx]# docker build -t myos:nginx .
综合实验Nginx-PHP动静分离
实验架构图例
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值