docker 学习笔记(一)

本文是基于Ubuntu16.04,不同操作系统可能在安装过程有些差别,但不会影响后续的容器操作。

同时本文的以下操作是基于读者已经对docker是何物,用来做什么的有大致的了解。会以陈述各种配置操作为主,若对docker尚无了解者建议结合其他资料进行阅读

本文章中总结内容全部来自书籍Docker-从入门到实践 https://legacy.gitbook.com/book/yeasy/docker_practice/details

1.安装docker

  • 卸载旧版本的docker或者docker-engine
sudo apt-get remove docker docker-engine docker.id
  • 使用apt安装docker-ce
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common //首先添加使用https传输的软件包及CA证书sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" //添加apt源sudo apt-get updatesudo apt-get install docker-ce

2.docker CE服务的启动和停止

sudo systemctl enable dockersudo systemctl start dockersudo systemctl stop dockersudo systemctl restart docker

3.操作系统中哪些用户可以使用docker服务

之所以要谈这一点是因为默认情况下,docker命令会使用Unix socket与docker引擎通讯。而只有root用户和docker组用户才可以访问docker引擎的Unix socket。处于安全考虑,一般不用root用户,故需将使用docker服务的用户添加到docker组中(若无docker组需自行创建)

  • 查看是否有docker组
cat /etc/group |grep docker
  • 建立docker组(如果有的话就不用创建)
sudo groupadd docker
  • 将使用docker服务的user1添加到docker用户组中
sudo usermod -aG docker user1
  • 退出终端,重启docker服务
  • 补充:若还无法使用docker服务,尝试将出错信息中用户没有权限运行的docker脚本文件添加上读写权限,之后在进行尝试

4.镜像加速器

有时从国内拉取镜像会遇到困难,需要配置镜像加速器。(对于更改过maven源的人应该不难理解)对于Ubuntu16.04+,可以在/etc/docker/daemon.json中写入下面的内容

{"registry-mirrors":   ["https://registry.docker-cn.com"]
}

之后重启服务

sudo systemctl daemon-reload
sudo systemctl restart docker

5.使用镜像

Docker Hub上面有大量镜像可以使用,下面将谈如何获取并使用它们。

既然谈到获取镜像,那么应该一个镜像的标识,这就是镜像仓库地址和仓库名,其格式为

[Docker Registry 地址[:端口号]/]仓库名[:标签]
  • Docker镜像仓库地址:地址一般格式为<域名/IP>[:端口号]。默认地址时Docker Hub
  • 仓库名:仓库名是两段格式,即<用户名>/<软件名>。对于Docker Hub如果不给出用户名,则默认为library,也就是官方镜像。

例如Ubuntu16.04版本的镜像在Docker Hub中的标识为:

[Docker Hub] [library/]ubuntu:16.04

可以简写为Ubuntu:16.04

5.1获取镜像

docker pull [option] 标识# example
docker pull ubuntu:16.04
docker pull nginx
docker pull tomcat

5.2列出镜像

docker image ls [-q] //只显示ID号,可以用于shell编程删除镜像
docker image ls ubuntu
docker image ls ubuntu:16.04

镜像ID是镜像的唯一标识。在列出的所有镜像中,一个镜像可以对应多个标签(TAG),但都具有相同的镜像ID。

5.3删除镜像

docker image rm imageID/镜像名(即仓库名:标签)

5.4利用docker commit和Dockerfile定制镜像

前面已经提到可以从仓库中下载已有的镜像,如果需要自己定制(大多是对源镜像进行修改成自己定制的新镜像)镜像怎么办?

例如,我们pull了一个nginx镜像,然后通过以下命令更改了nginx的欢迎页面,同时希望将其保存成一个我们自己定制的镜像,这样以后每次启动此镜像就可以得到我们想要的欢迎页面

$ docker run --name webserver -d -p 80:80 nginx //利用nginx镜像创建一个名称为webserver的容器$ docker exec -it webserver bash
root@3258162e151:/# echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
root@3258162e151:/# exit
exit

上面的命令具体各种参数代表什么暂时不用懂,只需知道我们以交互式命令的方式进入了webserver容器,执行了bash命令。我们修改了容器,也就是改动了容器的存储层,可以通过docker diff 查看具体改动。

我们已经定制好了变化,那么如何保存下来成为一个新的镜像,方便我们以后使用呢?可以用docker commit命令

docker commit webserver nginx:v2

其中webserver时容器,nginx:v2是新的定制的镜像的名称和标签

使用dockerfile定制镜像请读者自己去阅读文章开始给出的pdf书籍,这里不在详细描述(但是使用dockerfile定制镜像才是经常使用的方法,由于笔者比较懒。。。所以就。。。)

6.操作容器

有了镜像后,就可以以镜像为基础启动并运行一个容器(如果不懂镜像与容器的关系,可以下载笔者在一开始给出的电子版pdf书籍,里面有一章对两者的简短介绍)

6.1启动容器

  • (通过镜像)新建容器并启动
docker run [option]  镜像名称
docker run --name nginx_container -d -p 8080:80 nginx:latest--name:指定创建的容器的名字,如果忘记写可以通过docker ps [-a] 查看
-p:端口映射,将本地8080端口映射到docker nginx80端口
-d:docker在后台运行,而不把命令执行结果打印到当前宿主机下。
  • 启动已经终止的容器
docker start 容器名称

6.2列出所有创建的容器和运行的容器

docker container ls -a //类似于docker image ls -adocker ps //列出运行的容器

6.3终止容器

docker stop 容器名称

6.4进入容器

当需要进入容器操作时,需要用到一下命令。

docker attach 或者 docker exec(推荐后者)

进入容器前,需要先启动容器

docker start 容器名称
docker exec -it 容器名称 bash

6.5导入和导出容器

如果要导出本地某个容器,要用docker export命令

docker export 容器ID>xxx.tardocker export 235345345>ubuntu.tar

通过导出的容器导入docker中作为镜像

cat xxx.tar | docker import -test/镜像名:标签cat ubuntu.tar | docker import -test/myubuntu:v1.0docker import http://example.com/exampleimage.tgz example/imagerepo

6.6删除容器

docker rm 容器ID

[docker] docker学习笔记(一)相关推荐

  1. 《自己动手写Docker》学习笔记2

    <自己动手写Docker>学习笔记2 1 前言 由于本人毕业设计与云原生领域相关,因此最近在学习Docker相关知识,<自己动手写Docker>涵盖了Docker底层的各类知识 ...

  2. 《深入浅出Docker》学习笔记

    <深入浅出Docker>学习笔记 第三章:docker 安装 linux服务器安装:-略 windows服务器安装:-略 确认安装结果 docker --version 第四章:纵观DOc ...

  3. Docker容器学习笔记一

    Docker容器学习笔记一 狂神说B站视频:https://www.bilibili.com/video/BV1og4y1q7M4?p=1 Docker容器学习笔记二:https://blog.csd ...

  4. docker,k8s学习笔记汇总

    整理了下博客里关于docker和k8s的文章,方便查看 docker学习笔记(一)docker入门 docker学习笔记(二)创建自己的镜像 docker学习笔记(三)docker中的网络 docke ...

  5. Docker容器学习笔记(看了狂神视频)

    狂神的笔记更加系统详细,推荐大家可以去看狂神的视频教程和笔记.我这里仅根据我自己的需求写的笔记,对于需要快速掌握docker的使用的朋友可以参考学习. Docker 背景需求 之前,开发一套环境,上线 ...

  6. Docker02 狂神Docker视频学习笔记 :【狂神说Java 哔哩哔哩】Docker最新超详细版教程通俗易懂

    目录 0. 视频源 0. 学习网址 基础篇 1. Docker概述 1.1 Docker为什么出现? 1.2 Docker历史 1.3 Docker能干什么 2. Docker安装 2.1 Docke ...

  7. 【Docker容器学习笔记一】

    一.Docker概述 1.Docker为什么会出现? 一款产品: 开发–上线 两套环境!应用环境,应用配置! 开发 - 运维. 问题:我在我的电脑上可以允许!版本更新,导致服务不可用!对于运维来说考验 ...

  8. Docker入门学习笔记(狂神版)

    下述笔记是自己花一天时间看B站狂神说Docker视频的笔记,下列的笔记是根据自己的实践的记录下来的,若想细学掌握Docker建议自行观看(<Docker入门到精通>),去观看狂胜的视频记得 ...

  9. 【学习笔记】尚硅谷周阳老师的Docker教程学习笔记

    本文是尚硅谷周阳老师的Docker教程的相关学习笔记,暂时还没有检查勘误过. 一.Docker简介 1. 简介 Docker的出现是为了解决代码在本机可以正常运行,而部署到其他机器不能运行的问题.这是 ...

  10. Docker的学习笔记

    Docker Docker概述 Docker为什么会出现 一款产品 : 开发-上线 两套环境 应用环境 应用配置 开发 - 运维 问题 我在我的电脑上可以运行 版本更新 导致服务不可用 对于运维来说 ...

最新文章

  1. m.pythontab.com_Python expandtabs()函数的使用
  2. 操作系统(三十六)动态分区分配算法
  3. C语言实现ICMP协议Ping命令
  4. Spring Boot中禁用缓存,修改前端页面实时生效
  5. Python_pandas 两种主要的数据类型(Series、DataFrame)
  6. 【全军覆没】麻省理工把中国学生拉入黑名单,斯坦福取消中国大陆面试! 这是怎么了?...
  7. linux 快组描述符,Linux 进程描述符 task struct
  8. 智能优化算法:金枪鱼群优化算法-附代码
  9. c语言爱心代码简单,利用c语言实现简单心形的代码分享
  10. 史上最全GIS相关软件(CAD、FME、Arcgis、ArcgisPro)
  11. 小米android11账号补丁,小米10 MIUI11 解账户锁 可登小米账号 永不反锁 完美ROOT 解锁包...
  12. figtree需要在JAVA下运行吗_用一个Java程序出问题了
  13. css内容超过宽度显示省略号没效果,文字超过两行折叠省略
  14. 通过按键控制二极管c语言,单片机一个按键控制一个发光二极管
  15. Sql Server 字符串、日期函数
  16. func() takes 0 positional arguments but 1 was given
  17. 魔兽显示角色服务器排名,魔兽世界国服十大著名服务器排行
  18. 绩效管理流程是什么?
  19. Ubuntu Server 16.04安装VNC灰屏问题解决
  20. 搜狗搜索蜘蛛解析讲解

热门文章

  1. Epon设备网管-sugarnms网管开发平台应用案例
  2. 浅论WBS分解在软件项目中的应用
  3. 006基于SSM小区物业系统
  4. SSM+宠物领养系统毕业设计-附源码031654
  5. 关于jvm-java中init与clint区别
  6. Java代码执行顺序
  7. 如何用“心流”提升编码工作效率?
  8. 爱立信携手中国电信运用爱立信频谱共享技术
  9. thinkphp php表单,ThinkPHP 表单数据智能写入 create 方法
  10. 大视频上传服务器,支持HTML5断点续传,支持4GB以上大视频文件上传