Docker安装、基础命令

Docker三大核心:镜像、容器、仓库

Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中。可以理解为一个软件一个容器,这个容器不依赖本地的环境,而Docker相当于管理这些容器的一个平台或软件。

Yum安装Docker

# 一般都有docker-ce的包
yum -y install docker-ce

Docker命令

# 查看正在运行的容器
docker ps
# 查看所有容器,包含被停止的
docker ps -a 

# 查看本地仓库的镜像
docker images

# 启动容器,-p *:*为需要映射的端口,后面接images名称 
docker run -d -p *:* *        
-v *:*        #映射容器内的目录至本地目录
# 在启动容器时候加入--restart 参数自动启动容器
docker run --restart always                        
no 不自动重启容器. (默认值) 
on-failure 容器发生error而退出(容器退出状态不为0)重启容器,可以指定重启的最大次数,如:on-failure:10 
unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器 
always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器,手动stop的不算
                    
# 进入正在运行的容器,后面容器ID
docker exec -it ID /bin/bash                

# 进入正在运行的容器后拷贝容器内文件 容器ID:镜像路径 本地路径 
docker cp *:/home /home/test          
# 将本地文件拷贝至容器内 本地路径 容器ID:镜像路径
docker cp /home/test *:/home      

# 备份正在运行的容器,后面接备份名称
docker commit -p ID *

# 拷贝images里的镜像至本地,前面是镜像ID,后面是cp后的名字
docker save * > *
# 恢复备份至本地的镜像,后面接镜像地址
docker load < *               

# 给正在运行的容器更新重启配置,--restart搭配后面的参数使用
docker update --restart no *            

Dockerfile:docker自定义镜像时需要用到的一个配置文件,用户自己创建,该文件所在目录无所谓。 文件头部一般是FROM 后面紧跟着的是镜像所调用的系统,或者说是封装的系统。 大致意思是Dockerfile相当于一个系统在封装时所需要的必要的文件,里面包含了你所需要用到的命令。

搭建Squid案例

# 安装Docker是必要的
yum -y install docker
# 因为Squid只能在centos上运行,所以我们调用Centos7作为系统。
docker pull centos:7

# 创建Dockerfile
vim Dockerfile
# 填写以下内容
# FROM 引用系统、COPY将Dockerfile文件当前目录的start.sh脚本复制到镜像的根目录、RUN 表示运行的命令、EXPOSE 表示要映射的端口、CMD表示将要运行的命令,CMD参数只能有一条。
FROM centos:7
COPY ./start.sh /start.sh
RUN yum -y install squid httpd-tools && \
        yum clean all && \
        rm -rf /etc/squid  && \
        rm -rf /home/*
EXPOSE 8889
CMD ["sh","/start.sh"]

------------------------------------------------------------------------------

# 封装系统,-t 后面接的是name,.代表当面目录
docker build -t Squid:v1 .

# start.sh,因为docker镜像必须要有一个守护进程,用了一个脚本文件做到一个每隔180秒输出 "squid is runing...",ps -ef|grep squid检测到没有squid的进程则 /usr/sbin/squid重启服务。
#/bin/bash
squid -z
/usr/sbin/squid
while true;do
        count=`ps -ef|grep squid|grep -v grep`
        if [ "$?" != "0" ];then
echo    "no squid,run it"
/usr/sbin/squid
else
echo "squid is runing..."
fi
sleep 180
done

作者:Zleoco,如若转载,请注明出处:https://www.zleoco.com/?p=227

发表回复

您的电子邮箱地址不会被公开。