docker常用命令

docker虽然有windows、macos版本,但是只建议在linux上用docker。
因为docker只能在linux中实现容器(其他系统实际上是安装linux虚拟机上使用docker)。

1. docker安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
#从脚本安装Docker CE。(一般包括docker-ce,docker-cli,containerd.io)
#也可以设置软件仓库用apt、yum安装。详见https://docs.docker.com/engine/install/

docker ce脚本会自动安装docker-ce, docker-ce-cli和containerd.io。

  • docker-ce:社区版(community edition)的docker engine。
  • docker-ce-cli:docker-ce引擎的命令行界面。
  • containerd.io:containerd服务(service也称为守护进程),在docker引擎上工作,是docker包必须的。

docker官网提供的docker desktop是包含docker engine, decker cli, docker compose, kubernetes等工具的包。docker desktop个人版免费,高级版收费。

docker基础命令

  • docker -v:查看docker是否安装,显示安装版本
  • docker version:查看docker详细版本信息
  • docker info:查看docker信息(包括是否正在运行)

docker常用名词

  • 容器(container):docker创建的一个实例(相当于一个沙箱,虽然不是虚拟机,但是使用中类似虚拟机),容器间互不影响。
  • 镜像(image):类似于虚拟机中的系统镜像,docker根据镜像创建容器。镜像配置了容器的系统版本、基本设置、安装的软件等。
  • 仓库(reposity):存放镜像的仓库。

2. docker镜像操作

  • docker search centos #搜索仓库中是否存在centos镜像
  • docker pull centos #从仓库中获取centos镜像,并下载到本地
  • docker images #查看当前已下载的镜像列表
  • docker rmi centos #删除一个或多个镜像。 -f可以强制删除

仓库换国内源的方法

  • vi /etc/docker/daemon.json
  • 在{}内增加一行:"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"],

3. 容器操作

  • docker run centos:根据centos镜像创建容器实例
    • -d:后台运行容器,并返回一个容器id
    • -i:交互式运行容器
      • exit:交互模式下,退出并停止容器。
      • Ctrl+p,Ctrl+q:交互模式下,只退出容器,不停止容器
    • -it centos /usr/bin/bash:为容器重新分配一个为输入终端,通常与-t同时使用
    • -p 8080:80:指定端口映射(把8080端口映射到80)
  • docker run centos python app.py:创建容器,并且在docker中运行一个应用。
  • docker ps:列出当前运行的容器
  • docker ps -a:列出所有容器。同docker container ls -a
  • docker top 容器ID或容器名称:查看容器内运行的进程。必须是正在运行的容器。
  • docker inspect 容器ID或容器名称 查看容器详细配置信息

docker容器的自动退出

docker会在前置进程(主线程)运行完毕后自动退出。所以任务很简单的容器,比如helloworld,1秒左右就会自动结束。
所以要容器一直运行,就需要有一个常驻前置进程。

有人就用while循环(当然要sleep一下)实现常驻进程。(bash用参数-c执行循环)

docker run -d centos bash -c "while true;do echo hello docker;sleep 1;done"

用交互模式也可以保持docker不退出

docker run -itd centos bash
#docker run -id centos 也ok

前台运行一个常驻应用也是也可以的。

容器运行后执行操作

  • docker attach 容器ID:以交互方式进入到指定容器。退出后容器结束。
  • docker exec 容器ID python app.py:在容器中运行指定的应用或命令。
    • -i:交互模式
    • -t:指定伪终端
    • -d:后台运行
    • -w:指定容器内部的工作目录
  • docker exec -i 容器ID bash:交互方式在容器中运行bash。-it也ok。attach不同,退出后容器不会结束。
  • docker logs 容器ID:查看容器内部的标准输出。
  • docker cp 容器ID:容器内的文件路径 宿主机路径从容器内拷贝文件到宿主机

4. 容器生命周期管理

  • docker start 容器id:启动已经停止的容器
  • docker stop 容器id:停止运行中的容器
  • docker restart 容器id:重启容器
  • docker kill 容器id:强制停止容器
  • docker rm 容器id:删除已经停止的容器,-f可以强制删除正在运行的容器
  • docker pause 容器id:暂停容器
  • docker unpause 容器id:恢复暂停的容器

更多的容器docker的命令可以参考https://blog.csdn.net/weixin_39895862/article/details/110465890

5. docker服务(service)管理

docker由后台服务端和客户端组成。从docker version和docker info都可以看到,docker包含server和client。

docker的server在linux中以服务(service也称为守护进程daemon)的形式在后台运行。老版本的linux用service命令管理,新版本的linux通常使用systemctl命令管理service。

要使用docker必须先启动docker服务。但是,实际使用中并不需要先启动服务,在使用docker命令时,会自动启动docker服务,并且非常快。对于服务器,通常还是设置自动启动docker服务。

管理serivice的基本命令

# 启动服务
systemctl start docker.service

# 关闭服务
systemctl stop docker.service

# 重启服务
systemctl restart docker.service

# 杀死一个服务的所有子进程
systemctl kill docker.service

# 重新加载一个服务的配置文件
systemctl reload docker.service

# 重载所有修改过的配置文件
systemctl daemon-reload docker.service

# 显示服务的状态
systemctl status docker.service

# 显示某个 Unit 的所有底层参数
systemctl show docker.service

# 列出一个Unit的所有依赖(service也是一个Unit)
systemctl list-dependencies docker.service
systemctl list-dependencies --all docker.service  #展开所有参数

注意:docker有两个service:docker.service和containerd.service。docker.service依赖于containerd.service。所以:

  • 启动docker.service就会自动启动containerd.service。反之不行。
  • 关闭containerd.service会自动关闭docker.service。反之不行。

服务名称可以省略.service。比如下边命令也是可以的:

systemctl start docker

开机自动启动服务命令

# 在开机时启用服务
systemctl enable docker.service

# 在开机时禁用服务
systemctl disable docker.service

# 查看服务是否开机启动
systemctl is-enabled docker.service

# 查看开机自启动的服务列表
systemctl list-unit-files | grep enabled

# 列出所有service的配置(是否自启动)
$ systemctl list-unit-files --type=service

查看当前系统服务状态列表

# 查看所有服务(无论是活动的、运行的、退出的或者是失败的)
systemctl --type=service     #或者sudo

# 查看启动失败的服务列表
systemctl --failed

# 查看当前活动的服务列表
systemctl --type=service --state=active  #或者systemctl list-units --type=service --state=active

# 查看当前正在运行的服务列表
systemctl --type=service --state=running  #或者systemctl list-units --type=service --state=running

systemctl详细命令见http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hustlei

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值