docker入门

Docker介绍

Docker作用:
	解决环境差异,引发不兼容问题。
	快速搭建环境,快速水平扩展(集群)
	
	一次构建,应用到处运行。

docker 是一个开源的应用容器引擎,基于 Go 语言开发。
	好处:
			可移植性
			可伸缩
			隔离性
			资源利用率高
			
镜像加速器配置:
sudo mkdir -p /etc/docker
		sudo tee /etc/docker/daemon.json <<-'EOF'
			{
			  "registry-mirrors": [

					"https://registry.dockermirror.com",
				
					"阿里镜像",
				
					"https://docker.nju.edu.cn",

					"https://hub.littlediary.cn",

					"https://hub.xdark.top",

					"https://dockerpull.org",

					"https://hub.crdz.gq",

					"https://docker.1panel.live",

					"https://docker.unsee.tech"
					
					]
			}
		EOF
		sudo systemctl daemon-reload
		sudo systemctl restart docker

镜像常用命令

查看镜像:

	中央仓库连接不上。进行  【docker search 镜像名称】   会报超时问题。暂时不管或科学上网。
	docker search redis
	Error response from daemon: Get "https://index.docker.io/v1/search?q=redis&n=25": net/http: TLS handshake timeout

拉取镜像(下载)
	docker pull 镜像名称[:tag]    如果不指定版本号,表示下载最新版本
	
	删除镜像
		# 删除单个镜像(-f 强制删除):
		docker rmi  -f 镜像ID
		
		docker rmi -f $(docker images -q)	# 慎用  根据id删除所有镜像

帮助命令:
	哪里命令不会,就在哪个命令后面增加--help查询帮助文档。
	docker images --help
	docker xxx --help

容器常用命令

1.查询容器
	docker ps           只查看正在运行的容器
	docker ps -a		正在运行的容器以及停止的容器	
	docker ps -q		只查看正在运行的容器id
	docker ps -aq		查看正在运行的容器以及停止的容器的id

2.创建容器

	-i:表示运行容器
	-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
	--name :为创建的容器命名。
	-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。

	1.创建交换式容器
		docker run -it --name=mycentos centos:7 /bin/bash	
		交互式容器一旦创建成功(创建+启动),那么,直接进入容器内部(每一个容器都是一个最小型虚拟机)。
		exit 首次退出会停止容器。重新启动容器后登录,再退出。容器就不会停止。
	2.创建守护式容器
		docker run -id --name=mycentos centos:7	
	3.停止容器、启动容器、重启容器
		docker stop 容器名称或id
		docker start 容器名称或id
		docker restart 容器名称或id

4.删除容器 (-f    force)
	docker rm -f 容器名称或id
	
		删除正在运行的容器是不允许的。可以先停止再删除  或  加 -f 强制删除。
		docker rm spzx_mysql
		Error response from daemon: cannot remove container "/spzx_mysql": container is running: stop the container before removing or force remove

5.登录容器
	docker exec -it 容器名称 /bin/bash

6.其他命令
	docker logs -f 容器名称/容器的id	# 查询容器内进程日志,-f参数表示实时监控日志信息     ctrl + c
	docker inspect 容器名称/容器的id	# 查看容器的详情信息
	docker cp 						 # 完成容器和宿主机之间的文件copy    容器即使停止也可以拷贝。	
		
		docker cp ./nginx.tar  mycentos_01:/opt			
		docker cp mycentos_01:/opt/nginx.tar ./

7.备份与迁移

	docker commit 容器名称/容器的id 镜像名称		 # 把docker容器保存成一个镜像
	docker save -o 镜像tar文件名称 镜像名称/镜像id	# 把镜像保存为tar文件
	docker load -i 镜像tar文件名称				# 把tar文件恢复成为一个镜像

数据卷

数据卷就是将容器里的目录和宿主机目录进行映射。将容器里的目录数据备份到宿主机目录里。容器删除,容器里的数据没了。
但是,重新创建容器,将容器里的目录跟宿主机目录进行挂载 ,数据就可以找回。(异地备份)

关于数据卷的操作:
	docker volume ls                    # 查看数据卷列表
	docker volume create 数据卷名称      # 创建数据卷生成的宿主机上的物理路径: /var/lib/docker/volumes/数据卷名称/_data    
	docker volume inspect 数据卷名称     # 查看数据详情
	docker volume rm 数据卷名称          # 删除指定的数据卷

数据卷挂载:案例
	docker run -d --name=redis01 -p 6380:6379 -v redis-data:/data redis:7.0.10
	
目录挂载:案例	
	docker run -d --name redis02 -p 6381:6379 -v /redis-data:/data redis:7.0.10

dockerfile

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
dockerfile就是一个编写相关指令的文本文件。通过这个文件可以创建想要的镜像。
	
	
	阿里云公开镜像:
		1. 登录阿里云Docker Registry
		$ docker login --username=yanjingkuang01 registry.cn-hangzhou.aliyuncs.com
		用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

		您可以在访问凭证页面修改凭证密码。


		2. 将镜像推送到Registry
		$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/docker_xxx/centos7_jdk17:[镜像版本号]
		$ docker push registry.cn-hangzhou.aliyuncs.com/docker_xxx/centos7_jdk17:[镜像版本号]

		3. 从Registry中拉取镜像
		$ docker pull registry.cn-hangzhou.aliyuncs.com/docker_xxx/centos7_jdk17:[镜像版本号]

docker compose

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Docker Compose作用:批量管理容器。
		# 启动容器(如果不存在容器就创建、存在则修改)
		docker compose -f docker-compose.yml up -d

		# 删除所有容器
		docker compose -f docker-compose.yml down

		# 停止所有容器
		docker compose -f docker-compose.yml stop

		# 启动所有容器
		docker compose -f docker-compose.yml start

		# 重启所有容器
		docker compose -f docker-compose.yml restart
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计