docker的容器操作命令及其使用技巧

查看该Linux系统是Centos 还是 ubuntu
1、centos
cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
2、ubuntu / Debian
cat /etc/issue
Debian GNU/Linux 10 \n \l

容器生命周期管理 	— docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 	— docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 	— docker [commit|cp|diff]

docker update 命令
	用于更新一个或多个容器的配置。
	docker update --help
	Usage:  docker update [OPTIONS] CONTAINER [CONTAINER...]

在这里插入图片描述

	

容器运行参数
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
其中OPTIONS
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-v /data/www/quwan:/www:挂载目录或文件;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持bridge/host/none/container;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--privileged=true

查看正在运行的容器
docker ps 

查看全部容器
docker ps -a

查看容器正在运行的进行
docker top php-fpm

重命名容器
docker rename php-fpm php72-fpm

设置容器开机自启动
	前提是docker已被设置开机自启动
	重启策略:
	no -  容器退出时,不重启容器;
	on-failure - 只有在非0状态退出时才从新启动容器;
	always - 无论退出状态是如何,都重启容器;

	还可以在使用on - failure策略时,指定Docker将尝试重新启动容器的最大次数。默认情况下,Docker将尝试永远重新启动容器。
	
	在启动容器的时候设置
	docker run --restart=on-failure:3 redis
	如果容器已经启动后
	docker update --restart=on-failure:3 redis

docker容器与主机间文件互相拷贝,容器可以是启动的也可以是停止的。
1、将主机./RS-MapReduce目录拷贝到容器nginx的/home/cloudera目录下。
docker cp RS-MapReduce nginx:/home/cloudera
2、将容器nginx的/home/cloudera/RS-MapReduce目录拷贝到主机的/tmp目录中。
docker cp  nginx:/home/cloudera/RS-MapReduce /tmp/

查看容器启动,运行,报错日志
docker logs 容器ID

停止所有的container,这样才能够删除其中的images:
docker stop $(docker ps -a -q)

如果想要删除所有container的话再加一个指令:
docker rm $(docker ps -a -q)

返回全部容器的id
docker ps -a -q

删除容器
docker rm <container-id>

容器中安装vim
apt-get install -y vim
如果提示 Unable to locate package vim 表示需要
apt-get update && apt-get install -y vim

安装wget
apt-get install -y wget

bash: ip: command not found
apt-get install iproute2 iproute2-doc

停止一个容器
docker stop nginx

进入容器
docker exec -it php72-fpm bash
将获取到一个回话,使用exit退出容器
值得注意的是,在以alpine为基础容器的容器中没有 /bin/bash 命令,此时需要改成
docker exec -it php72-fpm sh

临时执行容器中的命令
docker exec -it php72-fpm php -m
-it会获取到容器的标准输出并打印出来。

查看容器参数,运行参数,比如目录挂载,端口映射等
docker inspect mysql

容器创建后如何修改启动时的参数
	比如启动参数为 docker run --name php-fpm -p 9000:9000 -v /data/www/quwan:/www -d php:fpm
	有时候需要修改启动参数,新手的话一般会选择重新创建一个容器,但是如果在容器中需要做一些安装和配置,那么又需要重新来一遍。
	要知道容器的配置是保存在文件的,那么最直接的修改方式就是修改配置文件,当然有一些提供了命令来修改。
	容器目录:/var/lib/docker/containers/容器ID
	docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
	service docker stop
	
	cd /var/lib/docker/containers
	ls
	docker ps
	你应该能找到规律
	cd b725a800bd10243659b3484ef285da701f34d8951d2460309928587ea8c43552
	ls
	主要文件
	config.v2.json  hostconfig.json
	修改之前一定要备份
	cp config.v2.json config.v2.json.bak
	cp hostconfig.json hostconfig.json.bak

	修改这两个配置文件后
	service docker start
	启动容器

修改容器里的文件后导致容器无法启动了怎么办?
	你应该遇到过这种情况,或许迟早会遇到。
	方法一、
		要知道在Linux下一切皆文件,所以容器内部的文件应该能在宿主机上找到。
		先查看错误日志知道自己哪里改错了,一般的容器都会将错误日志重定向到标准输出,而docker会将容器的标准输出记录下来。
		docker logs php72-fpm
		
		查找文件,我这里设置的是overlay文件系统
		cd /var/lib/docker/overlay
		ll
		find ./ -name php-fpm.conf
		可能有多个,需要认为辨认。
	
	方法二、
		基于方法一的知识,如果你知道那个文件在容器中的具体位置,可以使用 docker cp 命令先将它从容器中复制出来,修改后在
		复制进容器即可。这种方法显然更简单高效。

	对于频繁修改的配置文件最好挂载到容器外面,比如 nginx 配置文件。

Docker 参数 -i -t 的作用
通常的解释是: -t让docker分配一个伪终端并绑定到容器的标准输入上, -i则让容器的标准输入保持打开.

问题
所以通常都是这样的: sudo docker run -it ubuntu 进入了命令交互界面
但是如果不加呢? sudo docker run ubuntu 或sudo docker create ubuntu & sudo docker start ubuntu
这样的话, docker容器无法启动。

原因
Docker中系统镜像的缺省命令是 bash,如果不加 -ti bash 命令执行了自动会退出。这是因为如果没有衔接输入流,本身就
会马上结束。加-ti 后docker命令会为容器分配一个伪终端,并接管其stdin/stdout支持交互操作,这时候bash命令不会自
动退出。

如果容器里运行了服务,那么它会监听一个端口,输入输出流保持打开,自然也就不需要-it参数了,比如 nginx容器,对于没
有监听的容器,比如ubuntu ,必须用-it参数来迫使容器运行起来,否则立马就退出了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值