本博文在观看网易蜂巢推出的玩转Docker镜像视频教程之后总结而成。
基本使用
谈到使用Docker,首先,我们必须要了解Dockerfile。(命名为Dockerfile
,不要后缀)
Dockerfile的解读
首先引入一个例子:
1 2 3 4 5 6
|
FROM hub.c.163.com/bingohuang/debian:163 MAINTAINER bingohuang <[email protected]> RUN apt-get update && apt-get install -y nginx COPY docker-mario /usr/share/nginx/www EXPOSE 80 ENTRYPOINT ["nginx", "-g", "daemon off;"]
|
逐句解释:
- 关键字
FROM
,选用包含163更新源的Debian镜像,版本7.9
- 关键字
MAINTAINER
,添加作者信息和联系方式(有任何问题或反馈欢迎发邮件沟通)
- 关键字
RUN
,运行命令,这里是更新程序列表并安装 Nginx 程序
- 关键字
COPY
,将 docker-mario
源码拷贝到容器的 /usr/share/nginx/www
目录下(这是第三步安装好 Nginx 程序后自动生成的目录
- 关键字
EXPOSE
,暴露端口,这里是 Nginx 的默认端口:80
- 关键字
ENTRYPOINT
,指定容器运行的默认指令(不会被用户指令覆盖)
构建镜像
1
|
docker build -t XXX:1.0 .
|
查看镜像
输出样式:
1
|
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
|
本地运行
1
|
docker run --name docker-mario -d -p 1989:80 XXX:1.0
|
查看运行的镜像:
访问镜像:
1
|
open http://127/0/0/1:1989/
|
上传镜像
登录网易蜂巢:
1
|
docker login -u {你的网易云邮箱账号或手机号码} -p {你的网易云密码} hub.c.163.com
|
标记本地镜像:
1
|
docker tag {镜像名或ID} hub.c.163.com/{你的用户名}/{标签名}
|
推送至网易云镜像仓库:
1
|
docker push hub.c.163.com/{你的用户名}/{标签名}
|
附一张Docker操作流程图
其他未列出的Docker指令
1 2
|
sudo docker pull NAME[:TAG] sudo docker pull centos:latest
|
1 2
|
sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...] sudo docker run -t -i contos /bin/bash
|
1 2
|
sudo docker images [OPTIONS] [NAME] sudo docker images centos
|
- 查看容器列表,可看到我们创建过的所有container
1 2
|
sudo docker ps [OPTIONS] sudo docker ps -a
|
1 2
|
sudo docker rmi IMAGE [IMAGE...] sudo docker rmi centos:latest
|
1
|
sudo docker rm [OPTIONS] CONTAINER [CONTAINER...]
|
1
|
sudo docker rm sudo docker ps -aq
|
1 2
|
sudo docker kill [OPTIONS] CONTAINER [CONTAINNER...] sudo docker kill 026e
|
1 2
|
sudo docker restart [OPTIONS] contains[CONTAINER] sudo docker restart 026e
|
1 2
|
sudo docker start [OPTIONS] CONTAINER [CONTAINER..] sudo docker start 026e
|
制作镜像
ldd: 打印共享依赖库
1 2 3 4 5 6
|
ldd redis-3.0.0/src/redis-server linux-vdso.so.1 => (0x00007fffde365000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f307d5aa000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f307d38c000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f307cfc6000) /lib64/ld-linux-x86-64.so.2 (0x00007f307d8b9000)
|
打包.so
文件
##制成Dockerfile
1 2 3 4 5
|
FROM scratch ADD rootfs.tar.gz / COPY redis.conf /etc/redis/redis.conf EXPOSE 6379 CMD ["redis-server"]
|
执行构建
1
|
docker build -t redis .
|
测试
1 2 3 4 5
|
docker run -d --name redis redis
redis-cli -h $(docker inspect -f '{{.NetworkSettings.IPAddress}}' redis)
redis-benchmark -h $(docker inspect -f '{{.NetworkSettings.IPAddress}}' redis-05)
|
The link of this page is https://blog.nooa.tech/articles/ca4a993b/ . Welcome to reproduce it!