Docker的基本使用

本博文在观看网易蜂巢推出的玩转Docker镜像视频教程之后总结而成。

基本使用

谈到使用Docker,首先,我们必须要了解Dockerfile。(命名为Dockerfile,不要后缀)

Dockerfile的解读

首先引入一个例子:

1
2
3
4
5
6
FROM hub.c.163.com/bingohuang/debian:163
MAINTAINER bingohuang <me@bingohuang.com>
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
docker images

输出样式:

1
REPOSITORY                              TAG                 DIGEST              IMAGE ID            CREATED             SIZE

本地运行

1
docker run --name docker-mario -d -p 1989:80 XXX:1.0

查看运行的镜像:

1
docker ps

访问镜像:

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
docker -h
  • 获取镜像
1
2
sudo docker pull NAME[:TAG]
sudo docker pull centos:latest
  • 启动Container盒子
1
2
sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
sudo docker run -t -i contos /bin/bash
  • 查看镜像列表,列出本地的所有images
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文件

1
tar ztvf rootfs.tar.gz

##制成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)



本文链接: http://home.meng.uno/articles/ca4a993b/ 欢迎转载!

© 2018.02.08 - 2020.06.02 Mengmeng Kuang  保留所有权利!

UV : | PV :

:D 获取中...

Creative Commons License