Docker 安装使用

一、安装Docker

# 1、更新 yum 包
yum update

# 2、安装需要的软件包,yum-utils 提供yum-config-manager功能
yum install -y yum-utils

# 3、配置使用数据源,
# 默认使用国外源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 推荐用国内源,丝滑!
yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

# 4、安装Docker Engine
yum install docker-ce docker-ce-cli containerd.io

# 5、查看docker版本,验证是否安装成功
docker -v

# 6、配置docker开机自启
systemctl enable docker

# 7、启动docker
systemctl start docker

# 8、重启docker
systemctl restart docker

# 9、停止docker
systemctl stop docker

# 10、查看docker状态
systemctl status docker

        1.1、修改docker存储路径

  • 修改 Docker 的服务配置文件。这个文件通常在 /etc/docker/daemon.json。如果文件不存在,你需要创建它。打开或创建 daemon.json 文件,并添加或修改 data-root 选项:
{
    "data-root": "/new/path/to/docker"
}

二、Docker 镜像

2.1、简介

        Docker 镜像 (Docker Images)是一种轻量级、 可执行的独立软件包,来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

2.2、常用命令

# 1、拉取镜像,:tag 表示版本号,如果不填则默认拉取最新版本的镜像
docker pull 镜像名称:tag

# 2、查询镜像
docker search 镜向名称

# 3、查询排行榜前5的镜像
docker search --limit 5 镜向名称

# 4、查看主机上的所有镜像
docker images

# 5、删除镜像
docker rmi 镜像ID

# 6、查看所有镜像容器所占空间
docker system df

三、Docker 容器

3.1、简介

        容器是打包代码及其所有依赖项的软件的标准单元,因此应用程序可以从一个计算环境快速可靠地运行到另一个计算环境。Docker容器映像是一个轻量级的,独立的,可执行的软件软件包,其中包含运行应用程序所需的一切:代码,运行时,系统工具,系统库和设置。

        镜像在运行时会成为容器,对于Docker容器,镜像会在Docker Engine上运行时成为容器。不论基础架构如何,容器化软件都可用于基于Linux和Windows的应用程序,始终运行相同。容器将软件与其环境隔离开来,并确保尽管开发和登台之间存在差异,但软件仍可以均匀运行。

3.2、常用命令

# 1、列出容器
# 1.1、查看正在运行的容器
docker ps

# 1.2、查看所有的容器
docker ps –a

# 1.3、检索所有包含peer0的容器
docker ps -a | grep peer0

# 2、查看容器日志
docker logs 容器id | tail -20

# 3、杀死容器
# 3.1、杀死某个容器
docker kill 容器ID

# 3.2、杀死所有正在运行的容器
docker kill $(docker ps -a -q)

# 4、删除容器
# 4.1、删除某个容器
docker rm 容器ID

# 4.2、删除所有已经停止的容器
docker rm $(docker ps -a -q)

# 5、重启容器
docker restart 容器ID

# 6、停止容器
docker stop 容器ID

# 7、启动容器
docker start 容器ID

        8、创建容器

docker run [OPTIONS]

        OPTIONS含义:

  • -i:保持容器运行
  • -t:表示容器启动后会进入其命令行。通常于-i一起使用:-it表示创建并运行容器,且运行之后自动进入为当前应用打开一个默认终端
  • --name :为创建的容器命名。
  • -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。
  • -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行,与-t相反。
  • -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口,程序访问是通过宿主机映射端口来访问容器的。可以使用多个-p做多个端口映射。
  • -e:表示添加容器的环境变量。
  • --rm:让容器在退出时,自动清除挂在的卷,以便清除数据。等价于在容器退出后,执行docker rm -v。
# 8.1、交互式的方式创建容器,这样的方式我们直接就进入了容器内部
docker run -it --name=容器名称 镜像名称:标签 /bin/bash

# 8.2、后台式创建容器,这样的方式创建成功之后没有进入容器内部
docker run -id --name=容器名称 镜像名称:标签

# 8.3、目录映射,我们可以在创建容器的时候通过 -v参数,将宿主机的目录文件与容器内的目录文件进行映射,这样我们就可以通过修改宿主机目录文件从而去影响容器。
docker run -id -v /usr/local/dunm.rdb:/data/dunm.rdb --name=myRedis redis:latest

# 8.4、通过镜像文件创建容器,MYSQL_ROOT_PASSWORD参数表示登录MySQL的root用户的密码。
docker run -id --name=docker_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=rootcentos/mysql-57-centos7

# 8.5、配置容器磁盘使用空间大小
docker run -it --storage-opt size=120G fedora /bin/bash
# 9、拷贝容器文件
# 把宿主机的文件拷贝到容器里
docker cp 需要拷贝的文件或目录 容器名称:容器目录
# 从容器中拷贝文件到宿主机
docker cp 容器名称:容器目录 需要拷贝的文件或目录

# 10、查看容器的数据
docker inspect 容器名称(容器ID)

# 11、把容器保存为镜像
docker commit 容器名 保存的镜像名

# 12、容器备份
docker save –o 打包的后的文件名.tar 镜像名

# 13、容器恢复
docker load –i 你的备份镜像tar包

# 14、导出容器
docker export -o export123.tar 容器ID

四、相关环境安装

4.1、Postgresql、postgis

(1)拉取镜像

docker pull kartoza/postgis:10.0-2.4

(2)查看镜像

docker images

(3)运行容器

docker run -id --name psql10-2.4 --restart always -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD='123456' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /home/docker/postgresql:/var/lib/postgresql -v /home/docker/postgresql/tmp/tmp:/tmp/tmp -v /home/docker/postgresql/data:/var/lib/postgresql/data -p 5432:5432 -t kartoza/postgis:10.0-2.4

配置解释:

  • run,创建并运行一个容器;
  • –name,指定创建的容器的名字postgresql ;
  • -e POSTGRES_PASSWORD=123456,设置环境变量,指定数据库的登录口令为123456
  • -e POSTGRES_USER='postgres 设置环境变量,指定数据库用户名为postgres
  • -p 54321:5432,端口映射将容器的5432端口映射到外部机器的54321端口;
  • -d kartoza/postgis:9.6-2.4,允许该容器以守护态(Daemonized)形式运行于后台
  • -e ALLOW_IP_RANGE=0.0.0.0/0,这个表示允许所有ip访问,如果不加,则非本机 ip 访问不了
  • -t 让docker分配一个伪终端(pseudo-tty)并绑定到该容器的标准输入上(这是为了在 交互模式下用户可以通过所创建的终端来输入命令)
  • -v /home/docker/postgresql:/var/lib/postgresql: 将本地目录 /home/docker/postgresql 挂载到容器内的 /var/lib/postgresql 目录,实现数据持久化。

 (4)查看进程

docker ps

4.2、MySQL

 (1)下载镜像

docker pull mysql:5.7

(2)运行镜像

docker run -p 3306:3306 --name mysql --restart=always --privileged=true -v /home/docker/mysql/log:/var/log/ -v /home/docker/mysql/data:/var/lib/mysql -v /home/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD='123456' -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

(3)可能存在的问题

# 执行
docker logs -f mysql
# 报错
# Failed to access directory for --secure-file-priv. Please make sure that dir

# 或者 -执行
docker exec -it mysql /bin/bash
# 报错
Error response from daemon: Container xxx is restarting, wait until the cont。。。

#原因
修改配置,将鉴权方式改为mysql_native_password

# 修改流程
cd /home/docker/mysql/conf
vim my.cnf

# 修改内容
authentication_policy=mysql_native_password

# 重启MySQL
docker restart mysql

(4)设置docker启动时启动mysql

docker update mysql --restart=always

(5)授权远程访问

# 进入容器内部
docker exec -it mysql /bin/bash

# 登录mysql
mysql -u root -p

# 直接回车,不输入密码

# 选择数据库
show databases;
use mysql;

# 产看用户连接情况
select host, user, plugin,  authentication_string, password_expired from user;

# 修改密码认证方式
ALTER USER root@'%' IDENTIFIED WITH mysql_native_password BY '123456QWER';
ALTER USER root@'localhost' IDENTIFIED WITH mysql_native_password BY '123456QWER';
 
# 刷新权限
FLUSH PRIVILEGES;

# 退出
exit

4.3、Mongodb

(1)镜像下载

docker pull mongo:5.0.11

(2)启动Mongodb

docker run -d --name mongodb --restart always -p 27017:27017 -v /home/docker/mongo/logs:/var/log/mongodb -v /home/docker/mongo/data:/data/db -e MONGO_INITDB_ROOT_USERNAME=test -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo:5.0.11

(3)查看容器启动情况

docker ps

         创建数据库及用户参考:docker 部署MongoDB_docker部署mongodb-CSDN博客

(4)简单使用

# 创建使用数据库
use test
# 创建用户 权限读写
db.createUser({ user:"test", pwd:"123456", roles:[{ role: "readWrite", db: "test" }]});

# 进入服务器容器
docker exec -it mongo容器id /bin/bash
# 执行备份(-d指定数据库,db_dump :备份数据库名,-o指定备份到那个目录)
mongodump --host 127.0.0.1 --port 27017 -u=root -p=root123456 -d db_dump -o /data/collection
# 在容器里打包备份文件
tar -zcvf db_dump.tar.gz /data/collection/db_dump 
回到宿主机,把容器里的文件复制出来
docker cp mongo容器id:/data/collection/db_dump.tar.gz /home
# 解压
tar -zxvf /home/db_dump.tar.gz 
# 复制到容器
docker cp /home/db_dump mongo容器id:/data/backup/db_dump
# 进入容器还原数据
mongorestore --host 127.0.0.1 --port 27017 -u admin -p admin123456 -d db_restore --dir /data/backup/admin

# 恢复命令  不用进入docker容器内部
# 拷贝数据到挂载路径下
cp -r /home/mongodump_data/20240426/chn_mapdb /home/docker/mongo/data/back_up/
# 恢复数据
docker exec -it 207def21a01c mongorestore --host 127.0.0.1 --port 27017 -u chn_mapdb -p chn_mapdb1234 -d chn_mapdb --dir /data/db/back_up/chn_mapdb

4.4、Geoserver

(1)拉取geoserver

docker pull kartoza/geoserver:2.18.0

(2)创建geoserver容器

docker run --name geoserver -d -p 8093:8080 -e GEOSERVER_ADMIN_USER=admin -e GEOSERVER_ADMIN_PASSWORD=geoserver -v /home/docker/geoserver/data_dir:/data_dir kartoza/geoserver:2.18.0

# 命令说明
docker run
--name geoserver #容器名称
-d #后台运行容器,并返回容器ID
-p 8093:8080 #容器端口(对外):服务端口 geoserver默认启动的端口是8080
-e GEOSERVER_ADMIN_USER=admin #指定管理用户
-e GEOSERVER_ADMIN_PASSWORD=geoserver #指定管理用户密码
-v /mydata/geoserver/data_dir:/data_dir #数据挂载地址
kartoza/geoserver #镜像名称

(3)设置开机自启

docker update geoserver --restart=always

4.5、Minio

(1)镜像下载

docker pull minio/minio

(2)创建容器

docker run -id --name=minio -p 9000:9000 -p 9001:9001 -v /home/docker/minio/data:/data -v /home/docker/minio/config:/root/.minio -e "MINIO_ACCESS_KEY=minioadmin" -e "MINIO_SECRET_KEY=minioadmin" --restart=always minio/minio server /data --console-address ":9000" -address ":9001"
命令描述
-p 9000:9000 -p 9001:9001这是端口映射,前一个是服务器的端口,后一个是客户端也就是api接口访问的端口地址
–name minio这是给新创建的容器命名的选项,名字是 “minio”
–net=host这是网络设置,表示容器将使用主机的网络栈,这样就不需要在容器内部配置网络
-d --restart=always这是运行容器的其他选项,-d使容器在后台运行,–restart=always表示容器总是会在退出后自动重启
-e “MINIO_ACCESS_KEY=minioadmin”用户名
-e “MINIO_SECRET_KEY=minioadmin”密码
-v /home/docker/minio/data:/data这意味着将宿主机上的 /opt/minio/data 目录挂载到容器内的 /data 目录
-v /home/docker/minio/config:/root/.minio将宿主机上的 /opt/minio/config 目录挂载到容器内的 /root/.minio 目录
minio/minio server /data --console-address “:9001” -address “:9000”这是容器内要运行的命令,启动一个名为 “minio” 的服务器,数据存储在 /data 目录下,服务器的控制台地址为 “:9090”,服务地址为 “:9000”

(3)查看容器启动情况

docker ps

4.6、Redis

(1)镜像下载

docker pull redis:5.0.14

(2)配置文件

# 创建redis文件目录
mkdir -p /home/docker/redis/data /home/docker/redis/conf /home/docker/redis/log

# 创建日志文件
cd /home/docker/redis/log
touch redis.log

# 查看log文件详细信息
ll
# 修改日志文件权限为可读写
chmod 777 redis.log

# 创建配置文件,或上传配置文件
cd /home/docker/redis/conf
# touch redis.conf

配置文件修改内容如下: 

# 访问限制
bind 0.0.0.0

# 后台运行
daemonize yes

# 允许远程访问
protected-mode no

# 访问密码
requirepass 123456

# 容器内日志位置
logfile "/var/log/redis.log"

(3)创建容器(日志挂载失败)

docker run --name redis-5.0.14 --restart always -p 6379:6379 -v /home/docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /home/docker/redis/data/:/data -v /home/docker/redis/log/redis.log:/var/log/redis.log -id redis:5.0.14

(4)验证安装成功

  4.7、RabbitMQ

(1)查看仓库里的RabbitMQ

docker search rabbitmq

(2)镜像下载

docker pull rabbitmq

(3)启动RabbitMQ

docker run -d --hostname my-rabbit --name rabbit --restart always -p 15672:15672 -p 5672:5672 rabbitmq

 (4)插件安装

# 先执行docker ps 拿到当前的镜像ID
docker ps

# 进入容器
docker exec -it 镜像ID /bin/bash

# 安装插件
rabbitmq-plugins enable rabbitmq_management

# 退出当前容器
ctrl+p+q

4.8、Nginx

(1)下载镜像

docker pull nginx:1.24.0

(2)首次运行镜像

docker run -p 80:80 -d --name nginx nginx:1.24.0

(3)创建挂载路径及拷贝文件

# 创建容器挂载路径
mkdir -p /home/docker/nginx/{conf,conf.d,logs}

# 复制配置文件到挂载路径
docker cp 0da178e294b8:/etc/nginx/nginx.conf /home/docker/nginx/conf/
docker cp 0da178e294b8:/etc/nginx/conf.d/default.conf /home/docker/nginx/conf.d/
docker cp 0da178e294b8:/usr/share/nginx/html /home/docker/nginx

# 关闭容器
docker stop nginx

# 删除容易
docker rm nginx

(4)重现挂载

docker run -d -p 9000:80 --name nginx -v /home/docker/nginx/html:/usr/share/nginx/html -v /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/docker/nginx/logs:/var/log/nginx --privileged=true nginx:1.24.0

4.9、Nacos

(1)拉取镜像

docker pull nacos/nacos-server:v2.1.2

(2)首次安装

docker run -p 8848:8848 --env MODE=standalone --name nacos -d nacos/nacos-server:v2.1.2 

(3)拷贝数据文件

mkdir -p /home/docker/nacos

docker cp ebaf3f1cf7b3:/home/nacos/conf /home/docker/nacos
docker cp ebaf3f1cf7b3:/home/nacos/logs /home/docker/nacos
docker cp ebaf3f1cf7b3:/home/nacos/data /home/docker/nacos

(4)修改配置文件

(5)重新启动nacos

# 命令行界面运行
docker run  --name nacos -p 8848:8848 --env MODE=standalone -v /home/docker/nacos/logs/:/home/nacos/logs -v /home/docker/nacos/data/:/home/nacos/data -v /home/docker/nacos/conf/:/home/nacos/conf/ --restart=always nacos/nacos-server:v2.1.2

# 后台运行
docker run --name nacos -p 8848:8848 --env MODE=standalone -v /home/docker/nacos/logs/:/home/nacos/logs -v /home/docker/nacos/data/:/home/nacos/data -v /home/docker/nacos/conf/:/home/nacos/conf/ --restart=always -d nacos/nacos-server:v2.1.2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值