Docker入门

1. Docker 简介

Docker是一个开源的容器引擎,它有助于更快的交付应用。Docker可将应用程序和基础设施层隔离,并能将基础设施当做程序一样进行管理。是赢Docker可以更快的打包,测试以及部署应用程序,可以缩短从编写到部署运行代码的周期。

2. Docker 架构

在这里插入图片描述

概念说明
Client(Docker客户端)Docker客户端是 Docker的用户界面特可以接受用户命令和配置标识,并与Docker daemon 通信。图中,docker build 等都是Docker的相关命令。
Docker daemon(Docker守护进程)Dockerdaemon是一个运行在宿主机(DOCKER_HOST)的后台进程,可通过 Docker 客户端与之通信
Images (Docker镜像)Docker镜像是一个只读模板。是用于创建 Docker 容器的模板
Container(容器)容器是是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。可通过Docker API 或者CLI 命令来启动,移动,删除容器
Registry (仓库)Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
2.2 CentOS7 安装Docker
1.确保 yum 包更新到最新
[root@localhost ~]#  yum -y update

2.安装yum-utils 这样就能使用yum-config-manager工具设置yum源
[root@localhost ~]# yum install -y  yum-utils

3.添加docker的yum源
[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4.列出docker所有版本
[root@localhost ~]# yum list docker-ce --showduplicates | sort -r

5.安装
[root@localhost ~]# yum install docker-ce
# yum install <FQPN>

6.启动
[root@localhost ~]# systemctl start docker
7.开机自启
[root@localhost ~]# systemctl enable docker

8.查看docker安装版本
docker version
3. Docker镜像常用命令
*1.  搜索镜像
[root@master ~]# docker search 镜像名称        #例:docker search nginx

*2. 下载镜像
[root@master ~]# docker pull 镜像名称        #例:docker pull java

该命令可指定想要下载的镜像标签以及Docker  Registry 地址。例如:docker pull reg itmuch.com/java:7 这样就可以从指定的Docker Registry 中下载标签为7 的java镜像

*3. 列出镜像 
[root@master ~]# docker images 

*4. 删除镜像 
[root@master ~]# docker rmi 镜像名称  
[root@master ~]# docker rmi -f $(docker images)    #-f 标识强制删除
4. Docker 容器常用命令
*1. 新建并启动容器
[root@master ~]# docker run
使用docker run命令即可新建启动一个容器,它有很多选项:

	-d : 标识后台运行
	-P : 随机端口映射
	-p : 指定端口映射,有以下四种
		- ip:hostPort:containerPort
		- ip::containerPort
		- hostPort:containerPort
		- containerPort
 	-network : 指定网络模式,该选项有以下可选参数:
 		- --network=bridge : 默认选项,标识连接到默认网桥
 		- --network=host : 容器使用宿主机网络
 		- --network=container:NAME_or_ID : 告诉Docker让新建的容器使用已有容器的网络配置
 		- --network=none : 不配置该容器网络,用户可以自定义网络配置
示例:
[root@master ~]# docker run -d -p 91:80 nginx

*2. 列出容器
[root@master ~]# docker ps 


*3. 停止容器
[root@master ~]# docker stop 容器ID
[root@master ~]# docker kill 容器ID       #强制停止

*4. 启动停止的容器 
[root@master ~]# docker start 容器ID

*5.  重启容器
[root@master ~]# docker restart 容器ID

*6.  进入容器
[root@master ~]# docker attach 容器ID

*7.  删除容器 
[root@master ~]# docker rm 容器ID      # 只能删除已经停止的容器,删除正在运行的容器 添加 -f 参数
5. Dockerfile指令详解
FROM 指定基础镜像,想在其他指令之前 。FROM 指令后的所有指令都依赖该指令指定的镜像

RUN	 编译镜像时运行的脚本。
     格式: RUN <command>
           RUN ["execuable","param1","param2"] 
     示例: RUN source $HOME/.bashrc;\ 
           echo $HOME
           RUN [“/bin/bash”,-c”,”echo hello”]
           RUN [“sh”,-c”,”echo”,”$HOME”] 

ADD  复制文件。
     格式: ADD <src> ... <dest>
      	  ADD ["<src>",..."<dest>"]
          src 可以是一个Dockerfile 相对路径,也可以是一个url。	
     注意:  
      (1). src 必须在构建的上下文内,不能使用例如:ADD ../somethine /something 这样的命令,因为
      docker build 命令首先会将上下文路径和器子目录发送到docker  daemon	。	
      (2). 如果src是一个url,同时dest不以斜杠结尾,dest 将被视为文件,四川人对应的内容将被下载到dest。
      (3). 如果 src 是一个 url,同时dest以斜杠结尾,dest将被视为目录,src 对应的内容下载到 dest 目录
      
ARG	设置编译镜像时加入的参数。
	 格式: ARG <name>[=<default value>]
	 示例: ARG user1=someuser
	 
CMD 容器启动命令。每个Dockerfile 只有一个CMD命令,如果指定了多个CMD,最后一条被执行,如果启动容器时指
    定了运行的命令,则会覆盖掉CMD指定的命令
     格式: CMD ["execuable","param1","param2"] (腿甲使用)
           CMD ["param1","param2"] (为ENTRYPOINT指令提供预设参数)
           CMD command param1,param2 (在shell中执行)
           
COPY 编译镜像时复制文件到镜像中。
     格式: COPY <src> ... <dest>
      	   COPY ["<src>",..."<dest>"]
      	   
ENTRYPOINT 这只容器入口程序。和CMD命令一样,都是指定Docker容器启动时执行的命令,可多次设置,最后一条有效     	   
     格式: ENTRYPOINT ["execuable","param1","param2"] 
           ENTRYPOINT command param1,param2
           
ENV  设置容器环境变量。
     格式: ENV <key> <value>
    	   ENV <key>=<value>
     示例: ENV JAVA_HOME /path/to/java	   
     
EXPOSE  这只镜像暴露的端口。
     格式: EXPOSE port1
           EXPOSE port1 port2 port3

LABEL 设置镜像标签。
     格式: LABEL <key>=<value> <key>=<value> <key>=<value> ...
     示例: LABEL "com.example.vendor"="ACME Incorproated"
           LABEL version="1.0"

MAINTAINER 设置镜像作者。
	 格式: MAINTAINER <name>

USER 设置运行 RUN CMD ENTRYPOINT 的用户名。
     格式: USER <name>

VOLUME 设置容器的挂载点。改指令使容器中的一个目录具有持久化存储的功能,该目录可以被容器本身使用,也可以共享给其他容器。
     格式: VOLUME ["/data"]

WORKDIR 设置 RUN CMD ENTRYPOINT COPY ADD 指令的工作目录。
     格式: WORKDIR /path/to/workdir
     
STOPSIGNAL 设置容器退出时,Docker Daemon向容器发送的信号量 
     格式: STOPSIGNAL signal 
     提示: 信号量可以是数字或者信号量的名字,如9或者SIGKILL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值