Docker实践
命令方式
$ docker search nginx
# 拉取镜像
$ docker pull nginx
# 生成容器,并后台运行
$ docker run -p 8080:80 -d nginx
# 列出正在运行的容器
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90f388b543ab nginx "nginx -g 'daemon of…" 6 seconds ago Up 5 seconds 0.0.0.0:8080->80/tcp jolly_raman
# 复制当前目录下的index.html到镜像/usr/share/nginx/html目录下
# 本地主机上访问localhost:8080会看到新的index.html内容
$ docker cp index.html 90f388b543ab://usr/share/nginx/html
# 关闭容器
$ docker stop 90f388b543ab
# 启动容器
$ docker start 90f388b543ab
# 保存修改后的容器为一个新的镜像,名称是nginx-fun-index
$ docker commit -m 'alter index page' 90f388b543ab nginx-fun-index
# 删除container
$ docker rm 90f388b543ab
# 删除image
$ docker rmi nginx
Dockerfile方式
dockerfile-1
$ cd /Users/zhangsheng/docker/d1
$ touch Dockerfile
$ vi Dockerfile
FROM alpine:latest
MAINTAINER zhsheng
CMD echo "hello docker!"
# -t Name and optionally a tag in the 'name:tag' format
$ docker build -t hello_docker:v1 .
$ docker run hello_docker:v1
# 删除也要带上标签名,默认是latest
$ docker rmi hello_docker:v1
dockerfile-2
# 基础镜像
FROM ubuntu
# 作者
MAINTAINER zhsheng
# 执行的命令
RUN apt-get update
RUN apt-get install -y nginx
# 拷贝文件
COPY index.html /var/www/html
# 容器入口
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]
# 暴露的端口
EXPOSE 80
$ docker build -t hello-nginx .
$ docker run -d -p 80:80 hello-nginx
$ curl http://localhost
dockerfile-3
创建/Users/zhangsheng/go/workplace/src/docker_demo/main.go
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, you've requested: %s\n", r.URL.Path)
})
http.ListenAndServe(":8080", nil)
}
创建Dockerfile
FROM golang:alpine
ADD . /go/src/go_demo
RUN go install go_demo
ENTRYPOINT /go/bin/go_demo
EXPOSE 8080
执行命令
$ cd /Users/zhangsheng/go/workplace/src/docker_demo/
$ docker build -t go_demo .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
go_demo latest ba92d5b3bbba 3 seconds ago 317MB
$ docker run --publish 6060:8080 --name go_demo_container --rm go_demo
$ curl http://localhost:6060/hello/go
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b3813fd56db9 go_demo "/bin/sh -c /go/bin/…" 11 minutes ago Up 10 minutes 0.0.0.0:6060->8080/tcp go_demo_container
$ docker exec -it b3813fd56db9 /bin/sh
网友评论