Docker总结

Docker核心对象:(镜像(image),容器(container))

Docker操作集合

Docker 基本操作

systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl enable docker
systemctl disable docker
systemctl status docker
docker info

Docker镜像操作

docker pull centos:7
docker images
docker image rm centos:7
docker save centos:7 | gzip>centos7.tar.gz
docker load < centos7.tar.gz
docker inspect centos:7
docker history centos:7
docker build -t jdk:8 . 

Docker 数据卷操作

docker volume create 数据卷名称
docker volume ls
docker volume rm 数据卷名称
docker volume inspect 

Docker容器操作

docker run -d  --name xxx  -p 8090:8090  -v ...   --always ....  -e .......
docker ps 
docker ps -a
docker logs 容器id 
docker inspect 容器id
docker stop 容器id
docker start 容器id
docker restart 容器id
docker rm -f 容器id  
docker exec -it 容器id bash
docker container prune (移除所有exit状态的容器)
exit 

Docker 网络操作

docker network create t-net(网络名称)
docker network inspect t-net
.... 

1.核心架构

在这里插入图片描述

 2.Docker安装

1.安装虚拟机

基于vmware打开CentOS

准备CentOS,本次以CentOS7为例进行安装。

在这里插入图片描述

2. 克隆CentOS(选择链接克隆-更省空间),命名为CentOS7964-docker

在这里插入图片描述

在这里插入图片描述

重命名虚拟机名称及存放位置重定义

3.开启虚拟机系统

在这里插入图片描述

打开终端,使用ifconig查找虚拟机ip地址 

4.通过MobaXterm工具链接虚拟机系统

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 5.安装Docker

5.1卸载Docker

sudo yum remove docker-ce \
                docker-ce-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine

5.2在线安装Docker

5.2.2安装一组工具

sudo yum install -y yum-utils  

5.2.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 

5.2.3跟新yum缓存

sudo yum makecache fast #yum 是包管理器 

5.2.4安装新版Docker

sudo yum install -y docker-ce docker-ce-cli containerd.io 

5.3离线安装

5.3.1下载Docker离线安装包,地址:

https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz 

5.3.2下载离线安装工具

https://github.com/Jrohy/docker-install/ 

在这里插入图片描述

说明,将下载好的这个工具解压.

5.3.3将下载好的资源放在一个目录,例如:

在linux环境下,创建/root/setup/docker目录,然后拷贝下载好的资源到此目录(可通过MobaXterm工具直接上传到linux目录)

5.3.4执行安装

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

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

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

5.3.5检查安装状态

docker info 

3.Docker基础使用命令

启动Docker服务

 systemctl start docker

查看Docker状态 

systemctl status docker

设置Docker开机自启

 systemctl enable docker 

禁用Docker开机自启 

systemctl disable docker

重新启动Docker服务

 systemctl restart docker 

停止Docker服务

systemctl stop docker 

查看Docker信息

docker info 

Docker镜像加速

由于国内网络问题,需要配置加速器来加速。修改配置文件 /etc/docker/daemon.json

下面命令直接生成文件 daemon.json

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

4.Docker镜像操作

下载镜像:

docker pull hello-world  

查看所有镜像文件

docker images 

查看镜像详情

docker inspect hello-world 

导出镜像(镜像导出(linux系统中的镜像文件下载到本地-例如window),导出后给他人使用

docker save  hello-world | gzip > hello-world.tar.gz   

删除镜像文件

docker image rm hello-world 

导入镜像文件操作(要在hello-world.tar.gz 文件所在目录下执行):

docker load < hello-world.tar.gz   

基于镜像,启动运行

docker run hello-world 

5.Docker容器操作命令

下载镜像(centOS7):

 docker pull centos:7

创建并启动容器:

其中:
1)xxxx - 镜像名, 或 image id 的前几位,
2)-it 这是两个参数(-i表示交互式操作, -t 表示终端)
3) bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)。

案例:通过docker启动运行 centos7镜像

 docker run -it centos:7 bash

查看Docker中的所有容器

所有运行的容器

docker ps 

所有的容器

docker ps -a 

查看容器日志信息

docker container logs 802 

 停止和重启容器

docker container stop 802

docker container restart 802 

进入指定容器 

docker exec -it 802 bash 

退出容器

exit 

删除容器

普通删除停止的容器

docker container rm 802   

强制删除容器

docker container rm -f 802

清除所有终止容器

docker container prune 

6.数据管理命令(数据卷/挂载主机目录)

数据卷的操作

 创建数据卷

docker volume create container-vol

查看所有数据卷

docker volume ls 

查看指定数据卷信息

docker volume inspect container-vol 

[
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/container-vol/_data",
        "Name": "container-vol",
        "Options": {},
        "Scope": "local"
    }
]

启动挂载数据卷的容器

-v container-vol:/root 把数据卷 container-vol 挂载到容器的 /root 目录

格式:docker run -it -v 数据卷名:容器目录 镜像名 bash

docker run -it -v container-vol:/root centos:7 bash 

删除数据卷(如果数据卷被容器使用则无法删除)

docker volume rm container-vol 

 挂载主机目录操作

启动挂载主机目录

docker run -it -v /usr/app:/opt/app centos:7 bash

7.1Dockerfeil及镜像制作(制作基于centOS:7的系统+jdk8)

Dockerfile文件

分步骤1:

现在,以centos7为基础,构建oracle jdk8的镜像,首先通过vim打开Dockerfile,这个文件不存在会自动创建。然后进入编辑模式(按i字母),在编辑模式下可以拷贝如下语句(自己手动写也可以,但确保写的单词正确,大小写,空格)。
第一步:编写FROM语句(关键字一定要大写,例如FROM不能写小写)

FROM centos:7 

分步骤2:

通过ADD命令将宿主机中的压缩包传入镜像容器中的指定目录,并同时解压缩

ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker 

分步骤3:

设置环境变量(通过ENV关键字实现,目录启动容器中的目录)

 ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
    PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH

分步骤4:

指定命令行操作(所有指令与后面内容要有空格)

CMD [‘bash’] 

完整示例如下:(注意关键字与后面内容之间的空格,可以将如下完成示例拷贝Dockerfile文件,但是一定要注意你的jdk名字是什么)

 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']

使用 Dockerfile 构建镜像(在Dockerfile所在目录执行docker指令)

docker build -t jdk:8 .  #不要丢掉这里的点,-t表示镜像标识(镜像名),是tag单词的缩写. 

在这里插入图片描述 注意末尾的点,表示构建过程中从当前目录寻找文件,jdk:8为我们创建的镜像名.

运行镜像文件

docker run -it jdk:8 bash

 进入容器以后,可以通过echo $PATH查看环境变量,并可以通过java –version查看JDK版本信息。在这里插入图片描述

如何通过此镜像运行一个web服务,例如sentinel

第一步:将sentinel拷贝宿主机指定目录,例如/root/servers目录(servers目录不存在可以自己创建)。

在这里插入图片描述

第二步:启动镜像容器,通过java执行运行web服务

基于jdk:8镜像启动运行sentinel服务(服务启动后可在宿主机通过localhost:8180进行访问)

docker run -d  -p 8180:8080 --name sentinel  \
-v /root/servers:/usr/sca  \ 
jdk:8 java -jar /usr/sca/sentinel-dashboard-1.8.0.jar

第三步:打开浏览器,访问sentinel服务.
访问时你的ip地址应该为宿主机的ip地址,端口号为宿主机的端口号.例如

在这里插入图片描述

7.2制作Sentinel镜像(练习)

第一步:定义Dockerfile文件,同时将jdk,sentinel也要和这个文件放在同一个目录

FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz  /usr/local/
ADD sentinel-dashboard-1.8.0.jar  /usr/local/
ENV JAVA_HOME=/usr/local/jdk1.8.0_51 \
    PATH=/usr/local/jdk1.8.0_51/bin:$PATH
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/local/sentinel-dashboard-1.8.0.jar"]

第二步:使用 Dockerfile 构建镜像(在Dockerfile所在目录执行docker指令)

docker build -t  sentinel:8 .  #不要丢掉这里的点 

第三步:运行sentinel容器

docker run -d -p 8180:8080 sentinel:8 

假如我们要做目录的挂载,保存容器中日志,可参考如下方式

docker run -d -p 8180:8080 --name sentinel  \
-v /usr/local/docker/sentinel/logs:/root/logs/csp sentinel:8 

8.安装sql数据库

第一步:拉取指定版本mysql

 docker pull mysql:8.0.23 

 第二步:检查mysql镜像

 docker images

第三步:启动运行mysql镜像 (docker run 用于启动一个容器)

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

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

登陆mysql服务

第一步:进入容器 (退出容器用exit)

sudo docker exec -it mysql bash 

第二步:登陆(默认密码root),一定要先进入mysql容器。

mysql -uroot -proot 

停止和启动mysql服务

停止mysql服务(可选)

docker stop mysql 

启动mysql服务

docker start mysql  

假如希望查看mysql启动时的日志,可以执行 docker container logs mysql 这个指令。

设置mysql开机自启动(可选)

docker update mysql --restart=always 

安装Redis数据库

第一步:下载镜像文件

docker pull redis 

第二步:准备配置文件(配置文件不是录入所以需要先创建在挂载) 

创建redis配置文件目录

mkdir -p /usr/local/docker/redis01/conf

在配置文件录下创建redis.conf配置文件(这个文件一定要创建,否在我们进行目录挂载时默认生成的是一个目录)

touch /usr/local/docker/redis01/conf/redis.conf 

 第三步:创建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  

第四步:查看正在运行的进程

docker ps 

访问redis服务器

第一步:控制台直接连接redis测试

docker exec -it redis01 bash 

第二步:检测redis 版本

redis-server  -v 

或者

redis-cli -v 

第三步:登录redis(默认不需要密码)

redis-cli 

或者直接将上面的两个步骤合为一个步骤执行也可以,指令如下:

docker exec -it redis01 redis-cli 

停止和启动redis服务

停止redis服务?

docker stop redis01 

启动redis服务?

docker start redis01 

重启 redis 服务?

docker restart redis01 

安装Nginx

第一步:拉取ngnix镜像 (从这里hub.docker.com去查找)

docker pull nginx 

 第二步:查看images镜像

docker images

第三步:创建数据卷(这个对象会在宿主机直接创建一个目录)

docker volume create nginx-vol 

说明:查看数据卷对应的宿主机目录,可以通过如下指令:

docker inspect nginx-vol 

第四步:启动nginx服务

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

其中:/etc/nginx 为nginx容器启动时,nginx镜像文件默认的解压目录

说明:假如以后想修改nginx配置,可以直接去nginx-vol数据卷对应的目录去修改.

访问nginx服务

进行访问检测,如图所示:

在这里插入图片描述

停止和nginx服务

停止nginx服务

docker stop nginx 

启动nginx服务

docker start nginx 

重启nginx服务

docker restart nginx 

安装Nacos组件

第一步:拉取nacos(hub.docker.com)

docker pull nacos/nacos-server:1.4.1 

第二步: mysql中执行nacos的sql脚本文件

1)将此文件nacos-mysql.sql(这个文件可从code服务器下载)拷贝到mysql容器的宿主机对应的挂载目录(可通过docker inspect mysql查看你mysql的挂载目录)

2)在linux环境下启动并登录mysql

进入mysql容器(前提是mysql已启动)

docker exec -it mysql bash

mysql -uroot -p 

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 container logs nacos 

访问nacos服务

启动nacos,然后在windows中输入http://ip:port/nacos方式进行访问测试

在这里插入图片描述 

停止和启动nacos服务

同nginx服务命令

Docker 容器互联实践

初始化网络

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

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

查看网络信息

docker network ls 

查看网络信息

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

实现容器互联

创建容器

打开终端,基于centos:7这个镜像启动容器,并加入到t-net这个网络

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

新开终端执行,基于centos:7这个镜像再启动容器,同时也加入到t-net网络

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

测试网络互通

ping app1 

ping app2 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值