IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker应用操作 -> 正文阅读

[系统运维]Docker应用操作

目录

一、Docker安装

在线安装

离线安装

Docker镜像加速

二、常用操作指令

1、Docker 基本操作实践

2、Docker 镜像操作实践

3、Docker 容器操作实践

4、Docker数据管理实践

5、Dockerfile及镜像制作实践

三、Docker 镜像安装实践

1、启动运行mysql

2、安装运行Redis

3、安装运行nginx

4、安装运行Nocas

四、Docker 容器互联实践


一、Docker安装

Docker是一个虚拟化平台( 官网https://www.docker.com/),诞生于 2013 年初,基于 Google 公司的 Go 语言进行实现。可以通过虚拟化方式,为应用提供可运行的容器。基于这种方式,可更快地打包、测试以及部署应用程序。

在线安装

1:安装一组工具:?? ?
? ? ? sudo yum install -y yum-utils?
2:设置 yum 仓库地址:?? ?

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager \
     --add-repo \
     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


3:更新 yum 缓存:?? ?
? ? ? sudo yum makecache fast #yum 是包管理器
4:安装新版 docker:
? ? ? sudo yum install -y docker-ce docker-ce-cli containerd.io

离线安装

1.下载离线安装包
? ? https://download.docker.com/linux/static/stable/网址下载指定版本
2.下载离线安装工具
? ?https://github.com/Jrohy/docker-install/
3.将下载好的资源放在一个目录(离线安装包+离线安装工具)
? ?在linux环境下,创建/root/setup/docker目录,然后拷贝下载好的资源到此目录(可通过MobaXterm工具直接上传到linux目录)
4.执行安装操作

# 进入文件夹
cd /root/setup/docker

# 为 install.sh添加执行权限
chmod +x install.sh

# 安装
./install.sh -f docker-20.10.6.tgz


5.安装成功后,检查状态
? ?docker info

Docker镜像加速

cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    },
  "data-root": "/var/lib/docker"
}
EOF

二、常用操作指令

1、Docker 基本操作实践

为 install.sh添加执行权限: ?? ???????chmod +x install.sh
安装:?? ??? ??? ?????????????????????????????????./install.sh -f docker-20.10.6.tgz
查看Docker信息: ?? ??? ?????????????????docker info
启动docker服务:? ? ? ? ? ? ? ? ? ? ? ? ? systemctl start docker
停止docker服务 : ?? ??? ?????????????????systemctl stop docker
查看Docker状态:? ? ? ? ? ? ? ? ? ? ? ? ?systemctl status docker
设置Docker开机自启:?? ???????????????systemctl enable docker
禁用Docker开机自启:?? ???????????????systemctl disable docker
重新启动Docker服务:?? ???????????????systemctl restart docker

查看docker info中具体key的信息: docker info | grep 'Docker Root Dir:'

2、Docker 镜像操作实践

下载镜像文件:? ? ? ? ? ?docker pull 镜像名 ?(例:docker pull hello-world)
浏览镜像文件:?? ??? ?docker images
运行镜像文件:?? ??? ?docker run hello-world
导入镜像操作:?? ??? ?docker load < hello-world.tar.gz ?
导出镜像文件:?? ??? ?docker save ?hello-world | gzip > hello-world.tar.gz ?
查看镜像历史:?? ??? ?docker history hello-world
查看镜像详情:?? ??? ?docker inspect 镜像名或镜像id(例:docker inspect hello-world)
删除镜像文件:?? ??? ?docker image rm 镜像名或镜像id (例:docker image rm hello-world)

3、Docker 容器操作实践

创建并启动容器:?? ?????????????????ocker run -it xxxx bash(例:docker run -it centos:7 bash)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# xxxx - 镜像名, 或 image id 的前几位,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#-it 这是两个参数(-i表示交互式操作, -t 表示终端)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???# bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)
查看docker运行中的容器:? ? ?docker ps
查看docker运行所有容器:? ? ?docker ps -a? ? ? ? ? ? ? #-a表示全部(all)

查看容器日志:? ? ? ? ?docker container logs 802 ? ? ? #重要 ,802为容器id ,container可省略不写
查看容器内容:? ? ? ? ?docker inspect 容器id
启动容器:?? ??? ?????????docker container start 容器id
停止容器:?? ??? ?????????docker container stop 容器id
重启容器:?? ??? ?????????docker container restart 容器id
进入容器:?? ??? ?????????docker exec -it 802 bash? ? ? ? ?#802为容器id
退出容器:?? ??? ?????????exit
删除容器:?? ??? ?????????docker container rm 802? ? ? ? ?#802为容器id
清理所有终止状态容器:? ? ? ?docker container prune

4、Docker数据管理实践

#容器中管理数据主要有两种方式:
1.挂载主机目录 (Bind mounts
2.数据卷(Volumes)

创建数据卷:?? ??? ????????docker volume create container-vol ? ?#?container-vol为数据卷名
删除数据卷:?? ??? ????????docker volume rm container-vol? ? ? ? ? #?如果数据卷被容器使用则无法删除
查看所有数据卷:?? ??? ?docker volume ls
查看指定数据卷:?? ??? ?docker volume inspect container-vol
清理无主数据卷:?? ??? ?docker volume prune

启动挂载数据卷的容器:?? ?1):docker run -it -v container-vol:/root centos:7 bash ? ? ?? ??? ??? ? #-v container-vol:/root 把数据卷 container-vol 挂载到容器的 /root 目录
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2):docker run -it --mount source=container-vol,target=/root centos:7 bash ? ? ?
挂载主机目录:?? ??? ?docker run -it -v /usr/app:/opt/app centos:7 bash?? ??? ??? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#? /usr/app:为宿主机目录
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? #? /opt/app: 为启动容器的一个目录
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#? -v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。
查看挂载目录信息:? ? ?docker inspect 91a #91a 为容器id

5、Dockerfile及镜像制作实践

构建镜像(需要Dockerfile文件和资源):?? ?docker build -t jdk:8 . ?#不要丢掉这里的点,-t表示镜像标识(镜像名),是tag单词的缩写.
运行镜像:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? docker run -it jdk:8 bash
----------------------
Dockerfile文件(可通过:touch Dockerfile 创建此文件):

FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
    PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD ['bash']

参数说明:?

FROM? ???????????????#编写FROM语句(关键字一定要大写,例如FROM不能写小写)
ADD? ? ????????????????#通过ADD命令将宿主机中的压缩包传入镜像容器中的指定目录,并同时解压缩
ENV? ? ????????????????#设置环境变量(通过ENV关键字实现,目录启动容器中的目录)? ? ? ??
CMD ['bash']? ? ? ?#指定命令行操作(所有指令与后面内容要有空格)
----------------------

三、Docker 镜像安装实践

1、启动运行mysql

如果安装过程中失败了,则可通过docker ps -a 查看以前的容器,假如已存在,则通过docker rm 镜像id 指令删除再重新安装即可。

sudo docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.23

2、安装运行Redis

1、准备配置文件
??????创建redis配置文件目录
??????mkdir -p /usr/local/docker/redis01/conf
??????在配置文件录下创建redis.conf配置文件(这个文件一定要创建,否在我们进行目录挂载时默认生成的是一个目录)
??????touch /usr/local/docker/redis01/conf/redis.conf

2、创建redis实例并启动:?

sudo docker run -p 6379:6379 --name redis01 \
-v /usr/local/docker/redis01/data:/data \
-v /usr/local/docker/redis01/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf 

3、安装运行nginx

1):创建数据卷:?? ??docker volume create nginx-vol ? ? #这个对象会在宿主机直接创建一个目录
2):启动nginx服务:?

docker run --name nginx ?-p 80:80 -v nginx-vol:/etc/nginx -d nginx

#其中? ?:/etc/nginx? 为nginx容器启动时,nginx镜像文件默认的解压目录
#说明:? 假如以后想修改nginx配置,可以直接去nginx-vol数据卷对应的目录去修改.

4、安装运行Nocas

? ? ? 通过source指令运行容器目录下的sql文件

source  /容器目录/nacos-mysql.sql

?????创建并启动nacos容器(注:参数修改成自己电脑的配置参数)

docker run  \
-e TZ="Asia/Shanghai" \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_DATABASE_NUM=1 \
-e MYSQL_SERVICE_HOST=192.168.227.131 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=jason \
-e MYSQL_SERVICE_PASSWORD=jason \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-p 8848:8848 \
--name nacos \
--restart=always \
-d nacos/nacos-server:1.4.1

#参数说明
#单节点模式? ? ? ? ? ? ? ? ? MODE=standalone
#数据库地址? ? ? ? ? ? ? ? ? MYSQL_SERVICE_HOST
#数据库用户名? ? ? ? ? ? ? MYSQL_SERVICE_USER
#数据库密码? ? ? ? ? ? ? ? ? MYSQL_SERVICE_PASSWORD
#需连接的数据库名称 ? ?MYSQL_SERVICE_DB_NAME
#端口映射? ? ? ? ? ? ? ? ? ? ? -p 8848:8848
#任意时候重启容器,开机就能自动启动容器(需设置docker为开机自启) ?--restart=always

四、Docker 容器互联实践

Docker 中容器与容器之间进行通讯的解决方案一般有两种:
第一种:两个容器通过宿主机进行通讯(容器中的端口会映射到宿主机上)
第二种:两个容器之间直接通过虚拟网络进行连接,但是需要我们在docker中创建网络。

1、新建网络

docker network create -d bridge t-net  #t-net为自己起的网络名称

? ? ? 其中,-d driver,网络类型,默认 bridge。
? ? ? 说明,创建好这个网络以后,在网落上添加容器,容器就可以通讯了?

2、列出所属有网络:? ? ?

docker network ls

3、查看网络信息:? ?

docker inspect 67d #67d 为创建的网络id

4、创建容器:?? ??? ?

1):  docker run -it --name app1 --network t-net centos:7

2):  docker run -it --name app2 --network t-net centos:7

5、测试网络互通:?? ?在两个终端中分别执行:

ping app1?? ?

ping app2

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 11:27:40  更:2021-09-05 11:28:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:31:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码