-
Docker安装部署
image镜像,构建容器(#将服务所需文件打包成镜像文件)
container 容器 #搭建的应用程序服务就运行在容器内
镜像仓库(dockerhub) #提供镜像保存平台,用于上传或下载
Dockerfile #将部署项目的操作编,写为部署的脚本,该脚本用于构建镜像文件
#docker必须运行在centos7上,内核不低于3.10
swapoff -a #关闭swap分区
iptables -F #清空防火墙规则
systecmctl stop firewalld #关闭防火墙
systemctl disable firewalld #关闭防火墙自启
setenforce 0
yum install -y yum-utils device-mapper-persistent-data lvm2 lrzsz wget vim #安装基础环境工具
yum install -y docker-ce #安装docker 基础服务
#配置镜像加速服务
vim /etc/docker/daemon.json
{
"insecure-registries" : ["0.0.0.0/0"],
"registry-mirrors": ["https://5twf62k1.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl enable docker #设置docker开机自启
systemctl daemon-reload #重启daemon文件
docker login harbor仓库地址 #登录harbor仓库
docker tag 镜像名:tag标签 仓库地址/项目名/镜像名:tag
docker push 仓库地址/项目名/镜像名:tag #上传镜像
Docker镜像
docker images --format "{{.ID}}-{{.Repository}}" #定制镜像显示面板
'docker的删除'
docker rm 容器ID #删除容器
docker rmi 镜像ID #删除镜像
docker rmi 镜像ID前三位 #删除镜像
'镜像的管理'
docker images -aq #列出所有的ID
docker rmi `docker images -aq` #删除所有的镜像
docekr rm `docker ps -aq` #删除所有容器
docker image save 镜像名:tag > /opt/centos.7.8.2003.tgz #导出镜像
docker image load -i /opt/centos.7.8.2003.tgz #导入镜像
docker image inspect 镜像ID #查看镜像的详细信息
-
Docker容器
#获取镜像,从配置好的docker镜像站中拉取所需镜像
docker search nginx #搜索仓库中是否含有nginx镜像
docker pull nginx #拉取nginx镜像
docker imges #列出本地镜像
docker rmi 镜像ID #删除镜像
docker top 容器ID #查看容器内的进程信息
docker stats 容器ID #查看容器内的资源信息
docker inspect 容器ID #查看容器内的IP地址,容器的格式化参数
docker inspect --format '{{.主key.子key}}' 容器ID #自定义获取容器的参数
#后台运行容器
docker run -d -p 宿主机端口:容器端口 镜像ID #-p 端口映射 #-d 让容器至后台运行 (针对宿主机而言)-P 随机分配宿主机的空闲端口
docker stop 进程ID #停止容器的运行
docker start 进程ID #启用容器
docker ps #查看docker容器运行进程列表
'容器内进程需处于前天运行,否则容器将会直接退出'
#容器内必须有个进程在前台运行
#运行容器并进入容器
docker run -it 容器ID bash #-i 交互式命令操作 -t开启一个终端 bash 命令解释器
docker run -it --rm 容器ID bash #退出容器时删除该容器 --restart=always 实时检测容器运行状态,如果为done则立马重启
#进入至运行中容器
docker exec -it 容器ID bash #进入一个正在运行的容器
--name 名字 #自定义容器名
docker logs -f 容器ID #查看容器日志 -f 类似于tail实时更新
docker inspect 容器ID #查看容器的详细信息
docker port 容器ID #查看容器的端口情况
1.docker run -it 容器ID bash
2.yum install vim -y
#运行基础的镜像,在容器内安装服务,然后再提交新的容器。
docker commit 容器ID 新的镜像名称 #将安装过新服务的容器提交为镜像
-
构建Dockerfile
Dcokefile 用于构建docker镜像,类似于脚本通过dockerfile提供的命令来构建环境、依赖等.文章来源:https://www.toymoban.com/news/detail-787689.html
Dockerfile主要组成部分:
1.基础镜像信息 FROM 镜像名
2.制作镜像操作命令 RUN
3.容器启动时执行指令 CMD ["/bin/bash"]文章来源地址https://www.toymoban.com/news/detail-787689.html
#Dockerfile 实践
vim Dockerfile
FROM nginx:latest
RUN echo '<meta charset=utf8> test123456' > /usr/share/nginx/html/index.html
CMD /bin/bash
#构建dockerfile
docker build -t 'test_image' . # .为当前路径 -t指定镜像标签
--no cache #不读取缓存
#修改镜像名
docker tag 镜像ID 镜像名:标签
COPY模块
copy #指令从宿主机复制文件至镜像内路径
copy test.txt /home/
#支持多个文件,以及通配符形式复制,语法满足Golang的filepath.Match
copy test* /opt/11.txt /home
ADD模块
1.特性和COPY基本一致,不过多了些功能
2.源文件是一个URL,且是一个压缩包,不会自动解压,也得单独用RUN指令解压
3.源文件是一个压缩文件,且是gzip, bzip2,kz,tar情况,ADD指令会自动解压缩该文件到目标路径
ADD test.tar.gz /home #支持文件解压 同时支持url资源文件传输
CMD模块
#在容器内运行某个命令,多用于启动程序
CMD ["参数1","参数2"] #cmd语法
CMD ["ls","/opt/docker"] #在容器内列出/opt/docker下文件
ENTRYPOINT模块
#ENTRYPOINT和CMD的区别以及用法
1.ENTRYPOINT和CMD一样都是指定容器启动程序及参数
2.当指定了ENTRYPOINT之后,CMD指令的语义就会发生变化,把CMD的内容当作参数传递给ENTRYPOINT指令
CMD ["curl","-s","www.baidu.com"]
#Dockerfile使用cmd构建命令后,运行容器无法使用-I 前台传递命令参数
docker run new_image -I
'ERROR'
ENTRYPOINT ["curl","-s","www.baidu.com"]
#ENTRYPOINT相较于CMD,构建完镜像后后续前台运行容器可以使用 -I 追加命令参数
docke run new_image -I
'SUCCESS'
ARP、ENV模块
#设置环境变量
ENV MYSQL_VERSION='5.6'
RUN yum insstall mysql-MYSQL_VERSION
#ARG和ENV 同样为设置环境变量
区别在于ENV 无论是镜像构建时,还是容器运行,变量都可以使用
ARG只是用于Dockerfile构建镜像时需要设置的变量, 镜像生成容器后ARG设置的变量将会消失。
Volume模块
#容器在运行时,应保证在存储层不写入任何数据,运行在容器内产生的数据,应挂载至宿主机上进行维护。
VOLUME /data #将容器内的/data文件夹,在容器运行时,该目录自动挂载为匿名卷
FROM centos
MAINTAINER master
VOLUME ["/data1","/data2","/data3"]
#该镜像运行容器时,data1-3自动与宿主机构成映射关系
docker inspect 容器ID #查看容器详细信息
EXPOSE、WORKDIR、USER模块
#指定容器运行时对外提供端口服务
1.帮助使用镜像,快速理解容器的端口业务
docker port 容器 #给容器指定端口
docker run -p 宿主机端口:容器端口 #为容器映射端口
docker run -P #随机分配宿主机空闲端口
#用于改变环境,切换容器的工作用户
USER root
#用于在dockerfile中更改工作目录
WORKDIR /opt #切换容器的工作目录
到了这里,关于Docker基础命令学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!