Docker 使用笔记

安装

[Mac安装]

[Windows安装]

[Ubuntu安装]

检查安装

1
$ docker version
1
$ docker info

Hello World

抓取官方 Hello World 案例

Docker Hub查找其他容器

1
$ docker image pull hello-world

检查抓取成功

1
$ docker image ls

运行 Hello World

1
$ docker container run hello-world

Hello World 运行后终止,如要查看所有容器信息

1
2
3
$ docker container ls --all
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
d16220290679        hello-world         "/hello"            22 minutes ago      Exited (0) 22 minutes ago                       cranky_bhaskara

对于一些服务性容器,需要使用kill命令终止程序

1
$docker container kill d16220290679

终止运行的容器文件,依然会占据硬盘空间,使用rm删除

1
$docker container rm d16220290679

制作 Docker 容器

我们用一个简单的 Go 程序做一个 Docker 容器,main.go:

1
2
3
4
5
6
7
package main

import "fmt"

func main () {
	fmt.Println("Hello World")
}

测试运行:

1
2
$ go run main.go
Hello World

创建 Dockerfile 文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# Start from golang image
FROM golang:1.12.7

LABEL maintainer="Hanggi"

# Copy everything from the current directory to the /app inside the container
COPY .. /app

# Set the Current Working Directory to /app inside the container
WORKDIR /app

# Install the packages and build
RUN go build main.go

# Run the executable
CMD ["./main"]

如果有需要可以添加 .dockerignore 来忽略一些不必要的文件,用法与 .gitignore 相同。

运行 image 文件:

1
2
3
$ docker image build -t go-hello-world .
# 或者
$ docker image build -t go-hello-world:0.0.1 .

使用 $ docker image ls 查看创建的 image

1
$ docker container run go-hello-world

如果这是一个服务就需要映射端口和 Shell:

1
$ docker container run -p 8080:3000 -it go-app /bin/bash

参考文献

感谢