docker简单入门经验
一.软件安装
-
docker-desktop(可以理解成docker的windows操作系统下的桌面程序)官方下载地址
https://docs.docker.com/docker-for-windows/install
-
docker-desktop安装,运行后,一直下一步可以了
-
插件wsl2下载安装
因为docker运行环境是Linux的,windows操作系统下要运行,就需要安装wsl2(Windows Subsystem for Linux 2),2是第二个版本的意思。
wsl2下载,直接百度就有了,它是个msi文件
wsl安装也是一直下一步就OK了 -
安装完成
安装完成后,需要重启电脑的。
重启电脑后,就可以通过cmd命令或打开桌面程序,查看docker是否安装成功了
docker -v
二.使用docker
一些基本概念
建议查看知乎的这篇文章
https://zhuanlan.zhihu.com/p/282033860
部分摘取:
Client(客户端):是Docker的用户端,可以接受用户命令和配置标识,并与Docker daemon通信。
Images(镜像):是一个只读模板,含创建Docker容器的说明,它与操作系统的安装光盘有点像。
Containers(容器):镜像的运行实例,镜像与容器的关系类比面向对象中的类和对象。
Registry(仓库):是一个集中存储与分发镜像的服务。最常用的Registry是官方的Docker Hub 。
常用命令
镜像命令
# 搜索镜像:docker search [OPTIONS] TERM
docker search mysql
#下载镜像:docker pull [OPTIONS] NAME[:TAG]
docker pull mysql #下载最新版本的mysql镜像
docker pull mysql:5.7 #下载5.7版本的mysql镜像
#查看所有镜像:docker images [OPTIONS] [REPOSITORY[:TAG]]
docker images
#运行镜像,生成容器
#–name:容器名,此处命名为mysql
#-e:配置信息,此处配置mysql的root用户的登陆密码
#-p:端口映射,此处映射 主机3306端口 到 容器的3306端口
#-d:后台运行容器,保证在退出终端后容器继续运行
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
#删除镜像:docker rmi [OPTIONS] IMAGE [IMAGE...]
docker rmi mysql:5.7
#构建镜像:docker build [OPTIONS] PATH
#提前在cmd中打开对应文件夹路径(见相关图例-图1、图2、图3),然后再执行命令
#后面有个点,代表当前目录下dockerfile文件,不可缺少
docker build -t javaoaui .
#上传镜像:docker push [OPTIONS] NAME[:TAG]
#上传前,一般都要重新给镜像添加镜像标签,标签名字需要符合docker上传命名要求
#增加镜像标签:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
#上传完镜像之后(见相关图例-图4),别人就可以直接docker pull linfende/javaoaui:0805 获取我们的镜像使用了
docker tag javaoaui:latest linfende/javaoaui:0805
docker push linfende/javaoaui:0805
docker pull linfende/javaoaui:0805
#镜像导出:docker save [options] image [image……]
#使用镜像导出导入,可以直接生成文件,拉给别人,直接在别人的docker中run起来
docker save linfende/javaoaui:0805 >D:\javaoaui0805.tar
#镜像导入
docker load -i d:\javaoaui0805.tar
#提交镜像:docker commit [OPTIONS] CONTAINER NAME[:TAG]
#运行镜像,生成容器 docker run -d --name [容器名字] -p [外部映射端口]:[容器内部端口] [镜像名字]
#运行容器后,可直接访问 http://localhost:9998,(见相关图例-图5)
docker run -d --name JavaOAUI0805 -p 9998:80 linfende/javaoaui:0805
容器命令
#查看容器运行情况
docker container ls #正在运行的容器
docker container ls -a #所有容器
#停止docker stop 容器id
docker stop 07bd45b6aa55
#启动docker start 容器id
docker start 07bd45b6aa55
#重启docker restart 容器id
docker restart 07bd45b6aa55
相关图例
图1:构建JavaOAUI镜像截图
图1.1:构建JavaOAService镜像截图
图2:JavaOAUI站点的nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
#这里也稍微进行了修改,表示前端部署到容器中的端口,在docker部署时端口对应这里即可。
listen 80;
server_name localhost;
location /proxy {
root /usr/share/nginx/html/; #这一行进行了修改,表示资源地址
proxy_pass http://localhost:7999; #这一行进行了修改【下文:proxy_pass的详述】
rewrite "^/proxy/(.*)$" /$1 break;
}
location / {
root /usr/share/nginx/html/;
try_files $uri $uri/ /html/index.html last;
index index.html index.htm;
}
}
}
图3:JavaOAUI站点的dockerfile
#从docker官网拉取标准的nginx镜像,我们需要基于标准的nginx镜像制作自己的镜像
FROM nginx
#拷贝当前目录的文件到指定文件夹下,改文件夹为镜像中的文件夹
COPY ./dist /usr/share/nginx/html
#拷贝nginx.conf文件到镜像下,替换掉原有的nginx.conf
COPY ./nginx.conf /etc/nginx/nginx.conf
#输出完成标志
RUN echo 'build img ok!'
图3.1 JavaOAService服务的dockerfile
#从docker官方拉取java8的镜像
FROM java:8
#将jar包添加到容器中并更名为app.jar
ADD yiu-oa-1.0-SNAPSHOT.jar app.jar
#缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/.urandom","-jar","/app.jar"]
图4:上传完镜像后仓库截图
图5:登录
http://localhost:9998
参考资料
1.win10环境docker部署mysql、vue项目和springboot项目
https://blog.csdn.net/lw_2352/article/details/115431575