docker

docker

docker介绍

	Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

容器与虚拟机的区别

容器是进程级别的隔离
虚拟机是操作系统级别的隔离
容器启动时是秒级的
操作系统启动时是分钟级的

docker的三大基本概念

镜像:
	镜像就是启动一个容器的模板
容器:
	容器就是对外提供服务的进程,也可以说容器就是镜像启动起来的一个实例
仓库:
	仓库就是存放镜像的地方

常用镜像仓库

官方仓库:hub.docker.com
阿里云私有仓库:registry.cn-hangzhou.aliyuncs.com

docker镜像相关命令

搜索镜像

# 语法:
	docker search [镜像名称]
# 示例
[root@web03 ~]# docker search apache
# 镜像名称   描述信息       收藏个数  是否是官方镜像 自构建镜像
NAME       DESCRIPTION    STARS     OFFICIAL      AUTOMATED
httpd      The Apache...   4097      [OK]       

拉取镜像

# 语法:
	docker pull [镜像名称]
# 示例:
[root@web03 ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
# 镜像层
a2abf6c4d29d: Pull complete 
c7a4e4382001: Pull complete 
4044b9ba67c9: Pull complete 
c8388a79482f: Pull complete 
413c8bb60be2: Pull complete 
1abfd3011519: Pull complete 
# 镜像ID号(镜像ID号是唯一的)
Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
# 镜像下载状态
Status: Downloaded newer image for redis:latest
# 镜像的全称(镜像的tag)
docker.io/library/redis:latest

查看当前系统上有哪些镜像

# 语法:
	docker images 或 docker image ls
[root@web03 ~]# docker images 
# 镜像名称 镜像版本号 镜像ID(缩写) 镜像生成的时间到现在的时间 镜像大小
REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
redis        latest    7614ae9453d1   7 months ago        113MB
# 选项
	-q:只显示镜像ID
	[root@web03 ~]# docker images -q
	7614ae9453d1

获取镜像的详细信息

# 语法
	docker inspect [镜像名称或镜像ID]
# 选项
	-f:格式化输出
	[root@web03 ~]# docker inspect -f '{{.Id}}' redis
sha256:7614ae9453d1d87e740a2056257a6de7135c84037c367e1fffa92ae922784631

登录镜像仓库

# 语法
	docker login
# 默认情况下,docker login登录的是官方仓库,如果登录其他镜像仓库则需要指定其它镜像仓库的URL链接
# 示例
[root@web03 ~]# docker login registry.cn-hangzhou.aliyuncs.com
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
# 登录成功后会在用户的家目录下生成该目录
[root@web03 ~]# cat ~/.docker/config.json 
{
	"auths": {
		"registry.cn-hangzhou.aliyuncs.com": {
			"auth": "YWxpeXVuNzM2MDI2NzkyODpqaTE4Mjc5MzIyNzky"
		}
	}
}
# 选项
	--username|-u:指定用户名
	--password|-p:指定密码

为镜像标签

# 镜像标签的构成
docker.io/library/redis:latest
docker.io:镜像仓库的URl
library:镜像仓库命名空间
redis:镜像名称
latest:镜像版本号
# 为镜像打标签
	# 语法:
		docker tag [镜像ID] 镜像标签
		[root@web03 ~]# docker tag 7614ae9453d1 registry.cn-hangzhou.aliyuncs.com/zhsb/zhzz:v1
		[root@web03 ~]# docker images
REPOSITORY                                    TAG       IMAGE ID       CREATED        SIZE
redis                                         latest    7614ae9453d1   7 months ago   113MB
registry.cn-hangzhou.aliyuncs.com/zhsb/zhzz   v1        7614ae9453d1   7 months ago   113MB

镜像上传

# 语法:
	docker push [镜像标签]
	[root@web03 ~]# docker push registry.cn-hangzhou.aliyuncs.com/zhsb/zhzz:v1

镜像删除

# 语法
	docker rmi [镜像名称或者镜像ID]
# 选项
	-f:强制删除
# 当有容器正在使用镜像是,强制删除镜像,只能删除镜像的所有tag,不会删除镜像本身

镜像清空

# 语法:
	docker image prune
# 选项:
	-a:删除所有镜像

查看镜像历史(镜像的构建历史)

# 语法
	docker history [镜像ID或镜像名称]
[root@web03 ~]# docker history redis
IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT
7614ae9453d1   7 months ago   /bin/sh -c #(nop)  CMD ["redis-server"]         0B        
<missing>      7 months ago   /bin/sh -c #(nop)  EXPOSE 6379                  0B

保存镜像(commit)

# 保存正在运行的容器直接为镜像
# 语法
	docker commit [容器ID|容器名称]
# 示例
	docker commit -a "Alvin" -m "镜像" -p  295c18df826e test:v1
[root@web03 ~]# docker images
REPOSITORY                                    TAG       IMAGE ID       CREATED              SIZE
test                                          v1        a2de4409ad06   About a minute ago   113MB
redis                                         latest    7614ae9453d1   7 months ago         113MB
registry.cn-hangzhou.aliyuncs.com/zhsb/zhzz   v1        7614ae9453d1   7 months ago         113MB

保存镜像(import/export)

# 保存正在运行的容器为镜像压缩包
# 保存容器为镜像
# 语法
	docker export [容器的ID] > [包名称]
# 示例
	[root@web03 ~]# docker export 295c18df826e > test.tar
	[root@web03 ~]# ll
total 109924
-rw-------. 1 root root      1283 May 12 19:25 anaconda-ks.cfg
-rw-r--r--. 1 root root       201 May 12 20:38 host_ip.sh
-rw-r--r--. 1 root root 112551424 Aug  1 17:22 test.tar

# 语法
	docker import 包名称 自定义镜像名称
# 示例
	[root@web03 ~]# docker import test.tar test
sha256:c28570bd75b19462ca4af49bed8ff73d9410021d043fa056a61820fdb8cf86c9
[root@web03 ~]# docker images 
REPOSITORY                                    TAG       IMAGE ID       CREATED         SIZE
test                                          latest    c28570bd75b1   8 seconds ago   109MB
redis                                         latest    7614ae9453d1   7 months ago    113MB
registry.cn-hangzhou.aliyuncs.com/zhsb/zhzz   v1        7614ae9453d1   7 months ago    113MB

保存镜像(save/load)

# 保存镜像为压缩包
# 语法
	docker save 镜像名称|镜像ID > 包名称
# 示例
	[root@web03 ~]# docker save c28570bd75b1 > tt1.tar
	[root@web03 ~]# ll
	total 219848
	-rw-------. 1 root root      1283 May 12 19:25 anaconda-ks.cfg
	-rw-r--r--. 1 root root       201 May 12 20:38 host_ip.sh
	-rw-r--r--. 1 root root 112551424 Aug  1 17:22 test.tar
	-rw-r--r--. 1 root root 112558592 Aug  1 17:29 tt1.tar
# 第二种写法
[root@web03 ~]# docker save  -o ttw.tar  c28570bd75b1
[root@web03 ~]# ll
total 329772
-rw-------. 1 root root      1283 May 12 19:25 anaconda-ks.cfg
-rw-r--r--. 1 root root       201 May 12 20:38 host_ip.sh
-rw-r--r--. 1 root root 112551424 Aug  1 17:22 test.tar
-rw-r--r--. 1 root root 112558592 Aug  1 17:29 tt1.tar
-rw-------. 1 root root 112558592 Aug  1 17:30 ttw.tar

# 导入镜像
	# 语法
		docker load < 包名称
		docker load < tt1.tar
## save/load保存镜像无法自定义镜像名称,save保存镜像时如果使用ID保存则load导入镜像无名称使用名称导出时导入才有名称

保存镜像三种方式的区别

1.export保存的镜像体积要效益save(save保存更加完全,export保存会丢失一些不必要的数据)
2.export可以重命名镜像名称而save不行
3.save可以同时保存多个镜像而export不行
posted on 2022-08-01 17:37  jilei  阅读(31)  评论(0编辑  收藏  举报