Docker简单使用总结
admin
2024-01-18 03:27:52

写在前面

最近在部署前后端分离的SpringBoot项目,发现使用Docker技术很方便,特此记录一下Docker常用命令

1、常用网站

Docker docs :https://docs.docker.com/ 官方文档

Docker hub :https://hub.docker.com/ 镜像仓库

Windows 安装Docker ,这里推荐使用WSL2的方式,具体可以参考这篇文章:https://segmentfault.com/a/1190000038911660

Linux安装Docker,这个教程很多,这里提供两个Linux发行版的教程

  • Centos7 :https://cloud.tencent.com/developer/article/1701451 或 https://docs.docker.com/engine/install/centos/
  • Ubuntu :https://cloud.tencent.com/developer/article/1714396 或 https://docs.docker.com/engine/install/ubuntu/

更推荐官方文档

2、Docker常用命令

2.1、Docker服务相关

  1. Docker服务启动

     systemctl start docker
    
  2. 守护进程重启

    sudo systemctl daemon-reload
    
  3. 重启docker服务

    方法1

    systemctl restart docker
    

    方法2

    sudo service docker restart
    
  4. 关闭Docker

    方法1

    service docker stop
    

    方法2

    systemctl stop docker
    

2.2、常用Docker命令

  1. 查看docker版本

    docker version
    
  2. 拉取镜像

    docker pull :
    

    image name 是要填入的镜像名,tag为版本号,tag可以省略,默认最新版,tag可以去官方仓库去查

    例如拉取最新版mysql镜像

    docker pull mysql
    

    拉取指定版本的mysql镜像

    docker pull mysql:8.0.31
    
  3. 查看已拉取的镜像

    docker images
    
  4. 删除镜像

    删除镜像前要先删除依赖此镜像的容器,即使这个容器没有运行,也要删除

    docker rmi 
    
  5. 运行容器

    基础命令如下

    docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
    

    如启动redis

    docker run -itd --name redis-test -p 6379:6379 redis
    

    启动mysql

    docker run --name=mysql-test -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
    

    注意:此处启动redis和mysql数据存储于容器内,也就是说容器删除后数据会丢失,为了避免这个情况,我们可以将数据存储于宿主机

    启动mysql,数据存于宿主机

    docker run --name mysql-test -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
    
  6. 查看正在运行的容器

    docker ps
    

    查看所有容器的详细信息

    docker ps -a
    
  7. 启动容器

    docker start 
    
  8. 停止容器

    停止单个容器

    docker stop 
    

    停止多个容器

    docker stop $(docker ps -a -q)
    
  9. 删除容器

    删除单个容器

    docker rm 
    

    删除多个容器

    docker rm $(docker ps -a -q)
    

3、Dockerfile的编写

因为我们的项目需要成为docker的镜像,所以我们必须先编写Dockerfile文件构建我们的项目镜像然后进行编排,Dockerfile文件可以帮我们进行构建。

FROM openjdk:8
EXPOSE 8080
ADD myproject-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=pro"]

上面几行命令其实很简单,首先依赖jdk8环境,对外暴露8080,然后就是复制myproject-0.0.1-SNAPSHOT.jar到docker容器中并命名为app.jar,最后是执行命令java -jar /app.jar —spring.profiles.active=pro,使用的是我们另外编写的一个线上环境配置(springboot的配置文件)。

4、docker-compose的使用

举个例子:我们需要用到的软件与服务分别有nginx、mysql、redis、还有我们的springboot项目,所以编写如下:

docker-compose.yml

version: "3"
services:
nginx: # 服务名称,用户自定义image: nginx:latest  # 镜像版本ports:- 80:80  # 暴露端口volumes: # 挂载- /root/nginx/html:/usr/share/nginx/html- /root/nginx/nginx.conf:/etc/nginx/nginx.confprivileged: true # 这个必须要,解决nginx的文件调用的权限问题
mysql:image: mysql:5.7.27ports:- 3306:3306environment: # 指定用户root的密码- MYSQL_ROOT_PASSWORD=admin
redis:image: redis:latest
myproject:image: myproject:latestbuild: . # 表示以当前目录下的Dockerfile开始构建镜像ports:- 8081:8081depends_on: # 依赖与mysql、redis,其实可以不填,默认已经表示可以- mysql- redis

写在末尾,本文只是简单总结了Docker的使用,更多详细内容请参考官方文档

参考博客

https://blog.csdn.net/EasternUnbeaten/article/details/80463837

https://www.zhuawaba.com/post/84

相关内容

热门资讯

吸收预备党员主持词 吸收预备党... 吸收预备党员主持词主持人:同志们,今天我们召开支部大会,议题是讨论一下王林同志的入党问题。经过支委会...
贺中秋迎国庆文艺晚会主持词 中... 贺中秋迎国庆文艺晚会主持词(甲)尊敬的各位领导、各位来宾,(乙)亲爱的朋友们,(合)晚上好!(丙)非...
医院院庆晚会串词 医院院庆晚会... 医院院庆晚会串词a:尊敬的各位领导、各位来宾:b:女士们、先生们:合: 大家晚上好!a:今晚,你我相...
社联迎新晚会发言稿 社联迎新晚... 社联迎新晚会发言稿亲爱的各位同学:   大家好!   凉风瑟瑟,在这个美好的晚上,中国计量学院现代科...
最新或2023(历届)公司中秋... 公司中秋晚会主持稿*女:鸡鸣天下生紫瑞,起舞人间沐春晖*女:各位尊贵的来宾*:各位亲爱的伙伴们*男:...