Docker简单使用总结

写在前面

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

1、常用网站

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

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

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

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

更推荐官方文档

推荐一些快速入门的视频

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>
    

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

    例如拉取最新版mysql镜像

    docker pull mysql
    

    拉取指定版本的mysql镜像

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

    docker images
    
  4. 删除镜像

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

    docker rmi <image name or image id>
    
  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  -p 3306:3306 -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 <container name>
    
  8. 停止容器

    停止单个容器

    docker stop <container name>
    

    停止多个容器

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

    删除单个容器

    docker rm <container name>
    

    删除多个容器

    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.conf
  privileged: true # 这个必须要,解决nginx的文件调用的权限问题
mysql:
  image: mysql:5.7.27
  ports:
  - 3306:3306
  environment: # 指定用户root的密码
    - MYSQL_ROOT_PASSWORD=admin
redis:
  image: redis:latest
myproject:
  image: myproject:latest
  build: . # 表示以当前目录下的Dockerfile开始构建镜像
  ports:
  - 8081:8081
  depends_on: # 依赖与mysql、redis,其实可以不填,默认已经表示可以
    - mysql
    - redis

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

参考博客

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

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

posted @ 2022-11-26 09:29  Sunny不要停  阅读(32)  评论(0编辑  收藏  举报