logo

为了方便部署项目以及版本迭代更新等。在linux上就打算使用docker。以下记录忘了截图,所以没有图片。

1.下载docker

1
2
3
sudo apt update
sudo apt install docker.io
docker version

查看版本信息后,如果一般会说你没有权限操作,这个时候就需要将你使用的这个用户加入到用户组中。

1
2
3
sudo groupadd docker
sudo gpasswd -a ${USER} docker #${USER}是登录的用户名
newgrp - docker

这个时候在docker version就不会说你没有权限了

2.尝试运行镜像

测试下docker是不是能用,先运行一个镜像吧

1
docker run hello-world

如果第一次运行它,他将去docker仓库下载hello-world这个镜像,然后在运行。你就会看到输出hello world docker之类的文字。

3.打包自己的项目

1
yarn run build

打包为一个正常的dist文件夹,这也是常用发布的文件夹。

4.在linux系统安装nginx

1
docker pull nginx

这个时候就是在docker仓库中拉取nginx并且安装

运行nginx

1
docker run -p 80:80 nginx

将80端口映射到80端口,启动nginx

这个时候我们可以输入linux本机的ip地址,可以查看到nginx正常的欢迎页面。那么只需要将打包的dist文件放入nginx的html文件夹中,并且更改nginx的配置即可访问打包好的项目。

5.将dist文件和nginx关联起来

创建3个文件夹,以下创建的文件夹都是在home这个文件夹下面

1
2
3
mkdir html
mkdir conf
mkdir logs

我们将dist的文件放入html文件夹里面,同时在conf文件夹中创建nginx.conf文件,里面是nginx的常用配置,将文件的指向改为/home/html/index.html,不清楚nginx的可以去看看nginx的文档。然后我们运行命令。

1
docker run -d -p 80:80 --name nginx -v /home/orange/html:/usr/share/nginx/html -v /home/orange/conf/nginx.conf:/etc/nginx.conf  -v /home/orange/logs:/var/log/nginx nginx

打开浏览器,输入本机IP地址加上端口80就可以访问了。

6.创建镜像

以上都是在容器运行,事实上还是到打包为镜像,上传到仓库中,用户在仓库中拉取,即可运行。

1
2
docker build -t test:02
镜像名:版本号

不用用docker commit 这个不会将你的项目打包在镜像中。
等一会就会告诉你镜像打包好了。

1
docker images

查看本地镜像是否有打包好的。

7.标记镜像

对于打包好的镜像,需要对其打上标签,方便更新。

1
2
docker tag test:02 orangeed/test:00
容器名称 作者/数据库:标签

8.发布镜像

将本地打包并且标记好的镜像发布到仓库中。

1
docker login

首先需要登录到docker中,没有账号的需要去创建一个。

1
2
docker push orangeed/test:02
作者/ 数据库:标签

将本地的镜像发布到仓库中。这个时候也可以打开docker hub查看刚刚发布的镜像。

9.下载运行镜像

将发布的镜像下载下来运行看是否可以使用。

1
docker run -p 80:80 -it -d orangeed/test:02

在浏览器中输入ip+端口号即可访问。

10.docker常用命令

docker搜索镜像
docker search [镜像名称]

docker下载镜像
docker pull [镜像名称]

docker运行命令
docker run -p 80:80 nginx

docker run -d -p 80:80 –name nginx -v /home/orange/html:/usr/share/nginx/html -v /home/orange/conf/nginx.conf:/etc/nginx.conf -v /home/orange/logs:/var/log/nginx nginx

docker查看镜像
docker images

docker查看运行的镜像
docker ps
docker ps -a

docker停止运行
docker stop [id]

docker删除运行容器
docker rm [id]

docker全部停止容器
docker stop $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

docker全部删除容器
docker rm $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

docker删除本地镜像
docker image rm [id]
docker rmi -f [id] (强制删除)

docker打包镜像
docker build -t test:02
镜像名:版本号

docker commit -a “orangecj.com” -m “test version” testvue nginx:vue
作者 备注 容器名称 标签
-a : 作者
-m: 备注
容器名称
标签

docker标签
docker tag testvue orangeed/test:01
容器名称 作者/数据库:标签

docker发布镜像
docker push orangeed/test:01
作者/ 数据库:标签

docker运行自己的镜像
docker run -p 80:80 -it -d orangeed/test:01