Docker基础命令学习

  •  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提供的命令来构建环境、依赖等.

        Dockerfile主要组成部分:
        1.基础镜像信息 FROM  镜像名
        2.制作镜像操作命令 RUN 
        3.容器启动时执行指令 CMD ["/bin/bash"]

#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 #切换容器的工作目录

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>