Osmanthus

空想具現化


  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  •   

© 2024 Homurax

UV: | PV:

Theme Typography by Makito

Proudly published with Hexo

docker笔记01-安装与入门

发布于 2018-11-28 Docker 

docker 安装

前提条件

  • 运行64位CPU构架的计算机(目前只能是x86_64和amd64)
  • 运行Linux 3.10或更高版本内核
  • 内核必须支持一种适合的存储驱动(storage driver)
  • 内核必须支持并开启cgroup和命名空间(namespace)功能

Docker团队推荐在Ubuntu、Debian或者RHEL系列(CentOS、Fedora 等)宿主机中部署Docker,这些发行版中直接提供了可安装的软件包。在不同的平台和版本中,软件包命名有细微的差别。对于Windows系统,Windows 7、8可以安装Docker Toolbox,Windows 10 只有Professional或者Enterprise的64位系统可以安装Docker CE。

Docker Store官网

检查内核的版本

$ uname -a

Linux host.localdomain 4.19.4-1.el7.elrepo.x86_64 #1 SMP Fri Nov 23 08:15:01 EST 2018 x86_64 x86_64 x86_64 GNU/Linux

检查存储驱动,这里使用Device Mapper

ls -l /sys/class/misc/device-mapper

grep device-mapper /proc/devices

如果没有检测到Device Mapper,安装device-mapper并加载dm_mod 内核模块

yum install -y device-mapper

modprobe dm_mod

CentOS 6中,需要先添加EPEL软件包的仓库再安装

rpm –Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

yum -y install docker-io

CentOS 7或更高的版本

yum install -y docker

启动Docker守护进程与开机启动Docker

# CentOS 6中
service docker start
service docker enable

# CentOS 7中
systemctl start docker
systemctl enable docker

检查Docker是否正确安装

$ docker info

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.13.1
......

docker 命令

Docker是基于客户端-服务器构架的。它有一个docker程序,既能作为客户端,也可以作为服务器端。作为客户端时,docker程序向Docker守护进程发送请求(如请求返回守护进程自身的信息),然后再对返回的请求结果进行处理。

Docker CLI(docker)
Docker Hub Registry

运行第一个容器
-i 标志保证容器中STDIN 是开启的,-t 标志告诉Docker为要创建的容器分配一个伪tty终端,使用centos镜像为基础,在选择的操作系统上构建自己的镜像。该容器拥有自己的网络、IP地址,以及一个用来和宿主机进行通信的桥接网络接口。当容器创建完毕之后,Docker就会执行容器中的/bin/bash命令,这时就可以看到容器内的shell。

docker run -i -t centos /bin/bash

# 可以使用--name为容器命名
docker run --name first_container -i -t centos /bin/bash

一个合法的容器名称只能包含以下字符:小写字母a~z、大写字母A~Z、数字0~9、下划线、圆点、横线([a-zA-Z0-9_.-])。
很多Docker命令中,都可以用容器的名称来替代容器ID。

查看当前系统中容器的列表
ID、用于创建该容器的镜像、容器最后执行的命令、创建时间以及容器的退出状态、名称等。

docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
b5c5720db0b3        centos              "/bin/bash"         7 hours ago         Exited (0) 5 hours ago                       lucid_noether

启动已经停止运行的容器

docker start lucid_noether

docker start b5c5720db0b3

docker restart lucid_noether

docker restart b5c5720db0b3

附着到容器上

docker attach lucid_noether

创建守护式容器
守护式容器(daemonized container)没有交互式会话,非常适合运行应用程序和服务。

docker run --name daemon_dave -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"

获取容器的日志

docker logs daemon_dave

# 类似于tail -f
docker logs -f daemon_dave
# 加上时间戳
docker logs -ft daemon_dave

查看守护式容器的进程

docker top daemon_dave

容器的统计信息

docker stats daemon_dave

在容器中运行后台任务

docker exec -d daemon_dave touch /etc/new_config_file

在容器内运行交互命令

docker exec -t -i daemon_dave /bin/bash

停止守护式容器
docker stop命令会向Docker容器进程发送SIGTERM信号。如果想快速停止某个容器,也可以使用docker kill命令来向容器进程发送SIGKILL信号。

docker stop daemon_dave
docker kill daemon_dave

自动重启容器

docker run --restart=always -i -t centos /bin/bash

# 最多重启5次
docker run --restart=on-failure:5 -i -t centos /bin/bash

查看容器

docker inspect daemon_dave

删除容器

docker rm b5c5720db0b3

# 删除所有容器
docker rm `docker ps -a -q`

 上一篇: 记一次锁等待超时排查(Gap Lock、Lock wait timeout exceeded) 下一篇: JDK 9中新增的Stream API与Collector 

© 2024 Homurax

UV: | PV:

Theme Typography by Makito

Proudly published with Hexo