Docker命令手册
docker pull xxxx
例如下载redis镜像:docker pull redis 或者 docker pull redis:latest(最新版)
下载指定版本的镜像:docker pull redis:标签(去registry.hub.docker.com软件市场搜索reids点击查看tag)
docker images 或者 docker images ls
查看本地的镜像:
REPOSITORY:名
TAG :标签
IMAGE ID:镜像id
CREATED:镜像的创建时间
SIZE:大小
前台启动:docker run 镜像名(REPOSITORY)
交互启动:docker run -it 镜像名(REPOSITORY)
后台启动:docker run -d 镜像名(REPOSITORY) # 相当于 docker create + docker start
后台启动:docker start 镜像名(REPOSITORY)
先启动一个nginx容器:docker run -d --name mynginx2 -p 88:80 nginx (会自动下载好并启动)
查看是否启动好了:docker ps (或者使用ip:88出现nginx的页面也可)
查看日志:docker logs 容器名
- docker logs magical_dubinsky
- docker logs -f magical_dubinsky 实时追踪
- 优雅停机,当前正在运行中的程序处理完所有事情后再停止:docker stop
- 暂停:docker pause
- 恢复:docker unpause
- 强制kill -9(直接拔电源):docker kill
语法: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:容器的端口,可以重复
- 目的:将外部访问的端口和容器里面的端口绑定
- 查看那些正在运行:docker ps
- 查看所有:docker ps -a
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 image prune
#移除游离镜像 dangling:游离镜像(没有镜像名字的)
docker tag 原镜像:标签 新镜像名:标签
attach:绑定到运行中容器的标准输入、输出、错误流(这样似乎也能进入容器内容,但是一定小心,他们操作的就是控制台,控制台的退出命令会生效,比如redis,nginx…)
exec:在运行时的容器内运行命令,不会导致容器退出
docker attach 容器ID或者容器名称 # 绑定的是控制台. 可能导致容器停止。不要用这个
docker exec -it -u 0:0 --privileged mynginx2 /bin/bash # 0用户,以特权方式进入容器
命令解析:
docker(container可以省略) inspect 容器名称或者ID
或者
docker image inspect 镜像名称
把外部的复制进去:docker cp [OPTIONS] 文件或者目录 容器名:存放的路径
docker cp aaa.text nginx:/usr/share/nginx/html
把容器里面的复制出来:docker cp [OPTIONS] 容器名:存放的路径 文件或者目录
docker cp nginx:/etc/nginx/nginx.conf nginx.conf
- A:添加文件或目录
- D:文件或者目录删除
- C:文件或者目录更改
docker diff 容器ID或者容器名
docker commit [OPTIONS] 容器 [REPOSITORY[:TAG]]
docker commit -a 作者信息 -m "提交的日志信息" 容器名 新的镜像名:标签
#把新的镜像放到远程docker hub,方便后来在其他机器下载
import导入以后变成镜像,并不能直接启动容器
使用 docker image inspect 镜像名,把之前镜像的Entrypoint的所有和Cmd的连接起来就能得到启动命令
或者使用 docker ps --no-trunc 查看正在运行的容器启动命令
拼接后的命令:
docker run -d -P nginx1:v2 /docker-entrypoint.sh nginx -g ‘daemon off;’
save:把一个或者多个镜像保存为tar文件
load:从 tar 文件加载镜像
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
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构建镜像 具体详情参考