docker笔记3 - docker使用指令

Docker

镜像

- docker images 来列出本地主机上的镜像。
	runoob@runoob:~$ docker images           
	REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
	ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
	ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
	REPOSITORY:表示镜像的仓库源
	TAG:镜像的标签
	IMAGE ID:镜像ID
	CREATED:镜像创建时间
	SIZE:镜像大小


- 使用最新版本的ubuntu系统镜像来运行容器时,命令如下:
	```
	runoob@runoob:~$ docker run -t -i ubuntu:latest /bin/bash 
	root@d77ccb2e5cca:/#
	```
	如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。
	在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像

-- 使用 docker search 命令来搜索镜像
	`runoob@runoob:~$  docker search httpd`
	NAME: 镜像仓库源的名称
	DESCRIPTION: 镜像的描述
	OFFICIAL: 是否 docker 官方发布
	stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
	AUTOMATED: 自动构建。


- 下载镜像。
	docker pull httpd
	docker pull ubuntu:13.10
 
- 使用这个镜像。
	docker run httpd
 
- 镜像删除使用 docker rmi 命令
	docker rmi hello-world
 
- 更新镜像 
	用镜像来创建一个容器。 
		docker run -t -i ubuntu:15.10 /bin/bash
		docker run -t -i centos /bin/bash
	在运行的容器内使用 apt-get update 命令进行更新。
	在完成操作之后,输入 exit 命令来退出这个容器。
	通过命令 docker commit 来提交容器副本。
		docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
		-m: 提交的描述信息
		-a: 指定镜像作者
		e218edb10161:容器 ID
		runoob/ubuntu:v2: 指定要创建的目标镜像名
	docker images 命令来查看我们的新镜像 runoob/ubuntu:v2:
		runoob@runoob:~$ docker images
		REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
		runoob/ubuntu       v2                  70bf1840fd7c        15 seconds ago      158.5 MB
	使用我们的新镜像 runoob/ubuntu 来启动一个容器
		docker run -t -i runoob/ubuntu:v2 /bin/bash        
		
- 从零开始来创建一个新的镜像。
	为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
		runoob@runoob:~$ vi Dockerfile 
		FROM    centos:6.7
		MAINTAINER      Fisher "fisher@sudops.com"
		RUN     /bin/echo 'root:123456' |chpasswd
		RUN     useradd runoob
		RUN     /bin/echo 'runoob:123456' |chpasswd
		RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
		EXPOSE  22
		EXPOSE  80
		CMD     /usr/sbin/sshd -D
	每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
	第一条FROM,指定使用哪个镜像源
	RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
	然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。
		runoob@runoob:~$ docker build -t runoob/centos:6.7 .

		-t :指定要创建的目标镜像名
		. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径			
		
- 为镜像添加一个新的标签。
	docker tag 860c279d2fec runoob/centos:dev
	
- 备份镜像
示例
	docker save -o nginx.tar nginx:latest
	或
	docker save > nginx.tar nginx:latest
	
- 还原镜像的备份文件
示例
	docker load -i nginx.tar
	或
	docker load < nginx.tar

容器

- 查看所有的容器:
	docker ps -a 查看所有(包括退出的)
	docker ps  查看正在运行的		
		CONTAINER ID        IMAGE                             PORTS                     NAMES		
		fce072cc88ce    training/webapp     "python app.py"    ...     0.0.0.0:32768->5000/tcp   grave_hopper			
		
		-l 查询最后一次创建的容器:
		-a 查看所有(包括退出的) 
		可以看到容器端口 5000 绑定主机端口 32768。

	
	所有的容器相关的命令都可以用 docker 指令 [容器ID|名字]
		CONTAINER ID :容器id
		NAMES:容器名字
	
- docker port[ID 或者名字] 可以查看指定 容器的某个确定端口映射到宿主机的端口号。
	$ docker port fce072cc88ce		
	$ docker port grave_hopper		
	
- docker logs [ID或者名字] 可以查看容器内部的标准输出。
	docker logs amazing_cori
	docker logs -f bf08b7f2cd89
	-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。	
-用 docker top [ID或者名字] 查看容器内部运行的进程
	docker top wizardly_chandrasekhar	
	
- 通过镜像创建一个容器		
	$docker run -t -i ubuntu:15.10 /bin/bash
	$docker run -itd --name ubuntu-test ubuntu /bin/bash		
	docker run -d -P training/webapp python app.py 
	docker run -d -p 5000:5000 training/webapp python app.py
	docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
	docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
	docker run [OPTIONS]  镜像:标签 [COMMAND] [ARG...]
		OPTIONS说明:
		-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
		-d: 后台运行容器,并返回容器ID;
		-i: 以交互模式运行容器,通常与 -t 同时使用;允许你对容器内的标准输入 (STDIN) 进行交互。
		-P:(大写) 随机端口映射,容器内部端口随机映射到主机的高端口
		-p:(小写) 指定端口映射,是容器内部端口绑定到指定的主机端口。格式为:主机(宿主)端口:容器端口
			默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp。
		-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=[]: 开放一个端口或一组端口;
		--volume , -v:	通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。
		--restart unless-stopped 遇到exit 自动重启   默认 no	
		[COMMAND]: 例如	/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。	
		
		
- docker port 命令可以让我们快捷地查看端口的绑定情况。
	runoob@runoob:~$ docker port adoring_stonebraker 5000
		127.0.0.1:5001

- 启动一个已停止的容器:
	$docker start b750bbbcfd88 		
	
- 查看所有容器状态
	$docker stats -a  #包含退出的 
	docker stats --help #使用帮助

- 启动,停止,重启的镜像实例(容器)
	docker start <容器 ID|名字>
	docker stop <容器 ID|名字>
	docker restart <容器 ID|名字>

- 进入,退出 的容器(镜像实例)
	在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
	docker attach
	docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
	docker attach 1e560fca3906   #进入  exit退出时,结束镜像实例
	docker exec -it 243c32535da7 /bin/bash  #进入 exit退出时,不结束镜像实例
	我们可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。
		`root@0123ce188bd8:/#  exit`
		
		docker exec -it centos /bin/bash
		
- 导出本地某个容器到压缩文件作为备份
	$ docker export 1e560fca3906 > ubuntu.tar
	
- 导入本地容器备份
    cat /d/pub/mariadb.tar | docker import - test/ubuntu:v1
	cat docker/ubuntu.tar | docker import - test/ubuntu:v1
- 从url 导入
	$ docker import http://example.com/exampleimage.tgz example/imagerepo
	docker import /d/pub/data/mariadb.tar  mariadb
	或
	cat /d/pub/data/mariadb.tar  | docker import - mariadb
- 删除容器
	docker rm -f 1e560fca3906
	删除容器时,容器必须是停止状态,否则会报错误
- 清理掉所有处于终止状态的容器。
	$ docker container prune
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值