Docker 基本使用

从利用docker镜像,跑起容器开始。使用现成的镜像。

第一步:明确要使用容器运行的应用的镜像相关

  1. 明确镜像名(仓库名)
  2. 是否指定明确的镜像tag版本
  3. 查看本地(本地叫什么?)有哪些镜像:> docker images -a
  4. 如果本地没有,会从远程的registry中
  5. 对于从docker官方registry,没有指定用户名称空间的话,会根据在官方library名称空间中寻找,如果没找到会提示没找到。非官方的一定要带上用户名/仓库名 这样才会从指定用户下的仓库拉取。

第二步:运行一个官方nginx应用

docker run --name nginx_webserver -d -p 80:80 nginx

  1. docker run 会根据指定的镜像名到本地,到官方hub找镜像,然后解包镜像,创建container容器通过镜像,运行应用,将应用的输出返回给docker-client. docker client的输出是docker-daemon返回的
  2. --name 是指定容器的名称
  3. -d 已守护进程方式运行
  4. -p 80:80 指定容器服务的端口,映射宿主机的端口。这种对应image配置了需要网络端口,这里指定端口号而已。如果应用需要而不指定会怎样?
  5. 还有一些如:-e 给容器指定环境变量;--device添加一个设备给容器;

第三步:单纯下载镜像,pull

上面的docker run,如果本地没有镜像,那么会从docker hub上取,然后创建容器通过镜像。

其实很多时候我们可以先下载镜像到本地,后面再执行docker run.

这就是registry提供的上传下载功能,创建私有repo。

docker pull redis

第四步:设置国内docker-hub

由于有时候docker官方hub被墙,那么设置国内的镜像docker-hub是可以加快pull速度

  1. 找到/etc/docker/daemon.josn
  2. 在文件添加如下json数据:
{ "registry-mirrors": [ "https://registry.docker-cn.com" ] }
  1. 然后重启docker-daemon服务, 注意会已运行的容器会停掉:systemctl daemon-reload && systemctl restart docker

第五步:列出已有镜像和镜像物理目录在哪里

  1. 列出全部已有镜像: > docker images -a
  2. /var/lib/docker 是docker相关的物理目录

第六步:本地导入导出镜像及修改名字和tag

  1. 导出本地已有镜像:docker save image-id > a-file 或者参数指定文件 docker save image-id -o 'filepath'

  2. 导入镜像到本地: docker load < STDINPUT 或者 docker load -i 'filepath'

  3. 导入镜像会没有名字,可以通过docker tag image-id name:tag 来修改。修改存在的也可以。

第七步: 导入导出容器的文件系统

  1. 导出: docker export container > tarfile 或者docker export container -o 'filepath'

  2. 导入:docker import 'file' 会创建一个新的空文件系统的image然后导入file文件内容。详情google。这样可以将容器改变的做出新的镜像。

第八步: 宿主和容器互相复制数据

  1. docker cp container:src_path host_dest_path

  2. docker cp host_src_path container:src_path

第九步: 通过dockerfile定制我们自己的镜像

看篇文章《Dockerfile制作镜像》

最新文章

  1. Linux查看进程PID信息
  2. (视频) 《快速创建网站》3.4 网站改版3分钟搞定 - WordPress主题安装和备份
  3. Nginx负载均衡和反向代理设置
  4. Telnet、FTP、SSH、SFTP、SCP
  5. C# 扩展方法奇思妙用高级篇六:WinForm 控件选择器
  6. runtime 运行时机制 完全解读
  7. 第一个使用Writer写的博客
  8. javascript高级知识点——指定上下文实现
  9. Javascript中的__proto__、prototype、constructor
  10. 2017-03-02学习心得之Java代码
  11. 51nod--1006 最长公共子序列Lcs (动态规划)
  12. jQuery 选择具有特殊属性的元素
  13. PHP官方网站及PHP手册
  14. bzoj1798
  15. python base64 编解码,转换成Opencv,PIL.Image图片格式
  16. [转] hive0.14-insert、update、delete操作测试
  17. (转)常见LCD接口
  18. Kafka介绍及安装部署
  19. 浅谈angular2与angularJS的区别
  20. 【WPF】ListBox无法滚动

热门文章

  1. c# Aes加解密
  2. Windows下ActiveMq安装与使用
  3. 安卓设备连接Mac的简单方法
  4. webpack的一些坑
  5. centos7.5 搭建上FTP服务
  6. vscode配合less的编译
  7. NET Core3前后端分离开发框架
  8. CentOS中使用FIO测试磁盘IO性能
  9. [记录]安装.Net Framework 4.6.2时出现“无法建立到信任根颁发机构的证书链”解决方法
  10. 【C++】虚函数的实现机制