How to build Docker images

Sep 22, 2020


拉取 ubuntu 16.04 镜像

docker pull ubuntu:16.04

镜像搜索

docker search ubuntu

搜索特定的镜像,然后根据搜索结果拉取镜像

docker search puppet
docker pull puppet/puppetserver  

登录docker hub

docker login

查看认证信息

cat ~/.docker/config.json 

{
“auths”: {
“https://index.docker.io/v1/”: {
“auth”: “bGJieHN4bHo6bGJieHN4bHpAMTk4OA==”
}
},
“HttpHeaders”: {
“User-Agent”: “Docker-Client/19.03.12 (linux)”
}
}

提交docker镜像,创建镜像

docker commit -m "ubuntu with vim" -a "lbbxsxlz" c63f528d0732 lbbxsxlz/ubuntu-vim

查看提交的镜像信息

docker inspect lbbxsxlz/ubuntu-vim:latest

从提交的镜像运行新的容器

docker run -i -t lbbxsxlz/ubuntu-vim /bin/bash

使用docker file构建镜像

e.p. Dockerfile内容详见此处here

docker build -t "lbbxsxlz/ubuntu_16.04" . 
docker build -t "lbbxsxlz/ubuntu_16.04" git@github.com:lbbxsxlz/Docker-Practic

上文的github仓库路径和”.” 路径下里必须包含Dockerfile,不然会报错

从新构建的镜像运行容器

docker run -d -p 80 --name ubuntu_16.04_nginx lbbxsxlz/ubuntu_16.04 nginx -g "daemon off;"
docker run -d -p 127.0.0.1:32768:80 --name ubuntu_16.04_nginx lbbxsxlz/ubuntu_16.04 nginx -g "daemon off;"
docker run -d -p 127.0.0.1::80 --name ubuntu_16.04_nginx lbbxsxlz/ubuntu_16.04 nginx -g "daemon off;"
docker run -d -P --name ubuntu_16.04_nginx lbbxsxlz/ubuntu_16.04 nginx -g "daemon off;"

-P选项表示 对外公开在Dockerfile中通过EXPOSE指令公开的端口

查看容器与宿主机端口

docker ps -l

docker port 0650f4608e88
docker port `docker ps -l -q`

访问容器web服务

curl 127.0.0.1:32768

推送镜像到 docker Hub

docker push lbbxsxlz/ubuntu_16.04

删除镜像

docker rmi lbbxsxlz/ubuntu_16.04_nginx 

构建自己的registry

docker run -p 5000:5000 registry:2

给镜像打tag

docker tag 4e2eef94cd6b lbbxsxlz-XPS-8930:5000/lbbxsxlz/ubuntu_20.04

推送镜像到新的registry

docker push lbbxsxlz-XPS-8930:5000/lbbxsxlz/ubuntu_20.04

从新的registry里的镜像启动容器

docker run -t -i lbbxsxlz-XPS-8930:5000/lbbxsxlz/ubuntu_20.04 /bin/bash