docker学习笔记——安装及基础命令

一、docker安装(Cenos7操作系统)

1)检查前提条件
uname -a(检查内核版本,需要高于3.8)
grep device-mapper /proc/devices(检查是否存在Device Mapper)
yum instal -y device-mapper(如果不存在device-mapper则安装)
modprobe dm_mod(加载Device Mapper模块)
2)安装Docker
yum install -y epel-release
yum install -y docker-io
3)启动Docker守护进程
systemctl start docker(启动docker)
systemctl enable docker(启动docker守护进程)

二、docker基础操作

docker info    ---->   查看当前docker的所有容器、镜像及驱动等详细信息
docker run -i -t <image name> /bin/bash    ---->    启动一个指定镜像的Docker容器(-i 保证容器STDIN是开启的,-t为创建的容器分配一个伪tty终端,这两个命令行参数为新创建的容器提供了一个交互式shell)
docker run --name <docker name> -i -t <image name>:<version> /bin/bash    ---->    启动一个指定容器名称及镜像版本的Docker容器
docker run -d -p <host ip>:<host port>:<docker port> <image name>    ---->    后台一个对应端口映射的Docker容器
docker start <docker name/docker id>    ---->    启动容器
docker attach <docker name/docker id>    ---->    进入到容器会话中
docker run --name <容器名称> -d <镜像名称> /bin/sh -c "while true; do echo hello world; sleep 1; done"    ---->    创建守护式容器(docker run使用了-d参数,Docke会将容器放到后台运行)
docker ps    ---->    显示当前运行中的容器
docker ps -a    ---->    显示当前所有容器
docker logs <docker name>    ---->    获取容器的日志
docker logs --tail 10 -f <docker name>    ---->    始终获取容器最后10行的日志
dokcer top <docker name>     ---->    查看容器内的进程
docker exec -d <docker name> <cmd>    ---->    在容器后台运行命令
docker exec -i -t <docker name> /bin/bash    ---->    在容器内运行交互式命令
docker stop <docker name/docker id>    ---->    停止守护进程
docker run --restart=always --name <docker name> -d <image name> /bin/sh        ---->    创建一个自动重启的容器,当--restart参数的为on-failure:5时,则可设置容器最多重启5次
docker inspect <docker name>        ---->    获取指定容器的详细信息
docker inspect --format '{{.Name}} {{.State.Running}}'            ---->    指定多个容器,并显示每个容器的输出结果
docker kill <docker name/docker id>        ---->    强制停止容器
docker rm <docker name/docker id>        ---->    删除容器
docker rm 'docker ps -a -q'        ---->    删除所有容器(docker ps -a表示列出了所有的容器,-q表示只返回容器的ID,获取所有容器的ID信息传给docker rm)

三、docker镜像与仓库

1、镜像与仓库
Docker镜像最底层是一个引导文件系统(bootfs),当一个容器启动后,容器将会被移动到内存中,而引导文件系统将会被卸载,以留出更多内存空间供initrd磁盘镜像使用。第二层是root文件系统(rootfs),它位于引导文件系统之上。Docker通过联合加载技术在roofs上,一次同时加载多个文件系统,将各层文件系统叠加到一起,最终仅以一个文件系统呈现给用户。Docker将这样的文件系统称作镜像。

Docker文件系统层

父镜像:B镜像位于A镜像下面,则B镜像称为A镜像的父镜像
基础镜像:镜像栈最底部的镜像

Docker会在会在镜像的最顶层加载一个读写文件系统,供Docker运行程序在读写层执行。Docker使用写时复制的机制来对文件进行处理。写时复制:当创建一个新容器,Docker会构建一个镜像栈,并在栈的最顶端添加一个读写层,每次修改文件,Docker首先会从该读写层下面的只读层中获取该文件的复制副本,在通过修改读写层的文件副本来实现操作。Docker的写实复制机制+镜像分层框架,使用户可以快速构建镜像并运行包含应用服务的容器。

顶层仓库:Docker内部人员管理的公共仓库
用户仓库:Docker用户创建的个人仓库

docker images ubuntu:latest    ---->   列出最新ubuntu镜像
docker pull fedora:20    ---->   从顶层仓库拉取fedora:20镜像到本地
docker search puppet    ---->   查找公共可用puppet镜像

2、构建自定义镜像
创建DockerHub账号:
通过https://hub.docker.com/signup注册一个Docker Hub账号并激活
本地通过docker login命令登录账号
1)commit命令创建镜像:
a:使用基础镜像创建并运行一个容器
b:进入容器安装或设置需要的服务及环境
c:退出容器,执行命令docker commit -m="<comment>" --author="<author>" <docker id> <customed image name>:<tag>
2)Dockerfile构建镜像:
a:编写一个Dockerfile文件

dockerfile配置

b:执行命令docker build -t <image name>:<tag name> -f <docker file name> .
c:如果build失败,可以执行命令docker run -it <最后成功那一步的docker id> /bin/bash

docker images <image name>    ---->   查看上步中构建的本地镜像
docker history <image name/id>    ---->   查看镜像的历史记录
docker push <image repository>:<tag>    ---->   上传到指定仓库
docker rmi <image name/id>    ---->   删除镜像(==docker image rm <image name/id>)
docker port <dokcer name/id>    ---->   查看容器的端口映射

四、docker容器网络

1、新建网络:
docker network create -d bridge test-net   (-d:参数指定 Docker 网络类型,有 bridge、overlay。)

2、连接容器:
docker run -itd --name test1 --network test-net ubuntu /bin/bash

3、设置容器DNS:
1)全局设置容器dns

可以在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:
{ "dns" : [ "114.114.114.114", "8.8.8.8" ]}
重启 docker后,执行命令docker run -it --rm ubuntu cat etc/resolv.conf,会输出容器的 DNS 信息。

2)手动指定容器的dns
docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu

参数说明:
--rm:容器退出时自动清理容器内部的文件系统。
-h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
--dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
--dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 深入浅出Docker学习笔记 Docker引擎 Docker引擎:用来运行和管理容器的核心文件模块化(基于开放容器...
    yuq329阅读 4,328评论 0 4
  • 1 Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub:...
    小波同学阅读 3,379评论 0 3
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 13,586评论 0 120
  • 【版权声明】本博客转载自汤小洋 一、Docker简介 1. Docker是什么? ​ 产生背景: 开发和运维之...
    云未声阅读 3,177评论 0 7
  • 目录 [TOC] 1. 简介 Docker是GO语言实现的开源项目,基于Linux容器技术,主要目标是一次封装,到...
    水煮鱼又失败了阅读 2,286评论 0 2