docker-命令的整理笔记
-
docker attach: 将终端依附到容器上; 相当于进入到容器的 bash;
-
docker ps -a 查看容器的状态
-
docker run -it --name ubuntu ubuntu /bin/bash: 运行容器, 并执行命令: /bin/bash
-
docker stop ubuntu; 停止运行容器
-
docker start ubuntu; 重新运行容器
-
docker build: 通过 Dockerfile 创建镜像
-
docker cp: 在宿主机和容器之间
相互拷贝
文件:-
docker cp [container]:[path] [dirname]
-
docker cp [dirname] [container]:[path]
-
docker cp ubuntu:/usr/local/bin/test.sh / :
容器 ubuntu 中 /usr/local/bin/test.sh
拷贝到 / 上; -
-
docker create: 创建一个新的容器; 此时的容器的状态 status 为 Created
-
docker diff: 查看容器内部发生改变的文件,
<!-- C 对应的是文件夹, A 对应的是文件 --> $ docker diff ubuntu C /root A /root/.bash_history
-
docker events: 实时输出 Docker 服务端的事件, 比如: 容器的创建, 启动, 关闭
$ docker events 2019-10-15T15:46:57.996904034+08:00 network connect 0438641bf7117fbafd5a10fa869bafcdcd88c5a15198a9dd60685f9c45b6cd0a (container=f160c880996717e99a98d668a54ea25b33e0fc77fcf170684f4749c34f481123, name=bridge, type=bridge) 2019-10-15T15:46:58.642726243+08:00 container start f160c880996717e99a98d668a54ea25b33e0fc77fcf170684f4749c34f481123 (image=ubuntu:16.04, name=ubuntu)
-
docker exec
: 用于容器启动之后, 执行其他的任务-
通过 exec 命令可以创建两种任务: 后台任务和交互型任务
-
后台型: docker exec -d ubuntu touch 123
-
交互型: docker exec -it ubuntu /bin/bash: 进入到容器的 bash
-
-
docker export: 将容器的文件系统打包成 tar 文件;
-
docker export -o ubuntu.tar ubuntu
-
docker export ubuntu > ubuntu.tar
-
-
docker history
: 显示镜像制作的过程; 相当于dockfile -
docker import: 根据 tar 文件的内容新建一个镜像, 与之前的 export 命令相对应
- docker import ubuntu.tar ubuntu:1.0.0
-
docker info: 查看 docker 的系统信息
-
docker inspect: 用于查看容器的配置信息, 包含容器名, 环境变量, 运行命令, 主机配置, 网络配置和数据卷的配置
-
docker kill: 强制终止容器,
-
关于
stop
和kill
的区别,-
docker stop 命令给容器中的进程发送
SIGTERM
信号, 默认行为是会导致容器退出, 程序内部可以捕获这个信号并自行处理, 不一定会退出; -
docker kill 命令, 则是给容器发送
SIGKILL
信号, 这个信号会给容器必然退出;
-
-
-
docker load: 与下面的 save 命令相对应, 将下面 save 命令打包的镜像通过 load 命令导入
-
docker logs : 用于查看容器日志, 将输出到标准输出的数据作为日志输出到 docker logs 命令的终端上, 常用于后台型容器
-
docker pause: 暂停容器内的所有的进程
-
docker stats: 可以观察到此时的资源使用情况是固定不变的;
-
docker logs -f: 也可以看到没有任何的 log 日志输出
-
-
docker port - 输出容器端口宿主机端口映射的情况
[root@localhost ~]# docker port blog 80/tcp -> 0.0.0.0:80 <!-- 容器blog的内部端口80映射到宿主机的80端口,这样可通过宿主机的80端口查看容器blog提供的服务 -->
-
docker ps: 查看正在运行的容器, -a 查看所有的容器
-
docker pull: 从docker hub 上拉取镜像
-
docker rename: 更改容器的名字
-
docker restart: 重启容器
-
docker rm ubuntu; 删除容器;
-
docker rm -f ubuntu; 强制删除
-
docker rm -f
docker ps -aq
, -q: 只列出容器 ID
-
-
docker rmi: 删除镜像
-
docker run: 让创建的容器立即进入到运行的状态, 该命令等于 docker create 创建容器之后, 再使用 docker start 启动容器
-
docker stats: 动态显示容器的资源消耗i情况: cpu, 内存, 网络I/O
-
docker tag; 对一个镜像进行重命名
-
docker top: 查看容器中正在运行的进程
-
docker unpause: 恢复容器内暂停的进程, 与 pause 参数相对应
-
docker wait: 捕获容器停止时的退出码
docker run 的参数
-
-e/--env=[] 设置环境变量
-
--env-file=[] 读取一个包含了环境变量的文件
-
-h/--hostname 容器的主机名
-
--link=[] 添加一个到另一个容器的连接
-
--name 容器的名字
-
--net-bridge 为容器设置网络模式
-
-p 容器端口映射 eg: 8080:80
-
--privileged=false 为容器扩展权限
当 docker run 命令时, Docker 会启动一个进程, 并为这个进程分配其独占的文件系统, 网络资源和以此进程为根进程的进程组, docker run 可以覆盖 docker build 镜像时的一些默认的配置,
docker run [options] image_name [command] [args...]
- [options] 总结起来就两类;
* 设置运行方式, 决定容器运行方式, 前台还是后台, 设置 containerID; 设置网络参数, 设置容器的 CPU 和内存参数, 设置权限和LXC参数,
* 设置镜像的默认资源, 用户可以使用该命令来覆盖构建时的一些默认配置
容器的网络模式:
-
none: 关闭容器内的网络连接, 那么这个容器将不允许访问任何外部
router
. 这个容器内部只会有一个loopback
的接口, 而且不存在任何可以外部网络的router
; -
Bridge: 默认设置为
bridge 模式
, 此时主机会存一个docker0
的网络接口, 同时会针对容器创建一对veth
接口, 其中一个veth
接口是在主机充当网卡桥接作用, 另一个veth
接口存在容器的命名空间中, 并且指向容器的loopback
;docker
会自动给这个容器分配一个ip
; 并且将容器内的数据通过桥接转发到外部 -
host: 这个容器将完全共享 host 的网络堆栈, host 所有的网络接口将完全对容器开发, 容器的主机名也会存在于主机的 hostname 中,这时, 容器所有对外暴露的端口和对其他容器的连接, 将完全无效
-
Container: 这个容器将完全服用另外一个容器的网络堆栈, 同时使用这个容器的名称必须要符合下面的格式:
- --net container:<name|id>
命令
-
docker run -it --name ubuntu -d -link redis:redis-db ubuntu:16.04
- 容器连接到 redis 容器, 将 redis 容器重名为 redis-db, 这样 ubuntu 容器可以使用 db 的相关的环境变量
-
docker build -t <image_name> <dockerfile_path>