300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Docker容器虚拟化技术---Docker安装和操作1

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

时间:2023-01-17 18:52:18

相关推荐

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

一、Docker安装

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

Docker官网

/

1. 卸载历史版本

# 查看安装yum list installed | grep docker# 卸载 (如果没有安装过,直接跳过卸载步骤)yum -y remove containerd.io.x86_64yum -y remove docker-ce.x86_64yum -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 /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:镜像的公共库

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

网址:/

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

例如:

docker pull mysql:5.7.30

注意:

如果不显式指定TAG,则默认会选择latest标签,这会下载仓库中最新版本的镜像。镜像的仓库名称中还应该添加仓库地址(即registry,注册服务器)作为前缀,默认使用的是DockerHub服务,该前缀可以忽略完整的命令格式:docker pull registry./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.30docker 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 rundocker 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 容器iddocker 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是最大的公共镜像仓库(/)

在公共仓库中注册一个账号,每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/engine/reference/commandline/login/#credentials-storeLogin Succeeded

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

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

3.2 登出仓库

docker logout

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

[root@localhost ~]# docker logoutRemoving 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.9docker run --network host -d redis:5.0.9

访问Redis

注意:

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

解决:

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

5. Docker命令图谱

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。