docker常用命令

docker常用命令

    • 1、pull 下载镜像
    • 2、images 查看本地镜像
    • 3、run/start 启动镜像
    • 4、log 查看容器日志
    • 5、stop / pause / unpause / kill 停机
    • 6、create 创建新的容器但不启动它
    • 7、ps 查看容器运行状态
    • 8、rm / rmi 删除容器或者镜像
    • 9、prune 移除游离镜像(无用的镜像)
    • 10、tag 重命名镜像
    • 11、attach / exec 进入容器控制台
    • 12、inspect 查看容器/镜像的详情(配置文件)
    • 13、cp 容器和本地文件系统间 复制 文件/文件夹
    • 14、diff 检查容器里文件系统结构的更改
    • 15、commit 把容器的改变,提交创建一个新的镜像
    • 16、export 导出容器的文件系统为一个tar文件,方便传输
    • 17、import 导入tar的内容创建一个镜像
    • 18、save/load 保存/加载
    • 19、push 推送镜像到远程
    • 20、build 构建镜像

Docker命令手册

1、pull 下载镜像

docker pull xxxx 

例如下载redis镜像:docker pull redis 或者 docker pull redis:latest(最新版)
下载指定版本的镜像:docker pull redis:标签(去registry.hub.docker.com软件市场搜索reids点击查看tag)
docker常用命令_第1张图片

2、images 查看本地镜像

docker images 或者 docker images ls

查看本地的镜像:
docker常用命令_第2张图片
REPOSITORY:名
TAG :标签
IMAGE ID:镜像id
CREATED:镜像的创建时间
SIZE:大小

3、run/start 启动镜像

前台启动:docker run 镜像名(REPOSITORY)
交互启动:docker run -it 镜像名(REPOSITORY)
后台启动:docker run -d 镜像名(REPOSITORY) # 相当于 docker create + docker start
后台启动:docker start 镜像名(REPOSITORY)

4、log 查看容器日志

先启动一个nginx容器:docker run -d --name mynginx2 -p 88:80 nginx (会自动下载好并启动)
在这里插入图片描述
查看是否启动好了:docker ps (或者使用ip:88出现nginx的页面也可)
在这里插入图片描述
查看日志:docker logs 容器名
docker常用命令_第3张图片

  • docker logs magical_dubinsky
  • docker logs -f magical_dubinsky 实时追踪

5、stop / pause / unpause / kill 停机

- 优雅停机,当前正在运行中的程序处理完所有事情后再停止:docker stop 

- 暂停:docker pause

- 恢复:docker unpause

- 强制kill -9(直接拔电源):docker kill

6、create 创建新的容器但不启动它

语法:docker create [OPTIONS] IMAGE [COMMAND] [ARG...] 
含义:docker create [设置项] 镜像名 [启动] [启动参数...]
例如:docker create redis: # 按照redis:latest镜像启动一个容器

具体操作:

docker create --name myredis -p 6379:6379 redis

  • –name myredis 取别名
  • 第一个6379:Linux主机的端口,必须唯一
  • 第二个6379:容器的端口,可以重复
  • 目的:将外部访问的端口和容器里面的端口绑定

7、ps 查看容器运行状态

  • Created(新建)
  • Up(运行中)
  • Pause(暂停)
  • Exited(退出)
- 查看那些正在运行:docker ps
- 查看所有:docker ps -a

在这里插入图片描述

8、rm / rmi 删除容器或者镜像

docker rmi REPOSITORY 
	或者 
docker rmi REPOSITORY:TAG

比如删除redis镜像:

docker rmi redis (没有冲突时使用)或者 docker rmi redis:latest (有冲突时使用)

使用docker images 查看需要删除镜像的名称和标签
在这里插入图片描述
执行命令后,发现镜像被容器(c954b99a5e76)引用:
在这里插入图片描述
也可以使用 'docker ps -a ’ 命令查看需要删除的镜像被那些容器引用
在这里插入图片描述
找到后执行:
docker rm c954b99a5e76 先删除容器
docker rmi redis 再删除容器

或者强制删除:

docker rmi -f redis

或者删除全部镜像:

docker rmi -f $(docker images -aq)
     #列出所有镜像:docker images -a 
     #列出所有镜像id:docker images -aq

docker常用命令_第4张图片

9、prune 移除游离镜像(无用的镜像)

docker image prune 
#移除游离镜像 dangling:游离镜像(没有镜像名字的)

docker常用命令_第5张图片

10、tag 重命名镜像

docker tag 原镜像:标签 新镜像名:标签

例如:docker tag redis:latest myredis:v1
docker常用命令_第6张图片
镜像ID一样,说明是同一个镜像

11、attach / exec 进入容器控制台

attach:绑定到运行中容器的标准输入、输出、错误流(这样似乎也能进入容器内容,但是一定小心,他们操作的就是控制台,控制台的退出命令会生效,比如redis,nginx…)

exec:在运行时的容器内运行命令,不会导致容器退出

docker attach 容器ID或者容器名称 # 绑定的是控制台. 可能导致容器停止。不要用这个 
docker exec -it -u 0:0 --privileged mynginx2 /bin/bash  # 0用户,以特权方式进入容器

命令解析:

  • -i:交互模式
  • -t:重新分配
  • -u:身份
  • 0:0:root的身份root组,指定用户
  • –privileged:特权,可以为所欲为
    /bin/bash:进入对应的控制台目录
    docker常用命令_第7张图片

12、inspect 查看容器/镜像的详情(配置文件)

docker(container可以省略) inspect 容器名称或者ID
	或者
docker image inspect 镜像名称

13、cp 容器和本地文件系统间 复制 文件/文件夹

把外部的复制进去:docker cp [OPTIONS] 文件或者目录 容器名:存放的路径 
	docker cp aaa.text nginx:/usr/share/nginx/html
	
把容器里面的复制出来:docker cp [OPTIONS] 容器名:存放的路径  文件或者目录
	docker cp nginx:/etc/nginx/nginx.conf nginx.conf

14、diff 检查容器里文件系统结构的更改

- A:添加文件或目录 
- D:文件或者目录删除 
- C:文件或者目录更改
 docker diff 容器ID或者容器名

docker常用命令_第8张图片

15、commit 把容器的改变,提交创建一个新的镜像

docker commit [OPTIONS] 容器 [REPOSITORY[:TAG]]
docker commit -a 作者信息 -m "提交的日志信息" 容器名 新的镜像名:标签
#把新的镜像放到远程docker hub,方便后来在其他机器下载

docker常用命令_第9张图片

16、export 导出容器的文件系统为一个tar文件,方便传输

docker export -o nginx.tar e4689b5c752f
docker常用命令_第10张图片

17、import 导入tar的内容创建一个镜像

docker常用命令_第11张图片

import导入以后变成镜像,并不能直接启动容器
使用 docker image inspect 镜像名,把之前镜像的Entrypoint的所有和Cmd的连接起来就能得到启动命令
docker常用命令_第12张图片
或者使用 docker ps --no-trunc 查看正在运行的容器启动命令
docker常用命令_第13张图片
拼接后的命令:
docker run -d -P nginx1:v2 /docker-entrypoint.sh nginx -g ‘daemon off;’

18、save/load 保存/加载

save:把一个或者多个镜像保存为tar文件
load:从 tar 文件加载镜像
  • docker save -o redis.tar redis:latest 把redis镜像保存成tar文件
    docker常用命令_第14张图片
  • docker load -i redis.tar 把压缩包里面的内容直接导成镜像
    docker常用命令_第15张图片

19、push 推送镜像到远程

docker push 远程仓库名称/镜像名:标签
或者
docker push docker.io/wufenglei/test:tagname

#腾讯云的镜像地址
https://mirror.ccs.tencentyun.com
#网易的镜像地址
http://hub-mirror.c.163.com

#给远程传:将docker.io修改,仓库网址/名称空间(wufenglei)/仓库名:版本号
sudo docker tag http://hub-mirror.c.163.com/镜像名:标签 wufenglei/test:tagname
sudo docker push http://hub-mirror.c.163.com/wufenglei/test:tagname
  • 使用 docker login登录docker常用命令_第16张图片密码存放路径:/root/.docker/config.json
  • 怎么知道是否登录了 cat ~/.docker/config.json 有没有 auth的值,没有就是没有登录
    docker常用命令_第17张图片
  • 没有仓库先创建仓库
  • 去docker hub查看自己的仓库名
  • 必须改名:docker tag nginx1:v1 仓库名/镜像名:标签
    在这里插入图片描述
    docker常用命令_第18张图片
  • 在docker hub可以查看自己推送的仓库
    docker常用命令_第19张图片

20、build 构建镜像

3种产生镜像方式:
     1. 基于已经存在的容器,提取成镜像 
	 2. 人家给了我tar包,导入成镜像 
	 3. 做出镜像:

做出镜像:
1):准备一个文件Dockerfile

vi Dockerfile
插入配置内容:
	# 基础镜像
	FROM redis
	#执行的命令
	CMD ping baidu.com

2):编写Dockerfile
3):构建镜像

docker build -t 镜像名:tag -f Dockerfile ./
#-f:指定文件名
# ./:上下文环境,只在当前目录
#build:根据一个Dockerfile构建出镜像 
#commit:正在运行中的容器提交成一个镜像

build构建镜像 具体详情参考

你可能感兴趣的:(docker,容器,运维)