前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS使用Docker搭建开发环境

CentOS使用Docker搭建开发环境

作者头像
4O4
发布2022-04-25 17:20:21
5980
发布2022-04-25 17:20:21
举报
文章被收录于专栏:404404

CentOS使用Docker搭建开发环境

写在前面

Docker 有什么优势?

一些 docker 命令

常用 docker 指令

安装 Docker CE

查看环境

代码语言:javascript
复制
cat /etc/redhat-release 
// CentOS Linux release 7.6.1810 (Core)

安装所需软件包

代码语言:javascript
复制
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

设置稳定的存储库

代码语言:javascript
复制
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装 docker CE

代码语言:javascript
复制
$ sudo yum install docker-ce docker-ce-cli containerd.io

启动 docker

代码语言:javascript
复制
// 启动 docker 服务
$ sudo systemctl start docker
or
$ sudo systemctl start docker.service

// 设置docker 自启动
$ sudo systemctl enable docker.service

// 关闭 docker 服务
$ sudo systemctl stop docker.service

// 查看 docker 服务状态
$ sudo systemctl status docker.service

运行 hello world

代码语言:javascript
复制
$ sudo docker run hello-world

docker 常用指令

代码语言:javascript
复制
-i:容器的标准输入保持打开
-t:让docker分配一个伪终端并绑定到容器的标准输入上
-p : 端口映射 格式为[主机端口:容器端口]
-d : 后台模式运行
-name : 给容器的起一个名字
-v:挂载主机的目录


#删除指定名称镜像
docker rmi hello-world

#删除所有镜像
docker rmi -f $(docker images)

创建docker网络

代码语言:javascript
复制
// 不指定网络驱动时默认创建的bridge网络
docker network create default_network

// 查看网络内部信息
docker network inspect default_network

// 列所有列表的网络
docker network  ls

// 移除指定的网络
docker network rm default_network

安装 MongoDB

从 docker hub 下载 mongodb 官方镜像

代码语言:javascript
复制
docker pull mongo

创建 mongodb 容器

代码语言:javascript
复制
docker run --name  my-mongo  -p 27017:27017  -d mongo --auth
// 如果加需要验证就加--auth,不需要验证,就去掉。默认mongodb是不使用用户认证

查看 mongo 的容器 id

代码语言:javascript
复制
docker ps -a

进入容器设置用户

代码语言:javascript
复制
// 逐行执行
docker exec -it 容器id /bin/bash
mongo
use admin
db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})   
exit

创建成功,后续操作都需要用户认证

代码语言:javascript
复制
Successfully added user: {
  "user" : "root",
  "roles" : [
    {
      "role" : "root",
      "db" : "admin"
    }
  ]
}

测试 mongo

代码语言:javascript
复制
mongo  宿主机ip/admin  -utest -p

指定 mongodb 配置文件

代码语言:javascript
复制
docker run --name some-mongo -d mongo --configsvr

使用 navicat 连接数据库

安装 NodeJS

启动 docker 服务

代码语言:javascript
复制
systemctl start docker

拉取 node 镜像

代码语言:javascript
复制
docker pull node

确认下 node 是否拉取成功

代码语言:javascript
复制
docker images

OK

启动镜像

代码语言:javascript
复制
docker run -i -t node /bin/bash

将 docker 的 3000 端口映射到 tcp 的 3000 并分配给 node

代码语言:javascript
复制
docker run --name node-app -idt -p 3000:3000 node /bin/bash

映射本地目录到 docker

代码语言:javascript
复制
docker run -it -p 3000:3000 -v /home/unishop:/home/unishop --privileged=true node /bin/bash

docker run -it -d -p 3000:3000 -p 3001:3001 -v /home/code:/home/code --privileged=true --name node node /bin/bash

docker run --name node --network main-net -it -d -p 3000:4000 -v /home/node:/home/node --privileged=true node /bin/bash

查看 node 版本号

代码语言:javascript
复制
node -v
// v12.11.1

安装 pm2

代码语言:javascript
复制
npm i pm2 -g
// + pm2@4.0.0

安装 Nginx

查找 nginx 镜像

代码语言:javascript
复制
docker search nginx

拉取官方镜像

代码语言:javascript
复制
$ docker pull nginx

nginx 常用指令

代码语言:javascript
复制
// 启动 nginx 容器
docker run -d --name nginx nginx
// 查看 nginx 实例进程
docker top nginx
// 进入 nginx 容器
docker exec -it nginx bash
// 杀死 nginx 容器实例
docker kill -s KILL
// 重启 nginx 容器实例
docker restart nginx
// 移除 nginx 容器实例
docker rm -f -v 容器id

基于 docker run -d --name nginx nginx 方法启动 nginx 后,docker 容器并没有对外暴露访问 nginx 的端口,即无法通过当前主机外部浏览器器访问 nginx。使用如下命令来指定 docker 容器中 nginx 实例对外开放的端口

代码语言:javascript
复制
docker run --name nginx -d -p 80:80 nginx

第一个80端口是对外开放的端口,第二个80端口指对外开放的端口映射到容器里的端口号

然而报错

代码语言:javascript
复制
docker: Error response from daemon: Conflict. The container name "/nginx" is already in use by container "22e8e4970c9e1567b4c5d9070eb83ec81f1cd3c9b7bb274979ed47ccd1903a51". You have to remove (or rename) that container to be able to reuse that name.

需要移除 nginx 并重新创建

代码语言:javascript
复制
docker rm -f -v 容器id
// 22e8e4970c9e
docker run --name nginx -d -p 80:80 nginx
// e72059387cdcf2d6deb740ecb4ee467120322fd29bcc26b9c3c2b339b54d5b57

测试 nginx

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CentOS使用Docker搭建开发环境
    • 写在前面
      • 安装 Docker CE
        • 创建docker网络
          • 安装 MongoDB
            • 安装 NodeJS
              • 安装 Nginx
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档