[docker] docker学习笔记(一)
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学习笔记(一)相关推荐
- 《自己动手写Docker》学习笔记2
<自己动手写Docker>学习笔记2 1 前言 由于本人毕业设计与云原生领域相关,因此最近在学习Docker相关知识,<自己动手写Docker>涵盖了Docker底层的各类知识 ...
- 《深入浅出Docker》学习笔记
<深入浅出Docker>学习笔记 第三章:docker 安装 linux服务器安装:-略 windows服务器安装:-略 确认安装结果 docker --version 第四章:纵观DOc ...
- Docker容器学习笔记一
Docker容器学习笔记一 狂神说B站视频:https://www.bilibili.com/video/BV1og4y1q7M4?p=1 Docker容器学习笔记二:https://blog.csd ...
- docker,k8s学习笔记汇总
整理了下博客里关于docker和k8s的文章,方便查看 docker学习笔记(一)docker入门 docker学习笔记(二)创建自己的镜像 docker学习笔记(三)docker中的网络 docke ...
- Docker容器学习笔记(看了狂神视频)
狂神的笔记更加系统详细,推荐大家可以去看狂神的视频教程和笔记.我这里仅根据我自己的需求写的笔记,对于需要快速掌握docker的使用的朋友可以参考学习. Docker 背景需求 之前,开发一套环境,上线 ...
- Docker02 狂神Docker视频学习笔记 :【狂神说Java 哔哩哔哩】Docker最新超详细版教程通俗易懂
目录 0. 视频源 0. 学习网址 基础篇 1. Docker概述 1.1 Docker为什么出现? 1.2 Docker历史 1.3 Docker能干什么 2. Docker安装 2.1 Docke ...
- 【Docker容器学习笔记一】
一.Docker概述 1.Docker为什么会出现? 一款产品: 开发–上线 两套环境!应用环境,应用配置! 开发 - 运维. 问题:我在我的电脑上可以允许!版本更新,导致服务不可用!对于运维来说考验 ...
- Docker入门学习笔记(狂神版)
下述笔记是自己花一天时间看B站狂神说Docker视频的笔记,下列的笔记是根据自己的实践的记录下来的,若想细学掌握Docker建议自行观看(<Docker入门到精通>),去观看狂胜的视频记得 ...
- 【学习笔记】尚硅谷周阳老师的Docker教程学习笔记
本文是尚硅谷周阳老师的Docker教程的相关学习笔记,暂时还没有检查勘误过. 一.Docker简介 1. 简介 Docker的出现是为了解决代码在本机可以正常运行,而部署到其他机器不能运行的问题.这是 ...
- Docker的学习笔记
Docker Docker概述 Docker为什么会出现 一款产品 : 开发-上线 两套环境 应用环境 应用配置 开发 - 运维 问题 我在我的电脑上可以运行 版本更新 导致服务不可用 对于运维来说 ...
最新文章
- m.pythontab.com_Python expandtabs()函数的使用
- 操作系统(三十六)动态分区分配算法
- C语言实现ICMP协议Ping命令
- Spring Boot中禁用缓存,修改前端页面实时生效
- Python_pandas 两种主要的数据类型(Series、DataFrame)
- 【全军覆没】麻省理工把中国学生拉入黑名单,斯坦福取消中国大陆面试! 这是怎么了?...
- linux 快组描述符,Linux 进程描述符 task struct
- 智能优化算法:金枪鱼群优化算法-附代码
- c语言爱心代码简单,利用c语言实现简单心形的代码分享
- 史上最全GIS相关软件(CAD、FME、Arcgis、ArcgisPro)
- 小米android11账号补丁,小米10 MIUI11 解账户锁 可登小米账号 永不反锁 完美ROOT 解锁包...
- figtree需要在JAVA下运行吗_用一个Java程序出问题了
- css内容超过宽度显示省略号没效果,文字超过两行折叠省略
- 通过按键控制二极管c语言,单片机一个按键控制一个发光二极管
- Sql Server 字符串、日期函数
- func() takes 0 positional arguments but 1 was given
- 魔兽显示角色服务器排名,魔兽世界国服十大著名服务器排行
- 绩效管理流程是什么?
- Ubuntu Server 16.04安装VNC灰屏问题解决
- 搜狗搜索蜘蛛解析讲解