查看镜像列表
$ docker images
如何获取镜像
从远程仓库拉取
$ docker pull nginx:alpine
$ docker images
使用tag命令
$ docker tag nginx:alpine 192.168.80.5:5000/nginx:alpine
$ docker images
本地构建
$ docker build . -t my-nginx:ubuntu -f Dockerfile
如何通过镜像启动容器
$ docker run --name my-nginx-alpine -d nginx:alpine
如何知道容器内部运行了什么程序?
#进入容器内部,分配一个tty终端
$ docker exec -ti my-nginx-alpine /bin/sh
#ps aux
##docker怎么知道容器启动后该执行什么命令?
通过docker build来模拟构建一个nginx的镜像,
1)创建Dockerfile
#告诉docker使用哪个基础镜像作为模板,后续命令都以这个镜像为基础
FROM ubuntu
#RUN命令会在上面指定的镜像里执行命令
RUN apt-get update && apt install -y nginx
#告诉docker,启动容器时执行如下命令
CMD ["/usr/sbin/nginx", “-g”,“daemon off;”]
构建本地镜像
$ docker build . -t my-nginx:ubuntu -f Dockerfile
2)使用新镜像启动容器
$ docker run --name my-nginx-ubuntu -d my-nginx:ubuntu
3)进入容器查看进程
$ docker exec -ti my-nginx-ubuntu /bin/sh
ps aux
如何访问容器内服务
#进入容器内部
$ docker exec -ti my-nginx-alpine /bin/sh
#ps aux|grep nginx
#curl localhost:80
宿主机中如何访问容器服务
#删掉旧服务,重新启动
$ docker rm -f my-nginx-alpine
$ docker run --name my-nginx-alpine -d -p 8080:80 nginx:alpine
$ curl 192.168.80.5:8080
docker client如何与daemon通信
/var/run/docker.sock
$ docker run --name portainer -d -p 9001:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portain
导出镜像到文件中
$ docker save -o nginx-alpine.tar nginx:alpine
从文件中加载镜像
$ docker load -i nginx-alpine.tar
##使用docker镜像启动镜像仓库服务
$ docker run -d -p 5000:5000 --restart always --name registry registry:2 #默认仓库不带认证
推送本地镜像到镜像仓库中
$ docker tag nginx:alpine localhost:5000/nginx:alpine
$ docker push localhost:5000/nginx:alpine
查看仓库内元数据
$ curl -X GET http://192.168.80.5:5000/v2/_catalog
$ curl -X GET http://192.168.80.5:5000/v2/nginx/tags/list
##镜像仓库给外部访问,不能通过localhost,尝试使用内网地址192.168.80.5:5000/nginx:alpine
$ docker tag nginx:alpine 192.168.80.5:5000/nginx:alpine
$ docker push 192.168.80.5:5000/nginx:alpine
##docker默认不允许向http的仓库地址推送
##我们没有可信证书机构颁发的证书和域名,自签名证书需要在每个节点中拷贝证书文件,比较麻烦,因此我们通过配置daemon的方式,来跳过证书的验证:
$ cat /etc/docker/daemon.json
{
“registry-mirrors”: [
“https://8xpk5wnt.mirror.aliyuncs.com”
],
“insecure-registries”: [
“192.168.80.5:5000”
]
}
$ systemctl restart docker
$ docker push 192.168.80.5:5000/nginx:alpine
$ docker images