DEV Community

ChengLiang
ChengLiang

Posted on

Docker使用

  • Dockerfile: 用来创建自定义镜像

  • docker-compose.yml: 可整合多个镜像, 常用于在启动容器时配置运行参数,便于命令行操作

以上是常见的文件命名方法, 也可取其他文件名. 例如 abc.yml.

有了镜像就要启动, 启动成容器运行在计算机上. 如果容器需要接管本地流量, 则宿主机作代理, 开启映射端口

docker run -d --name=code-server -p8080:80
Enter fullscreen mode Exit fullscreen mode

运行 code-server

假如我们运行一个 code-server,我们想给一些参数

docker run -d \
  --name=code-server \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -e PASSWORD=password `#optional` \
  -e SUDO_PASSWORD=password `#optional` \
  -e DEFAULT_WORKSPACE=/config/workspace `#optional` \
  -p 8443:8443 \
  -v /path/to/appdata/config:/config \
  --restart unless-stopped \
  lscr.io/linuxserver/code-server:latest
Enter fullscreen mode Exit fullscreen mode

以上代码来自linuxserver/code-server

显然不易维护. 利用 docker-compose 读取 docker-compose.yml 文件并启动容器

docker-compose up -d
Enter fullscreen mode Exit fullscreen mode

默认读取当前文件夹下的 docker-compose.yml, 选项 -d 意为 daemon 使它运行在后台,每次运行容器只需这一个命令和一个配置文件. 例如给出 code-server 的配置文件 docker-compose.yml:

---
version: "2.1"
services:
  code-server:
    image: lscr.io/linuxserver/code-server:latest
    container_name: code-server
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - PASSWORD=password #optional
      - SUDO_PASSWORD=password #optional
      - DEFAULT_WORKSPACE=/config/workspace #optional
    volumes:
      - /path/to/appdata/config:/config
    ports:
      - 8443:8443
    restart: unless-stopped
Enter fullscreen mode Exit fullscreen mode

以上代码来自linuxserver/code-server

修改文件比修改命令更容易

测试

构建镜像

通常在开发完工后会将项目打包成生产环境, 也就是产品.

docker build -t celiae/ceblog:latest .
Enter fullscreen mode Exit fullscreen mode

稍等片刻,可以得到镜像名为"celiae/ceblog",标签名为"latest"的镜像.latest 以为最新版.

启用容器

docker run -p 1024:3000 celiae/ceblog:latest
Enter fullscreen mode Exit fullscreen mode

端口映射, 浏览器输入"localhost:1024",OK

查询

docker ps -a
Enter fullscreen mode Exit fullscreen mode

它会列出正在运行中的容器进程

DockerHub

测试成功后推到 dockerhub

docker push celiae/ceblog:latest
Enter fullscreen mode Exit fullscreen mode

在 dockerhub 登陆账号在仓库(repository)中能看到 celiae/ceblog 的最新版本

获取镜像

docker pull celiae/ceblog:latest
Enter fullscreen mode Exit fullscreen mode

run 的步骤基本一样

服务器上运行镜像

docker run -d -p 1024:3000 celiae/ceblog:latest
Enter fullscreen mode Exit fullscreen mode

-d 运行在 daemon 后台

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay