一、容器操作命令总结
create | 创建容器 |
start | 启动容器 |
run | 创建并启动容器 |
ps | 查看正在运行的容器 |
logs | 查看容器输出信息 |
pause | 暂停容器 |
unpause | 取消暂停继续运行容器 |
stop | 发送 SIGTERM 停止容器 |
kill | 发送 SIGKILL 快速停止容器 |
start | 启动容器 |
restart | 重启容器 |
attach | attach 到容器启动进程的终端 |
exec | 在容器中启动新进程,通常使用 “-it” 参数 |
logs | 显示容器启动进程的控制台输出,用 “-f” 持续打印 |
rm | 删除终止或退出的容器 |
export | 导出已创建的容器到文件 |
import | 导入文件成镜像 |
[container] inspect | 查看容器具体信息 |
[container] top | 查看容器内进程 |
[container] stats | 查看容器统计信息 |
[container] cp | 复制文件 |
[container] diff | 查看文件系统变更 |
[container] port | 查看端口映射 |
[container] update | 更新运行时资源配置 |
二、创建容器
1.新建容器
[root@docker~]# docker create -it ubuntu:latest
新建的容器处于停止状态
2.启动容器
[root@docker ~]# docker start priceless_archimedes
启动容器名称通过docker ps -a查看,粘贴names或者id值启动容器
3.创建并启动容器
docker run命令,等价于先执行docker create命令,然后执行docker start命令
[root@docker ~]# docker run -it ubuntu /bin/bash
- Docker中系统镜像的缺省命令是 bash,如果不加 -it bash 命令执行了自动会退出。这是因为如果没有衔接输入流,本身就会马上结束。加-it 后docker命令会为容器分配一个伪终端,并接管其stdin/stdout支持交互操作,这时候bash命令不会自动退出。
- 服务类容器以 daemon 的形式运行,对外提供服务。比如 web server,数据库等。通过 -d 以后台方式启动这类容器是非常合适的。如果要排查问题,可以通过 exec -it 进入容器。
- 工具类容器通常给能我们提供一个临时的工作环境,通常以 run -it 方式运行,执行 exit 退出终端,同时容器停止。
| -d, --detach=false | 指定容器运行于前台还是后台,默认为false |
| — | — |
| -i, --interactive=false | 打开STDIN,用于控制台交互 |
| -t, --tty=false | 分配tty设备,该可以支持终端登录,默认为false |
| -u, --user=“” | 指定容器的用户 |
| -a, --attach=[] | 登录容器(必须是以docker run -d启动的容器) |
| -w, --workdir=“” | 指定容器的工作目录 |
| -c, --cpu-shares=0 | 设置容器CPU权重,在CPU共享场景使用 |
| -e, --env=[] | 指定环境变量,容器中可以使用该环境变量 |
| -m, --memory=“” | 指定容器的内存上限 |
| -p, --publish-all=false | 指定容器暴露的端口 |
| -h, --hostname=“” | 指定容器的主机名 |
| -v, --volume=[] | 给容器挂载存储卷,挂载到容器的某个目录 |
| --volumes-from=[] | 给容器挂载其他容器上的卷,挂载到容器的某个目录 |
| --entrypoint=“” | 覆盖image的入口点 |
| --env-file=[] | 指定环境变量文件,文件格式为每行一个环境变量 |
| --expose=[] | 指定容器暴露的端口,即修改镜像的暴露端口 |
| --link=[] | 指定容器间的关联,使用其他容器的IP、env等信息 |
| --lxc-conf=[] | 指定容器的配置文件,只有在指定–exec-driver=lxc时使用 |
| --name=“” | 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字 |
| --net=“bridge” 容器网络设置 | bridge :使用docker daemon指定的网桥
host:容器使用主机的网络
container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源
none:容器使用自己的网络(类似–net=bridge),但是不进行配置 |
| --restart=“no” 指定容器停止后的重启策略,默认容器退出时不重启 | on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
–rm=false 指定容器停止后自动删除容器(不支持以docker run -d启动的容器) |
4.守护态后台运行
[root@docker ~]# docker run -d ubuntu /bin/sh -c "while true; do echo hello; sleep 1; done"
5.查看容器运行日志
[root@docker ~]# docker logs 6a590199c02a
三、停止容器
1.暂停容器
[root@docker~]# docker pause 6a590199c02a
2.取消暂停继续运行容器
[root@docker~]# docker unpause 6a590199c02a
有时我们只是希望暂时让容器暂停工作一段时间,或者 dcoker host 需要使用 CPU,这时可以执行 docker pause。处于暂停状态的容器不会占用 CPU 资源,直到通过 docker unpause 恢复运行。
3.终止容器
[root@docker~]# docker stop 6a590199c02a
使用docker kill可以强行终止容器
当docker容器中的应用终止时,容器也会自动终止
四、进入容器
1.使用attach命令进入容器
[root@docker ~]# docker attach boring_bell
当多个窗口同时attach到一个容器时,所有窗口都会同步显示,当某个窗口阻塞时,其他窗口也无法操作
2.使用exec命令进入容器
[root@docker ~]# docker exec -it 8e3b24402577 /bin/bash
- attach 直接进入容器 启动命令 的终端,不会启动新的进程。
- exec 则是在容器中打开新的终端,并且可以启动新的进程。
- 如果想直接在终端中查看启动命令的输出,用 attach;其他情况使用 exec。
选项 | 作用 |
--detach, -d | 后台运行模式,在后台执行命令相关命令 |
--detach-keys | 覆盖容器后台运行的一些参数信息 |
--env, -e | 设置环境变量 |
--interactive, -i | 展示容器输入信息STDIN |
--privileged | 为命令提供一些扩展权限 |
--tty, -t | 命令行交互模式 |
--user, -u | 设置用户名(format: <name|uid>[:<group|gid>]) |
--workdir, -w | 指定容器内的目录 |
3.启动容器并指定名称
[root@admin ~]#docker run -d
五、删除容器
1.使用docker rm删除已终止或退出的容器
[root@docker ~]# docker rm e4af2433d094
-f | 通过SIGKILL信号强制删除一个运行中的容器 |
-l | 移除容器间的网络连接,而非容器本身 |
-v | 删除与容器关联的卷 |
- docker rm 是删除容器,而docker rmi 是删除镜像
六、导入和导出容器
1.导出容器
- 导出容器是指,导出一个已经创建的容器到一个文件,不管此时该容器是否处于运行状态
[root@docker~]# docker export -o centos.tar f0761a1df372
[root@docker~]# docker export -o f0761a1df372 > centos.tar
2.导入文件成为镜像
[root@docker~]# docker import centos.tar centos:test
[root@docker~]# docker load < busybox.tar.gz
- docker import和docker load区别在于:load导入镜像存储文件,import导入容器快照文件。容器快照文件仅保存当前快照状态,丢弃所有历史记录和元数据信息,镜像存储文件将保存完整记录,体积更大。从容器快照文件导入时可以重新制定标签等元数据信息。
七、查看容器
1.查看容器详情信息
[root@docker~]# docker inspect 8e3b24402577
2.查看容器内进程
[root@docker~]# docker top 8e3b24402577
3.查看统计信息
[root@docker~]# docker stats 8e3b24402577
八、其他容器命令
1.复制文件
[root@docker~]# docker cp centos.tar 8e3b24402577:/
2.查看容器文件系统的变更
[root@docker~]# docker diff 8e3b24402577
3.查看端口映射
[root@docker~]# docker port 8e3b24402577
4.更新容器运行时的配置,主要是资源限制
[root@docker~]# docker update --cpu-period 100000 8e3b24402577
5.容器直接互联
- 启动mysql容器
[root@docker~]# docker run --name mysqldb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-pwd -d mysql:latest
- 启动httpd容器与mysql容器互联
[root@docker~]# docker run -it --name web --link mysqldb:webdb httpd /bin/bash
- 测试链接