docker基础命令大全

简单介绍Docker容器

容器类似于windows下的VMware、Hyper-V装的虚拟机;
但docker由linux系统实现虚拟化,完整资源隔离;可以快速部署启动应用;一次编写,四处运行(有一定的限制,比如Docker是基于Linux 64bit的,无法在32bit的 linux/Windows/unix环境下使用)

安装Docker容器

windows下安装docker请看这里
linux下安装docker请看这里

Docker基础命令

查看docker安装包:yum list | grep docker
安装Docker Ce 社区版本:yum install -y docker-ce.x86_64
设置开机启动:systemctl enable docker
更新xfsprogs:yum -y update xfsprogs
启动docker:systemctl start docker
查看版本:docker version
查看详细信息:docker info

Docker镜像的"增删改查"

查看本地镜像:docker images
搜索镜像:docker search centos
搜索镜像并过滤是官方的: docker search --filter "is-official=true" centos
搜索镜像并过滤大于多少颗星星的:docker search --filter stars=5 centos
下载centos7镜像:docker pull centos:7
下载mysql5.7镜像:docker pull mysql:5.7
修改本地镜像名字(小写):docker tag centos:7 mycentos:1
本地镜像的删除:docker rmi centos:7
本地镜像的强制删除:docker rmi -f centos:7

Docker容器的"增删改查"

构建容器:docker run -itd --name=mycentos centos:7
-i :表示以交互模式运行容器(让容器的标准输入保持打开,一般与-t成对出现)
-t:为容器重新分配一个伪输入终端
-d:表示后台运行容器,并返回容器ID
--name:为容器指定名称
查看本地所有的容器:docker ps -a
查看本地正在运行的容器:docker ps
停止容器:docker stop CONTAINER_ID / CONTAINER_NAME
一次性停止所有容器:docker stop $(docker ps -a -q)
启动容器:docker start CONTAINER_ID / CONTAINER_NAME
重启容器:docker restart CONTAINER_ID / CONTAINER_NAME
删除容器:docker rm CONTAINER_ID / CONTAINER_NAME
强制删除容器:docker rmi -f CONTAINER_ID / CONTAINER_NAME
查看容器详细信息:docker inspect CONTAINER_ID / CONTAINER_NAME
查看容器的挂载信息:docker inspect CONTAINER_ID / CONTAINER_NAME |grep Mounts -A 20
进入容器:docker exec -it CONTAINER_ID /bin/bash

Docker容器与宿主机之间文件复制

从宿主机复制到容器:docker cp 宿主机本地路径 容器名字/ID:容器路径
docker cp /root/demo.txt mycentos:/home/
从容器复制到宿主机:docker cp 容器名字/ID:容器路径 宿主机本地路径
docker cp mycentos:/home/demo.txt /root

宿主机文件夹挂载到容器里

docker run -itd -v 宿主机路径:容器路径 镜像ID

#例子 启动centos:7镜像,并将宿主机/root/demo目录挂载到容器的/home,此操作可以简单理解为 快捷方式,
/root/demo相当于/home的快捷方式,/home也相当于/root/demo的快捷方式,目录下内容共享
docker run -itd -v /root/demo/:/home centos:7

本地镜像与容器的载入载出

俩种方法:
   保存镜像
   保存容器
   
#保存镜像(此种方法镜像ID不会改变)
docker save ed3ed0dfrf7e -o /home/mysql.tar
docker save mysql:5.7 > /home/mysql.tar
#载入镜像:
docker load -i mysql.tar

#保存容器(此种方法镜像ID会改变)
docker export f7rb919e1fdv -o /home/mysql-export.tar
#载入容器:
docker import mysql-export.tar

Commit构建自定义镜像

简介:对容器特定修改后,保存为镜像

#命令 假设 1786256gd4fv 为容器ID,此时构建镜像:
## 第一种方式: 
docker commit 1786256gd4fv mycentos:7
## 第二种方式: 
docker commit -a "WL" -m "mkdir /home/liwang" 2eb9drr4fbb1c mcentos:7
-a:标注作者
-m:说明注释
实际中构建操作演示

## 启动并进入容器:
docker run -it centos:7 /bin/bash

## /home 路径下创建xdclass文件夹:
mkdir /home/liwang

## 安装ifconfig命令:
yum -y install net-tools

## 重启容器,查看容器的 liwang 文件夹还在不在->()
docker restart 1786256gd4fv
## 构建镜像1786256gd4fv,起名为 mycentos:7 
docker commit 1786256gd4fv mycentos:7
docker commit -a "WL" -m "mkdir /home/liwang" 1786256gd4fv mcentos:7
-a:标注作者
-m:说明注释

## 删除容器,再重新使用centos:7启动一个容器进入查看有没有 liwang 文件夹->()
docker rm -f 1786256gd4fv && docker run -it centos:7 /bin/bash
## 重新使用mcentos:7启动一个容器进入查看有没有 liwang 文件夹->()
docker run -it mycentos:7 /bin/bash

查看详细信息:docker inspect 1786256gd4fv
启动容器:docker run -itd 1786256gd4fv /bin/bash
进入容器查看:docker exec -it 1786256gd4fv /bin/bash

Dockerfile构建镜像

Dockerfile基础指令
FROM        ->  基于哪个镜像
MAINTAINER  -> 注明作者
COPY        ->  复制文件进入镜像(只能用相对路径,不能用绝对路径)
ADD         -> 复制文件进入镜像(假如文件是.tar.gz文件会解压, .sql会执行)
WORKDIR     -> 指定工作目录,假如路径不存在会创建路径
ENV         -> 设置环境变量
EXPOSE      -> 暴露容器端口(一般是用来 标注 此容器需要对外暴露的端口, 一般在运行容器时 用-p映射,-p加上制定映射端口则映射制定端口,如-p后无指定端口,则映射EXPOSE所有端口,但宿主机端口随机)
RUN         -> 在构建镜像的时候执行,作用于镜像层面
ENTRYPOINT  -> 在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
CMD         -> 在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
容器启动后执行默认的命令或者参数,允许被修改,例如 "docker run -it mycentos:7 /bin/bash",此时"/bin/bash"即为CMD 
命令格式:
shell命令格式:RUN yum install -y net-tools
exec命令格式:RUN [ "yum","install" ,"-y" ,"net-tools"]
创建一个简易的Dockerfile
# this is a simple dockerfile 
FROM openjdk:8-jre 
MAINTAINER LW 123456@qq.com 
RUN echo "正在构建镜像!!!" 
WORKDIR /home/liwang 
COPY 123.txt /home/liwang 
RUN yum install -y net-tools
# 复制jar文件到路径
COPY ./jar/helloworld.jar /home/liwang/helloworld.jar
# 启动helloworld服务
ENTRYPOINT ["java","-Dfile.encoding=utf-8","-jar","helloworld.jar"]
构建dockerfile
#在dockerfile同级执行
docker build -t helloworld:v1 .
#查看:
docker images
#进入验证
docker run -itd helloworld:v1 /bin/bash
镜像分层结构剖析

在这里插入图片描述

共享资源
对容器的任何改动都是发生容器层
容器层是可写可读,而镜像层只读

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值