docker让我摆脱了重复搬砖

前面文章中,我们已经介绍了docker的安装和使用方法,这篇文章我们来继续探索打包自己的镜像,实现一次部署,重复使用。

以安装PHP为例:可以有两种方法:

第一种方法,拉取官方的镜像:

docker pull php:8.0-fpm

docker run -itd --name myphp8.0 php

以上两步可以一步实现:

docker run -itd --name myphp8.0 php:8.0-fpm

docker ps 查看容器的运行状态

运行php容器后,

docker exec -it myphp8.0 /bin/bash 进入容器

这时我们可以容器内作任何我们想做的操作,就像在真实的机子一样。如要安装php 扩展、安装一新必要的软件等。

第二种方法就是能过编写dockerfile直接完成:

FROM php:8.0-fpm

ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/

RUN chmod +x /usr/local/bin/install-php-extensions && \
    install-php-extensions gd xdebug redis mongodb

RUN apt-get update && apt-get install -y git vim zlib1g-dev wget libssl-dev 
# install cmake
RUN cd /tmp && wget https://github.com/Kitware/CMake/releases/download/v3.16.1/cmake-3.16.1.tar.gz && tar xzf cmake-3.16.1.tar.gz && cd cmake-3.16.1 && ./bootstrap && make -j8 && make install
RUN cd /tmp && rm -r cmake-3.16.1 && rm cmake-3.16.1.tar.gz 

# install golang  
RUN cd /tmp && wget https://golang.org/dl/go1.16.6.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.16.6.linux-amd64.tar.gz
RUN export PATH=$PATH:/usr/local/go/bin
RUN cd /tmp && rm go1.16.6.linux-amd64.tar.gz 
RUN mkdir -p /home/go/src && mkdir -p /home/go/bin && mkdir -p /home/go/pkg

现在来执行docker的构建:

docker build -t myphp8.0:v1 .

构建完成后,运行dokcer images 可以查看到两个镜像,分别为php:8.0-fpm 和myphp8.0:v1。

这时可以用刚刚构建的镜像来启动容器了。

docker run -itd --name php8.0 myphp8.0 (这里可以根据需要用-v -p 来映射目录和端口)

这时运行docker ps 可以查看到名字为php8.0的容器已经启动了。

docker exec -it php8.0 /bin/bash 进入容器进一步完善我们需要安装的其实操作。

到这里,我们已经部署好了一个完美的容器环境了。但是如果我们要在另外一台机器上再部署一个同样的环境,我们是不是要做以上相同的操作呢?答案是不需要。

下面一起来实现:

先停止现有容器

docker stop container-name

将容器commit成为一个镜像

docker commit container-name -m "commit log" new-image-name

注意:要将镜像提交到docker hub 上,命名要符合规则: docker.hub的账户名/镜像名

docker stop php8.0

docker commit php8.0 -m "这是我的php镜像" xiaoming/php8

或者把现在的镜像 名称改为规则名称: docker tag old-name new-name

登录docker hub :

执行:docker login

输入帐号密码:(没有帐号密码的请求先去申请)

推送到docker hub:

docker push xiaoming/php8

到这里,我们已经完成了将部署好的容器打包成自己的镜像并提交到自己的docker 账号上。

当我们需要在另一台机器上部署这个容器时,只需要:

docker run -itd --name myphp8.0 xiaoming/php8

docker ps 查看,可以看到我们已经把自己的镜像成功运行起来了。

当一个或者几个容器的启动或关闭我们可以直接用docker stop docker start ,但想一下如果有数十个甚至数百个容器,我还这么去管理容器就会显得有些力不从心了。这时候我们就可以引入docker compose 来管理容器了。

好了,这期就先说到这里,下期我们继续来和大家一起来探讨如何用docker-compose 来管理容器。

如果你喜欢我们的文章,欢迎关注我们的微信公众号,及时收到我们最新的技术文章

 回复关键字还可以获取更多技术学习内容哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值