文章目录
- Linux中安装docker
- 防火墙端口配置
- web项目需要的环境
- 安装yarn
- 安装nodejs
- 安装脚手架并准备项目
- 构建镜像
- 启动镜像
- 查看日志
- 管理镜像
- 推送镜像
- 发布项目
- 准备服务器环境
- 部署项目:
- PS:扩展一点小知识
这篇文章只是docker入门的第一个Docker项目,简单介绍一下大概流程,这一篇理解之后,接下来就是“趁热打铁,Docker实战”。
Linux中安装docker
这里就介绍Linux中的安装,以CentOS7为例,Windows、Mac、Ubuntu等系统,大同小异,自行搜索引擎查询安装。
1、配置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
如果是一个空白的Linux系统,可能直接运行会出现报错。
例如:指定docker源报错
-bash: yum-config-manager: command not found
这个是因为系统默认没有安装这个命令,这个命令在 yum-utils 包里,可以通过命令 yum -y install yum-utils
安装就可以了
如果需要使用到这个命令那么先要安装插件(安装需要的软件包, yum-utils 提供 yum-config-manager
功能,另外两个是 devicemapper 驱动依赖的)
yum install -y docker-ce yum-utils device-mapper-persistent-data lvm2
使用包管理器安装docker也可以的哦
sudo apt-get update sudo apt-get install docker-ce
2、启动docker
systemctl start docker
3、设置系统自启动
systemctl enable docker
4、配置中科大镜像
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
如果要配置多个镜像就用逗号隔开,配置多个地址。
例:
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://1vxxxxxx.mirror.aliyuncs.com"]
阿里云的镜像获取要到阿里云网站获取
路径:
容器镜像服务 -> 镜像工具 -> 镜像加速器
地址:https://cr.console.aliyun.com/cn-chengdu/instances/mirrors
防火墙端口配置
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --reload
当然也可以选择关闭防火墙
web项目需要的环境
安装yarn
yum install wget
sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
安装nodejs
直接从yum中安装nodejs是找不到的,因此采用下面我的方法,可以成功安装。
# 从EPEL存储库安装Node
yum update
sudo yum install epel-release -y
sudo yum install nodejs -y
node --version# 访问npm以管理其Node包。
yum install npm -y
安装脚手架并准备项目
可以是vue、react等,我此处选择的是react
# 全局安装项目脚手架
npm install -g create-react-app
# 查看是否安装成功
create-react-app -v
创建项目(这个过程较慢,耐心等待)
# 执行命令,创建第一个项目
create-react-app my-react-app
cd my-react-app# (可选操作)如果是直接复制的代码,那么要安装一下
# yarn install -g react-scripts
yarn install 或者 npm install# 启动项目
yarn start# 访问
http://localhost:3000# 打包
yarn build
构建镜像
在有dockerfile文件的路径下执行以下命令。
# 将镜像命名为lx-test,最后的 . 表示是基于当前的dockerfile文件
docker build -t lx-test .# 查看自己构建的镜像
docker images | grep lx-test
Dockerfile的文件写法,自行查询,简洁明了。后面也会补充 😆,客官稍等片刻
启动镜像
# 启动并设置端口为8888
docker run -d -p 8888:80 lx-test1# 起个别名
docker run -d -p 8888:80 --name first-project lx-test1# 访问:http://ip:8888
查看日志
docker logs first-project(镜像名称,可以docker ps查看)
# 或者使用容器id
docker logs <container_id># 查看实时日志
docker logs -f first-project
管理镜像
在推送镜像之前,要先获取nginx镜像
docker pull nginx
推送镜像
# 推送镜像
docker push lx-test1
Using default tag: latest
The push refers to repository [docker.io/library/lx-test1]
53b10f4ca8e6: Preparing
...
# 直接推送会遇到如下报错,这是为什么呢??
denied: requested access to the resource is denied
原因是这里有一个限制条件,在构建本地镜像时,则必须在原来的文件前面加上Docker Hub中的username,本例子中使用的是danielllx
原因是要注册自己的账号,并且登录。https://hub.docker.com/
在服务器登录
[root@localhost my-react-app]# docker login
Log in with your Docker ID or email address to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com/ to create one.
You can log in with your password or a Personal Access Token (PAT). Using a limited-scope PAT grants better security and is required for organizations using SSO. Learn more at https://docs.docker.com/go/access-tokens/Username: danielllx
Password: 自己的密码
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
登录成功后才可进行后面的上传,发布。
理解其规则后,再重新构建一个重新进行上传
docker build -t lx-test4 .
可套用的公式其实是:
docker tag 需要上传的镜像[:TAG] [docker-hub自己账号名]/镜像名[:TAG]
查看自己新创建的tag。打包上传
docker push [docker-hub自己账号名]/镜像名[:TAG]
发布项目
准备服务器环境
使用除发布镜像的服务器去测试
连接方式:
- mobaxterm或者xshell工具直接输入IP
- mac使用
ssh root@IP
方式登录
部署项目:
1、要运行docker,就要确保服务器安装了docker,使用docker -v查看
2、获取自己刚刚上传的镜像:docker pull danielllx/lx-test4
3、如果镜像未发生改变,就不会重复拉取
4、运行容器
docker search lx-test4(刚刚发布的镜像名称)
docker run -d -p 8888:80 --name react-docker-demo danielllx/lx-test4
-d
:表示后台运行-p
:表示端口映射--name
:设置别名
5、启动之后进行验证,确定容器是否正常运行
docker ps
6、进行服务器验证:容器运行正常,并不代表部署的服务式正常的
curl -v -i localhost:8888
返回200,说明服务部署就绪,可以正常访问
7、线上验证:ip地址+端口
PS:扩展一点小知识
如果您当初处于公司网络禁止连接外部网络环境的一个状态,那么你安装一些软件或者插件的时候,就需要下载离线的安装包,接下来就是教你怎么下载离线安装包(包含但不限于rpm包)到指定的目录下:
例:
要在虚拟机本地下载 git-core 和 perl-Git 的 RPM 包,你可以使用 yumdownloader 工具来实现。在终端中执行以下命令:
yum install yum-utils # 如果未安装 yum-utils,需先安装该工具
yumdownloader --resolve --destdir=/data/git_rpm2/ git-core perl-Git
多个依赖之间用“空格”隔开
这将会下载 git-core 和 perl-Git 及其依赖项的 RPM 包到 /data/git_rpm2/ 目录下。
接下来提供几个常用的下载的位置
- Jenkins插件下载,下载的都是hpi文件
- 清华大学开源软件镜像站