Docker学习笔记|第一篇:Docker学习笔记之基础知识

目录

    • 1.Docker安装(centos7)
    • 2.Docker镜像常用命令
    • 3.Docker容器常用命令
    • 4.Dockerfile
    • 5.将镜像上传至阿里云开发平台
    • 6.参数文档

1.Docker安装(centos7)

  • 检查linux内核(要求linux内核在3.10以上)
$ uname -r
  • 卸载系统中docker
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

注意:执行上述命令并不会删除docker容器及镜像,镜像及容器目录在/var/lib/docker

  • 安装仓库

yum-utils:提供um-config-manager
device-mapper-persistent-data和lvm2:为devicemapper所必须

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  • 更改下载仓库改为阿里云
$  yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新yum包
$ yum makecache fast
  • 安装docker
$ yum install -y docker-ce
  • 配置镜像加速
$ mkdir -p /etc/docker
$ vim /etc/docker/daemon.json
# 修改daemon.json
{
	"registry-mirrors": ["https://registry.docker-cn.com"]
}
  • 加载配置文件并重启docker
$ systemctl daemon-reload
$ systemctl restart docker
  • 设置开机启动docker
$ systemctl enable docker
  • 其它命令
# 列出所有版本
$ yum list docker-ce.x86_64 --showduplicates | sort -r
# 安装指定版本docker
$ sudo yum install docker-ce-<VERSION>
# shell一键安装
$ curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh

2.Docker镜像常用命令

  • docker基本信息查询
# 显示版本信息,不加--展示所有信息
$ docker version

Client: Docker Engine - Community
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.5
 Git commit:        74b1e89
 Built:             Thu Jul 25 21:21:07 2019
 OS/Arch:           linux/amd64
 Experimental:      false
...

# 展示简单信息
$ docker --version

Docker version 19.03.1, build 74b1e89
# 描述信息
$ docker info
# 帮助信息
$ docker help
# 查看logs用法
$ docker logs --help
# 查询运行日志,-f:表示滚动详细日志,-t:表示打印出时间
$ docker logs -ft 镜像id
  • 搜索镜像

–automated:只列出自动构建的镜像
–filter,-f:根据条件进行过滤结果
–limit:搜索结果的最大条数,默认值:25
–no-trunc:显示完整输出
–stars,-s:收藏数,默认:0

# 搜索mysql镜像
$ docker search mysql 
# 搜索收藏量高于10的镜像
$ docker search -s 10 mysql 
# 搜索结果只展示3条
$ docker search --limit 3  mysql
  • 下载镜像

–all-tags,-a:下载所有标签的镜像,默认值:false
–disable-content-trus:忽略镜像的校验,默认值:true
默认情况下镜像后边不写标签版本号,即下载最新版本

# 下载最新版本
$ docker pull mysql
# 下载指定版本
$ docker pull mysql:8.0.17	
  • 查寻指定版本:

1.登录https://hub.docker.com/_/mysql?tab=tags
2.搜索要查找的镜像
3.点击找到的镜像,找到tags

  • 镜像命令使用

–all,-a:列出本地所有镜像,默认值:flase
–digests:显示摘要信息,默认值:false
–filter,-f:显示满足条件的镜像
–no-trunc:显示完整镜像信息,images不截断
–quiet,-q:只显示镜像id

# 显示所有镜像,以下两个命令功能相同
$ docker images
$ docker image ls
  • 删除本地镜像

–force,-f:强制删除
删除的镜像可以是镜像名或镜像id

# 删除镜像,可以是镜像名或镜像id
$ docker rmi -f 镜像名或镜像名
# 删除所有镜像
$ docker rmi -f $(docker images -q)
  • 导出和导入镜像

–output,-o:输出至文件
–input,-i:从文件加载
–quiet,-q:静默加载

# 导出镜像
$ docker save -o hello.tar hello-world
# 导入镜像
$ docker load -i hello.tar
  • 批量处理镜像

批量删除名字中含有harbor的镜像

$ docker images|grep 'goharbor'|awk '{print $3}'|xargs docker rmi
  • 提交容器副本

a:作者
-m:提交的描述信息

$ docker commit -m "new hello-world" -a "milk"  0e982b0ba51d  hello:1.0

3.Docker容器常用命令

  • 新建并启动容器

-d:后台启动
-i:以交互模式运行容器
-t:分配一个伪输入终端
-P:随机端口映射
-p:指定端口映射
–name:指定别名

# 前台运行容器
$ docker run -it --name jenkins -p 8080:8080 jenkins:latest
# 后台运行容器
$ docker run -d --name jenkins -p 8080:8080 jenkins:latest
  • 查看当前正在运行的容器

-a:列出当前所有容器
-l:显示最近创建的容器
-n:显示最近n个创建的容器
-q:只显示容器编号
–no-trunc:不截断输出

# 查询所有容器,以下两个命令功能相同
$ docker ps -a
$ docker container ls --all
  • 退出容器

exit:提容器停止并退出
ctrl+p+q:容器不停止退出

  • 容器启停相关操作
# 启动容器
$ docker start 容器id或容器名
# 重启容器
$ docker restart 容器id或容器名
#  停止容器
$ docker stop 容器id或容器名
# 强制停止容器
$ docker kill 容器id或容器名
  • 删除容器相关操作
# 删除已停止容器(删除指定容器)
$ docker rm -f 容器id或容器名
# 删除所有容器
$ docker rm -f $(docker ps -aq)
$ docker ps -aq | xargs docker rm 
  • 批量删除容器

批量删除名字中含有harbor的容器

$ docker ps -a|grep 'goharbor'|awk '{print $1}'|xargs docker rm -f
  • 查看容器日志

-t:加入时间戳
-f:滚动打印
–tail:显示最后多秒条

$ docker logs -ft --tail 10 jenkins
  • 查看容器运行情况
# 查看容器内部运行进程
$ docker top 容器id
# 查看容器内部细节
$ docker inspect 容器id
  • 进入正在运行的容器并以命令行交互
$ docker exec -it 容器id /bin/bash
  • 从容器中拷贝文件至宿主机
# docker cp 容器id:容器内路径  目的主机路径
$ docker cp c94324c4923e:/var/jenkins_home/1.txt /home/milk/docker/
  • 挂载容器
$ docker run -d --name jenkins -p 8080:8080 -p 8010:8010 -p 50000:50000 -v /home/milk/docker/jenkins_home:/var/jenkins_home ba607c18aeb7

4.Dockerfile

Dockerfile就用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本

  • 构建镜像步骤
    1.编写Dockerfile文件
    2.执行docker build命令
    3.运行构建好的docker镜像
  • dockerfile基本命令

FROM:后跟基础镜像,即以该基础镜像构造出新的镜像
MAINTAINER:指镜像创建者信息,[email protected]
RUN:指在构建镜像时,需要执行的linux命令
EXPOSE:指创建好的镜像向外暴露出的端口
WORKDIR:指镜像创建好后,进入docker镜像中的默认路径
ENV:指设置环境变量,可做变量传递
ADD:指宿主主机当前目录下的文件拷贝至镜像中,并自动解压
COPY:与ADD类似,但不能解压
VOLUME:容器卷,用于保存和持久化工作
CMD:指定容器启动时需要运行的命令,后边的命令会覆盖前一个命令,也就是说只有最后一个命令生效
ENTRYPOINT:与CMD类似,但不是覆盖,而是追加命令
ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的
onbuild被触发

  • dockerfile安例演示
    1.书写dockerfile
# 指定基础镜像
FROM centos
# 指定作者信息
MAINTAINER  milk<[email protected]>
# 设置构建时需要执行的命令
RUN yum install -y vim 
RUN yum install -y net-tools
# 设置环境变量
ENV MYPATH /usr/local
# 设置进入docker镜像时的默认路径
WORKDIR $MYPATH
# 对外暴露端口
EXPOSE 80
# 设置运行命令
CMD /bin/bash

2.执行build命令

# 说明-f:表示指写dockerfile文件路径,-t:指定镜像的名与版本号
$ docker build -f /home/milk/docker/dockerfile/centos_dockerfile -t mycentos:1.0 .

3.运行创建好的镜像

$ docker run -d mycentos:1.0

5.将镜像上传至阿里云开发平台

  • 登录阿里云开发平台https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
  • 创建命名空间
  • 创建镜像仓库
  • 执行如下命令上传镜像
$ sudo docker login --username=[阿里云开发平台账号] registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/zycao_aliyun/my_tomcat:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/zycao_aliyun/my_tomcat:[镜像版本号]
  • 搜索镜像

命名空间名/镜像仓库名

  • 下载镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/命名空间/镜像仓库名:版本号

6.参数文档

https://docs.docker.com/

你可能感兴趣的:(Docker)