Docker容器虚拟化技术---Docker安装和操作1

一、Docker安装


Docker在主流的操作系统和云平台上都可以使用,包括Linux操作 系统(如Ubuntu、Debian、CentOS、Redhat等)、MacOS操作系统和 Windows操作系统,以及AWS等云平台。

Docker官网

	https://docs.docker.com/

1. 卸载历史版本

# 查看安装
	yum list installed | grep docker

# 卸载 (如果没有安装过,直接跳过卸载步骤)
	yum -y remove containerd.io.x86_64
	yum -y remove docker-ce.x86_64
	yum -y remove docker-ce-cli.x86_64

# 删库
	rm -rf /var/lib/docker

在这里插入图片描述

2. 安装官方yum源

# 安装utils,config-manager在utils中
	yum install -y yum-utils   
	
# 安装官方yum源
	yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

在这里插入图片描述
在这里插入图片描述

3. 安装Docker引擎

# 安装Docker引擎
	yum install -y docker-ce docker-ce-cli containerd.io

在这里插入图片描述

4. 启动docker

# 开机启动
	systemctl enable docker
# 启动
	systemctl start docker
# 查看Docker状态
	docker info

在这里插入图片描述



二、Docker操作


1. 使用Docker镜像

1.1 获取镜像

命令:

	docker pull NAME[:TAG] (如果tag不指定,则默认拉取最新的镜像)    

Dockerhub:镜像的公共库

	描述一个镜像需要包括“名称+标签”信息

网址:https://hub.docker.com/

	可以选择注册一个账户
	不注册也可以进行镜像的拉去操作,但是不能上传

在这里插入图片描述

例如:

	docker pull mysql:5.7.30

在这里插入图片描述

注意:

	如果不显式指定TAG,则默认会选择latest标签,这会下载仓库中最新版本的镜像。
	
	镜像的仓库名称中还应该添加仓库地址(即registry,注册服务器)作为前缀,
		默认使用的是DockerHub服务,该前缀可以忽略

	完整的命令格式:
		docker pull registry.hub.docker.com/mysql:5.7.30
		如果从非官方的仓库下载,则需要在仓库名称前指定完整的仓库地址
1.2 查看镜像信息

命令:

	docker images

在这里插入图片描述

可以通过man docker-images查看更多命令参数
在这里插入图片描述

1.3 添加镜像标签

命令:

	docker tag [原镜像名:tag号] [目标镜像名:tag号]     # 如果tag号缺省,默认latest

例如:

	docker tag mysql:5.7.30 mysql5

在这里插入图片描述

其实就是相同的一个image,设置了两个tag

1.4 查看镜像详细信息

命令:

	docker inspect NAME[:TAG]
	返回的是一个JSON格式的消息,如果我们只要其中一项内容时, 可以使用参数-f来指定

例如:

	docker inspect mysql:5.7.30

在这里插入图片描述

查看具体参数:

	docker inspect mysql:5.7.30 -f  {{".属性名称"}} 

在这里插入图片描述

1.5 搜寻镜像

命令:

	docker search 名称

在这里插入图片描述

注意:

	dockerhub仓库镜像, 私有仓库无法搜索到
1.6 删除镜像

命令:

	docker  rmi  NAME[:TAG]

例如:

	docker rmi mysql:5.7.30
	docker rmi mysql5:latest

在这里插入图片描述

使用镜像ID删除镜像

	docker pull nginx

在这里插入图片描述

在这里插入图片描述

注意:

	如果有容器正在运行该镜像,则不能删除
	如果想强行删除用 -f (不推荐)
1.7 上传镜像

命令:

	docker push NAME[:TAG]

注意:

	上传镜像到仓库,默认上传到Docker Hub官方仓库(需要登录)


2. 操作Docker容器

2.1 创建容器

命令:

	docker create NAME[:TAG]

	可以加选项参数
		-i 交互模式
		-t 伪终端
		-d 后台运行
		-rm 容器退出后是否自动删除

例如:

	docker create -it nginx 

在这里插入图片描述

2.2 启动容器

命令:

	docker start 容器id

例如:

	docker  start  0ab5ef79b786

在这里插入图片描述

2.3 查看容器状态

命令:

	docker ps 查看运行的容器

查看运行的容器

	docker ps

在这里插入图片描述

查看所有容器

	docker ps -a

在这里插入图片描述

2.4 新建并启动容器

命令:

	docker run NAME[:TAG]
	相当于 docker create + docker start

	可以加选项参数
		--network host 使用宿主机IP地址
		man docker run
		docker run --help

例如:

	docker run -it --rm --network host  nginx
	--rm  容器停止后自动卸载
	--it  交互式
	--network host  容器ip地址和宿主机ip地址一样

在这里插入图片描述

ctrl+c退出,容器停止,因为配置了rm,因此容器被移除

在这里插入图片描述

2.5 终止容器

命令:

	docker stop 容器id -t 时间 (默认10秒)

	首先向容器发送SIGTERM信号,等待一段超时时间(默认为10 秒)后,
		再发送SIGKILL信号来终止容器

	docker kill 容器id
	docker kill 命令会直接发送SIGKILL信号来强行终止容器

例如:

	# 后台 启动容器
		docker run -it --rm -d --network host  nginx 
	
	# -t  定时5s后关闭容器
		docker stop 5c1ba38c3a45  -t 5 
		
	# 强制终止容器    
		docker kill 5c1ba38c3a45

在这里插入图片描述

处于终止状态的容器,可以通过docker start命令来重新启动

	docker start ce554267d7a4

在这里插入图片描述

docker restart命令会将一个运行态的容器先终止,然后再重新启动

	docker restart 090d67f05011

在这里插入图片描述

2.6 进入容器

命令:

	docker exec -it [容器ID] /bin/bash

	早期有attach命令,对于阻塞命令会等待,所以不方便
	在Docker 1.3.0后提供了exec 可以在容器内直接执行任意命令

例如:

	docker exec -it 090d67f05011 /bin/bash	

在这里插入图片描述

无论在容器内进行何种操作,依据依据镜像创建的其他容器都不会受影响(由于namespace的隔离)(将数据持久化的除外) exec: 容器执行某操作,操作为容器ID后边的命令 -it: 以伪终端模式,这样我们就相当于进入到容器中了

2.7 查看容器

命令:

	docker inspect [容器ID]

在这里插入图片描述

命令:

	docker stats [容器ID]

在这里插入图片描述

2.8 删除容器

命令:

	docker rm [容器ID]

docker rm命令只能删除处于终止或退出状态的容器,并不能删除还处于运行状态的容器
要直接删除一个运行中的容器,可以添加-f参数。Docker会先 发送SIGKILL信号给容器,终止其中的应
用,之后强行删除

在这里插入图片描述



3. 访问Docker仓库

Docker Hub是最大的公共镜像仓库(https://hub.docker.com/)
在公共仓库中注册一个账号,每ID可以免费拥有1个私有镜像
在这里插入图片描述

3.1 登录仓库

docker login -u username -p password
默认登陆的是docker hub

	[root@localhost ~]# docker login -u 账号  -p  密码
	
	WARNING! Using --password via the CLI is insecure. Use --password-stdin.
	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

登录成功的用户可以上传个人制造的镜像。

用户无需登录即可通过docker search命令来查找官方仓库中的镜 像,并利用docker pull命令来将它下载到本地

3.2 登出仓库

docker logout
可以同时登陆多个docker仓库,因此此命令一般不执行

	[root@localhost ~]# docker logout
	Removing login credentials for https://index.docker.io/v1/
3.3 认证文件

Mac/Win机器上的是隐藏密码的,但是在Linux下是显示密码的,只不过进行了base64编码, 只要拷贝
此文件到其他机器指定目录下(/root/.docker/config.json)即可免登录

	{
	    "auths": {
	        "https://index.docker.io/v1/": {
	            "auth": "Z2F2aW5saTgwczpsanAxMjM0NjU="
	       }
	   },
	    "HttpHeaders": {
	        "User-Agent": "Docker-Client/19.03.12 (linux)"
	   }
	}


4. 常用软件的容器化部署

4.1 Mysql

新建并启动mysql容器

	docker pull mysql:5.7.30  # 拉取镜像操作可以省略
	docker run  --network host  -e MYSQL_ROOT_PASSWORD=root -d --rm mysql:5.7.30
	
	# 参数
		--network host : 宿主机IP 不能再使用端口映射 -p 宿主机端口:容器端口 只能使用容器端口
		--rm:当容器停止后,对容器及其申请的卷执行删除操作
		-e key=value: 指定环境变量(此处指定了mysql root密码的环境变量,密码为root)
		-d :后台运行

在这里插入图片描述

访问MySQL

	mysql -h192.168.80.60 -uroot -proot

在这里插入图片描述


4.2 Tomcat

新建并启动Tomcat容器

	docker pull tomcat:8.5.56-jdk8-openjdk      # 拉取镜像操作可以省略(这是一个带着jdk的tomcat)
	docker run -it --rm --network host tomcat:8.5.56-jdk8-openjdk

	-it : 交互式伪客户端
	--rm:当容器停止后,对容器及其申请的卷执行删除操作
	--network host:宿主机IP

在这里插入图片描述

访问tomcat,报错,找不到资源(因为此时安装的Tomcat没有提供默认 的欢迎页面)
在这里插入图片描述
浏览器访问也访问不到默认的欢迎页面
在这里插入图片描述

解决:进入到容器中,创建项目

	进入到运行中的容器:tomcat:8.5.56-jdk8-openjdk
	创建项目目录:webapps
	创建测试项目:dabing-project
	在测试项目中创建欢迎页面:index.html
	访问测试项目中的欢迎页面

在这里插入图片描述


4.3 Nginx

新建并启动Nginx容器

	docker pull nginx         # 拉取镜像操作可以省略
	docker run --name nginx1  --network host -d nginx
	
	--name:运行的容器名称

访问nginx
在这里插入图片描述


4.4 Redis

新建并启动Redis容器

	docker pull redis:5.0.9
	docker run  --network host -d redis:5.0.9

在这里插入图片描述

访问Redis
在这里插入图片描述
注意:

	如果宿主机也运行着redis,容器中的redis将无法启动,因为6379端口被占用了

解决:

	将容器的6379端口转换成其他端口,就不会造成端口冲突了

在这里插入图片描述



5. Docker命令图谱

##### 5.1 创建容器

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿城大饼

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值