Docker的常用命令简介

发布时间: 更新时间: 总字数:1507 阅读时间:4m 作者: IP属地: 分享 复制网址

该文章主要介绍Docker容器与其他虚拟化的区别,Docker的文件系统,Docker启动和管理的常用命令,Docker的端口映射,Docker挂载宿主机目录作为卷等命令。

容器与虚拟机管理程序区别

容器与虚拟化管理程序(hypervisor virtualization, HV)的主要区别:管理程序虚拟化通过中间层将一台或多台独立的机器虚拟运行在物理硬件之上,而容器则是直接运行在操作系统内核之上的用户空间。和传统的虚拟化以及半虚拟化相比,容器运行不需要模拟层和管理层,而是使用操作系统的系统调用接口。

Docker的文件系统

Docker采用分层的联合文件系统(Union File System)作为Docker容器的文件系统。

启动Docker进程

service docker start/stop

查看Docker

[root@xiexianbin ~]# docker info
Containers: 2
Images: 37
Storage Driver: devicemapper
    Pool Name: docker-253:0-921930-pool
    Pool Blocksize: 65.54 kB
    Backing Filesystem: extfs
    Data file: /dev/loop0
    Metadata file: /dev/loop1
    Data Space Used: 2.387 GB
    Data Space Total: 107.4 GB
    Metadata Space Used: 3.162 MB
    Metadata Space Total: 2.147 GB
    Udev Sync Supported: true
    Data loop file: /var/lib/docker/devicemapper/devicemapper/data
    Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
    Library Version: 1.02.89-RHEL6 (2014-09-01)
Execution Driver: native-0.2
Kernel Version: 2.6.32-504.30.3.el6.x86_64
Operating System: <unknown>
CPUs: 1
Total Memory: 1742.4 MiB
Name: www.xiexianbin.com
ID: ****
Username: xiexianbin
Registry: [https://index.docker.io/v1/]

启动Docker容器

sudo docker run -i -t centos /bin/bash

docker run指定-i和-t两个命令行参数

  • -i 标识保证容器中STDIN是开启的,持久的标准输入在Docker的交互式中占有重要地位。
  • -t 使Docker为要创建的容器分配一个伪tty终端,为新创建的容器提供一个交互式shell。

查看Docker容器

sudo docker ps -a

docker ps列出所有运行的docker容器,-a列出当前系统中的所有容器。

  • 查询docker id
docker ps -aq

命名Docker容器

sudo docker run --name xiexianbin -i -t centos /bin/bash
  • –name参数指定新创建的容器名称为xiexianbin

登录Docker容器

sudo service docker attach xiexianbin

或

sudo service docker attach container_id

登录(附着)到指定容器,这样用户就可以对容器进行操作。

ctrl + q + p 退出登录

创建守护式Docker容器

sudo docker run --name xiexianbin -d centos /bin/bash -c "while true; do echo ok; sleep 1; done"
  • -d 启动守护式容器,让Docker容器以守护式进程的方式启动一个容器。该方式适合运行应用程序或服务。

查看容器日志

sudo docker logs -f xiexianbin
或
sudo docker logs -f container_id
  • -f 该参数用来监控Docker日志,与tail -f (或tailf)命令类似。

查看Docker容器进程

sudo docker top xiexianbin
或
sudo docker top container_id

在Docker容器内运行进程

sudo docker exec -d xiexianbin touch /root/a.txt

停止守护式Docker容器

sudo docker stop xiexianbin
或
sudo docker stop container_id

重启Docker容器

sudo docker restart xiexianbin
或
sudo docker restart container_id

创建自启动Docker容器

sudo docker run --restart=always -d --name xiexianbin -i -t centos /bin/bash

如果容器运行出现某种错误而导致容器停止运行,可以通过--restart=always标志让Docker自动重新启动容器。

  • --restart=on-failure:5 当容器退出时,Docker会自动重启容器,最多重启5次。

查看容器信息

sudo docker inspect xiexianbin
或
sudo docker inspect container_id

删除Docker容器

sudo docker rm xiexianbin
或
sudo docker rm container_id

删除前docker stop container_id停止容器。

为Docker容器做端口映射

sudo docker run -i -t -p 80:8080 centos /bin/bash
  • -p参数在启动容器时将宿主机的80端口映射到Docker容器的8080端口。

为Docker容器挂载宿主机的目录作为卷

sudo docker run -i -t -v /var/www/website_1:/var/www/html/website:rw centos /bin/bash
  • -v 参数将宿主机的目录作为卷挂载到Docker容器,在目录的后边加rw或者ro来指定目的目录的读写状态。

磁盘使用量

docker system df

cleanup the docker file

docker system prune -f -a
docker system prune --force

导入导出镜像

  • 导出镜像
# 保留原镜像的名称和标签
docker save <IMAGE NAME>:<IMAGE TAG> > save.tar

# 不保留原镜像的基本信息,加载load后需执行tag命令重命名none镜像
docker save <IMAGE ID> > save.tar
  • 导入镜像
docker load < save.tar
  • 导出容器
docker export <CONTAINER ID> > export.tar
  • 导入容器
docker import export.tar <IMAGE NAME>:<IMAGE TAG>

update

更新运行中容器的参数:

docker update --restart=always mariadb
docker update --memory-swap -1 mariadb

# 更新 memory 需要先更新 memory-swap
docker update --memory-swap 500M mariadb
docker update --memory 500M mariadb

内存、CPU限制

docker run \
  -m 512m \  // Memory limit
  --memory-swap=-1 \ // memory + swap, -1 ulimit; if memory > swap then swap = 0
  --memory-reservation=256m \ // 保留的最小内存
  --memory-swappiness 60 \ // 控制物理内存、与swap分区的比例,默认为60。越小,越倾向于使用物理内存
  --cpus=2 \
  --cpu-shares=2000 \
  --oom-kill-disable=false \ // 禁止容器被 OOM killer 杀掉,与 -m 一起使用
  nginx
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数