docker容器

时间:2022-10-03 20:55:52
  • 安装docker
uname -r        # 查看centos内核版本
yum -y update # 更新yum源
yum install -y yum-utils device-mapper-persistent-data lvm2 # 设置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 使用阿里云镜像源
mkdir -p /etc/docker # 新建docker文件夹,用于设置阿里云加速
vim daemon.json # 创建并编辑该文件
{ "registry-mirrors": ["https://ubjbax4m.mirror.aliyuncs.com"] } # 复制到该文件并保存
systemctl daemon-reload # 类似激活配置
yum install docker-ce # 安装最新版的docker
systemctl start docker # 启动
systemctl restart docker # 重启
systemctl enable docker # 设置为开机启动
docker version # 查看docker版本号
docker run hello-world # 验证是否安装成功
  • docker无法pull镜像,报错:Error response from daemon: pull access denied for hello-word, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
# 解决方案
查看/etc/sysconfig/network-scripts/ifcfg-enp0s3中是否配置正确,能ping通www.baidu.com
vi daemon.json # 使用自己阿里云容器
systemctl daemon-reload
systemctl restart docker.service
  • 安装Jdk
docker pull java:8      # 拉去镜像
mkdir /home/javarun # 新建共享文件夹,将jar包放到该目录
docker run -d -it --name java -v /home/javarun:/home java:8 # 启动镜像
docker exec -it java /bin/bash # 进入容器
java -version # 查看jdk版本,验证是否启动成功
cd home # 这里是进入jdk容器的home目录
java -jar xxx.jar # 运行jar包
  • 安装Tomcat
docker pull tomcat          # 下载
docker run -d -p 8080:8080 tomcat # 后台启动
# 启动后浏览器访问返回404
解决方案:
firewall-cmd --zone=public --add-port=8080/tcp --permanent # 对外开放8080端口
firewall-cmd --reload # 重启防火墙
docker exec -it 正在运行的容器id /bin/bash # 进入tomcat容器
cp -r webapps.dist/* ./webapps # 将webapps.dist目录下的所有文件复制到webapps路径下
rm -rf webapps.dist # 删除webapps.dist目录
# 此时能通过浏览器访问到tomcat页面了,但tomcat镜像重启后依旧404,需将当前修改后的容器提交为一个新的镜像
ctrl + p + q # 不停止容器的情况下退出
docker commit -a="c03" -m="chnq" 53724a20a48c tomcat10:10.1 # 在容器运行状态下提交自定义的容器
docker run -d -p 8080:8080 tomcat10:10.1 # 之后每次启动自定义的toncat容器,原来的容器不要删除
  • 安装MySQL
docker pull mysql:8.0.27             # 拉取容器
docker run -p 3306:3306 --name mysql -v /home/mydocker/mysql/conf:/etc/mysql/conf.d -v /home/mydocker/mysql/logs:/logs -v /home/mydocker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0 # 初次启动容器
docker exec -it d8b788a65cc1 /bin/bash # 进入容器
mysql -uroot -p # 登录mysql
win10系统中mysql客户端连接mysql容器,mysql容器所在虚拟机开放防火墙端口

docker容器

  • 安装Redis
# 安装镜像
docker pull redis
# 启动镜像,生成容器(使用容器数据卷生成共享文件夹)
docker run -p 6379:6379 -v /home/mydocker/myredis/data:/data -v /home/mydocker/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:latest /usr/local/etc/redis/redis.conf --appendonly yes
# 配置redis容器,因为启动时已经生成了共享文件夹,进入宿主机的/home/mydocker/myredis/conf/redis.conf路径下
vi redis.conf # 新建配置文件,复制配置内容到该配置文件;配置如下内容
# bind 127.0.0.1 ::1
# bind 127.0.0.1 # 注释本地连接
protected-mode no
port 6379 # 设置端口
daemonize yes
requirepass 123456 # 设置密码

# 使用redis-cli连接redis-server:docker exec -it 运行着redis服务容器的ID redis-cli

docker容器

# 查看容器数据卷是否配置成功:启动镜像时使用了容器数据卷;查看共享文件夹的数据,有数据表示配置成功,也说明redis.conf配置成功
cd /home/mydocker/myredis/data # 进入宿主机的该路径下
cat appendonly.aof # 查看数据库内容,有操作数据库的数据则表示配置成功

docker容器

redis客户端连接redis容器:
docker宿主机开放6379端口
下载安装redis客户端RedisDesktopManager

docker容器

docker容器

redis客户端可视化工具:QuickRedis -> https://github.com/quick123official/quick_redis_blog
  • 安装Nginx
docker pull nginx             
# 启动镜像,创建一个实例:
docker run --name my-nginx -p 80:80 -d nginx
# 宿主机创建共享文件夹:
mkdir -p /home/mydocker/mynginx/conf/conf.d
mkdir -p /home/mydocker/mynginx/html
mkdir -p /home/mydocker/mynginx/logs
# 将容器中的配置文件复制到共享文件夹:
docker cp 正在运行的容器id:/etc/nginx/nginx.conf /home/mydocker/mynginx/conf
docker cp 正在运行的容器id:/etc/nginx/conf.d /home/mydocker/mynginx/conf
docker cp 正在运行的容器id:/usr/share/nginx/html /home/mydocker/mynginx
# 拷贝完之后就停止并删除容器
docker stop 容器id
docker rm 容器id
# 重新启动一个新的容器
docker run -p 80:80 --name my-nginx --restart=always -v /home/mydocker/mynginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/mydocker/mynginx/conf/conf.d:/etc/nginx/conf.d -v /home/mydocker/mynginx/html:/usr/share/nginx/html -v /home/mydocker/mynginx/logs:/var/log/nginx -d nginx
# 自定义一个index.html,使用pscp传输到Linux,将该文件复制到/home/mydocker/mynginx/html目录,再次访问就是自定义的页面了
  • 安装Nacos
# 拉取镜像:
docker pull nacos/nacos-server
# 创建共享文件夹:
mkdir -p /home/mydocker/mynacos
# 启动镜像:
docker run --env MODE=standalone --name mynacos -d -p 8848:8848 nacos/nacos-server:版本号
# 查看启动日志:
docker logs -f mynacos
# 测试:开放端口8848,浏览器访问:http://192.168.5.2:8848/nacos/
# 复制容器中的配置文件到共享文件夹
docker cp 正在运行的容器id:/home/nacos/conf /home/mydocker/mynacos/conf # 将容器中conf文件复制到宿主机的conf,宿主机变成conf/conf
docker cp 正在运行的容器id:/home/nacos/conf /home/mydocker/mynacos
docker cp 正在运行的容器id:/home/nacos/logs /home/mydocker/mynacos
# 停止删除当前容器,重新启动镜像生成一个容器,使用容器数据卷:
docker run --env MODE=standalone --name mynacos --restart always -p 8848:8848 -v /home/mydocker/mynacos/conf:/home/nacos/conf -v /home/mydocker/mynacos/logs:/home/nacos/logs -d nacos/nacos-server:版本号

# 如果不想使用nacos自带的数据derby,可启动mysql容器,导入sql脚本;在容器数据卷/home/mydocker/mynacos/conf/application.properties中配置mysql数据库
  • 安装RabbitMQ
# 下载镜像:
docker pull rabbitmq:management
# 启动镜像:
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
# 测试浏览器访问:http://192.168.43.155:15672/ 默认账号密码:guest/guest
# 参考:https://cloud.tencent.com/developer/article/1612598

# 若使用延迟对列需安装rabbitmq_delayed_message_exchange插件
# rabbitmq容器内安装插件
  • 安装Sentinel
# 拉取镜像:
docker pull bladex/sentinel-dashboard
# 启动镜像:
docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard
# 测试浏览器访问:http://192.168.43.150:8858/
# 默认用户名和密码:sentinel
  • 安装Elasticsearch:
参考1:https://zhuanlan.zhihu.com/p/257867352
参考2:https://cloud.tencent.com/developer/article/1661930
# 安装步骤:
docker pull docker.io/elasticsearch:7.1.1 # 拉取镜像
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" 镜像id # 启动镜像
# 浏览器访问:http://192.168.43.150:9200/
docker exec -it es bash ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.1.1/elasticsearch-analysis-ik-7.1.1.zip # 为当前容器安装插件
exit # 安装完成后退出容器
docker restart 容器id # 重启容器
docker pull mobz/elasticsearch-head:5 # 安装elasticsearch-head
docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5 # 启动elasticsearch-head
docker exec -it es /bin/bash # 进入elasticsearch容器
vi config/elasticsearch.yml
# 添加两条配置,保存退出
http.cors.enabled: true
http.cors.allow-origin: "*"
Exit # 退出elasticsearch容器
docker restart 容器id # 重启elasticsearch容器
# 浏览器访问http://192.168.43.150:9100/,输入es的ip,点击连接

docker容器

  • 安装mongoDB:
# 参考1:https://www.runoob.com/docker/docker-install-mongodb.html
docker pull mongo:5.0.3-focal # 拉取镜像
docker run -itd --name mongo -p 27017:27017 mongo:5.0.3-focal --auth # 启动镜像
docker exec -it mongo mongo admin # 创建用户
> db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
> db.auth('admin', '123456') # 连接

# 使用客户端Robo 3T连接mogodb容器

docker容器

docker容器

不用对外开放27017端口
连接成功后,输入命令,点击运行

docker容器

  • 安装禅道
sudo docker pull easysoft/zentao:12.3.3          # 拉取镜像
sudo docker run --name [容器名] -p [主机端口]:80 --network=[网络驱动名] --ip [容器IP] --mac-address [mac地址] -v [主机禅道目录]:/www/zentaopms -v [主机mysql目录]:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=[数据库密码] -d easysoft/zentao:[镜像标签]
mkdir /home/zentao/zentaopms # 新建文件目录
mkdir /home/zentao/mysqldata
sudo docker run --name zentao -p 8183:80 --ip 192.168.43.157 --mac-address 02:42:ac:11:00:00 -v /home/zentao/zentaopms:/www/zentaopms -v /home/zentao/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d easysoft/zentao:12.3.3 # 启动镜像
http://192.168.43.157:8183/ # 浏览器访问禅道
# 设置管理员密码admin:Admin157
# 设置mysql密码root:123456