Docker基础
一、简介Docker是一个开源的应用容器引擎,使用Go语言开发,基于Linux内核的CGroup、Namespace、Union FS等技术实现的一种系统级虚拟化技术。 特性
组件镜像(Image)
镜像,可以理解为一个模板,这个模版提供了器运行时所需的程序、库、资源、配置等必要文件。只要有了这个模版,我们可以在任何装有docker的系统上运行容器,也就是所谓的Docker是build once,run everywhere。
?
容器(Container)
容器,就是依据镜像这个模板创建出来的实体。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。
?
仓库(Repository)
仓库,故名思义就是存放东西的,这里的“东西”就是Image。用户可以通过仓库拉取镜像运行容器,也可以构建镜像存放在仓库中。仓库可分为为公共仓库和私有仓库,所有用户都能使用的仓库称为公共仓库,而私有仓库则是个人或者团队自己搭建,只供个人或者团队使用。
?
一个直观图说明其各个组件运行关系:
Docker 从v17.03开始划分为CE 和EE。CE 即社区版,EE 即企业版,强调安全,付费使用。Docker在1.13 版本之后,从2017年的3月1日开始,版本命名规则变为如下:
??
Docker CE 每月发布一个Edge 版本(17.03,17.04,17.05…),每三个月发布一个Stable 版本(17.03,17.06,17.09…),Docker EE 和Stable 版本号保持一致,但每个版本提供一年维护。
二、安装部署安装说明安装需求:
由于Docker是建立在linux中两种核心技术之上:namespace与Cgroup,而User namespace出现的版本是3.8,所以安装docker需要内核版本大于3.10,centos6内核版本是2.6所以无法在其上使用docker。 centos7安装1. 安装依赖 yum install -y yum--mapper-persistent-
2.添加仓库 yum-config---add-//download.docker.com/linux/centos/docker-ce.repo
3. 查看docker版本列表 yum list docker-ce --showduplicates | sort -r
4.?安装指定版本的docker(可忽略,直接安装最新版) yum install docker-ce-
5.安装最新版docker yum install docker-ce docker-ce-cli containerd.io
Debian&Ubuntu1. 更新包管理 sudo apt-get update
2.?添加https包信任 sudo apt--transport---properties-common
3. 添加docker官方GPG 证书 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
4. 写入软件信息 sudo add-apt-
4.?更新并安装docker sudo apt--get install docker-ce docker-ce-cli containerd.io
5.若安装指定版本采用如下方式
$ apt-cache madison docker-docker-ce | 5:18.09.1~3-0~debian-stretch | https://download.docker.com/linux/debian stretch/<span style="color: #000000;">stable amd64 Packages
docker-ce | 5:18.09.0~3-0~debian-stretch | https://download.docker.com/linux/debian stretch/<span style="color: #000000;">stable amd64 Packages docker-ce | 18.06.1~ce~3-0~debian | https://download.docker.com/linux/debian stretch/<span style="color: #000000;">stable amd64 Packages docker-ce | 18.06.0~ce~3-0~debian | https://download.docker.com/linux/debian stretch/<span style="color: #000000;">stable amd64 Packages <span style="color: #008000;">#<span style="color: #008000;">安装 sudo apt-get install docker-ce= 运行docker停止防火墙、关闭selinux systemctl stop firewalld && systemctl disable firewalld && setenforce 0
配置镜像加速 默认docker从DockerHUB上拉取镜像,由于国内网络原因下载镜像速度会变慢,所以可以配置国内镜像加速地址https://registry.docker-cn.com,当有多个镜像加速地址时候可在列表中以逗号分割。
mkdir /etc/> /etc/docker/daemon.json <<: [EOF
运行docker
systemctl daemon-
[root@app51 ~]
18.09.21.3910.6624796210 04:13:27 2019/Arch: linux/Server: Docker Engine -<span style="color: #000000;"> Community
Engine: Version: 18.09.2<span style="color: #000000;"> API version: 1.39 (minimum version 1.12<span style="color: #000000;">) Go version: go1.10.6<span style="color: #000000;"> Git commit: 6247962<span style="color: #000000;"> Built: Sun Feb 10 03:47:25 2019<span style="color: #000000;"> OS/Arch: linux/amd64 三、docker基本操作容器操作docker 命令采用了分组管理的思想,已经纳入管理的docker命令如下(版本18.09.2):?
1.启动容器?方式1:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
常用OPTIONS:
可以使用如下三种方式:
?
示例:运行一个名字为nginx-container的容器,使用镜像nginx,并将宿主机的8080映射到容器内部80端口,然后进入交互模式。?
[root@app51 ~]
root@fd92290433da:/
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
2.查看容器docker ps?[OPTIONS] 常用选项:
示例 :
root@app51 ~]
11 seconds ago Up 9 3 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp nginx-~]
41 seconds ago Up 39~]
3.查看容器具体信息docker inspect [OPTIONS] NAME|ID [NAME|ID…] 示例: [root@app51 ~]
: : : : [],
4.停止容器 方式一:docker stop [OPTIONS] CONTAINER [CONTAINER…]
方式二: docker kill [OPTIONS] CONTAINER [CONTAINER…]?
区别:docker stop 相当于发送15停止信号,而kill是强制终止对应信号9
示例:
[root@app51 ~]
nginx-container
5.启动已停止的容器docker start [OPTIONS] CONTAINER [CONTAINER…] 常用选项:
[root@app51 ~]
/
/
1 root 0:00 /bin/7 root 0:00 ps
6.删除容器docker rm [OPTIONS] CONTAINER [CONTAINER…] 或者docker container rm
如果删除的容器正在运行则需要指定-f进行强制删除
常用选项:
示例:?
docker rm nginx-container
Ps:删除所有容器 docker rm -f `docker ps -a --a |awk -F |xargs docker rm -f
7. 暂停某个容器docker pause CONTAINER [CONTAINER…] 示例: [root@app51 ~]
nginx-container
8.恢复暂停的容器docker unpause CONTAINER [CONTAINER…] [root@app51 ~]
nginx-container
9.查看容器日志docker logs [OPTIONS] CONTAINER 常用选项:
root@app51 ~]
10.1.201.30 - - [23/Feb/2019:10:55:33 +0000] 304 0
10.在已运行的容器中运行命令docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
常用选项:
示例: [root@app51 ~]
=101(nginx) gid=101(nginx) groups=101
11.容器导出docker export [OPTIONS] CONTAINER
容器导出类似于容器快照,导出的是容器的在宿主机上的文件系统压缩包,导出的文件系统可使用docker import进行导入,在其他机器导入时候会以镜像的方式存在。
常用参数
示例 :
[root@app51 ~]
[root@app51 ~]
-rw------- 1 root root 107M 2月 23 19:18 ningx.tar
12.将导出的容器导入为镜像
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
容器导入可以是文件、文件url、镜像仓库
示例:?
[root@app51 ~]
~]
10
其他导入示例 docker http://example.com/image.tar.gz repository:tag
12.将容器提交为镜像docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
常用选项:
示例:?
[root@app51 ~]
~]
62 hours ago 108MB
镜像操作在老版本中镜像操作也是使用的docker命令,新版本进行了分组,可使用docker image 来进行镜像操作。 1.搜索镜像docker search [OPTIONS] TERM 常用选项:
[root@app51 ~]
5179/centos7-ansible Ansible on Centos7 120/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86… 106/centos-xfce-vnc Centos container with VNC session… 80 [OK]
结果字段含义:
NAME:镜像名称
DESCRIPTION :镜像描述
STARS :获赞数量
OFFICIAL :是否为官方镜像
AUTOMATED:是否为自动构建?
2.下载镜像?docker image pull?
TAG不写默认为最新版本latest [root@app51 ~]
library/ centos:latest
3.查看镜像docker image ls 或者docker images
常用选项:
[root@app51 ~]
2 months ago 202MB
4.删除镜像?docker image rm [OPTIONS] IMAGE [IMAGE...]? 或者docker rmi IMAGE [root@app51 ~]
5. 镜像导出docker save [OPTIONS] IMAGE [IMAGE...]
将镜像打包为压缩包,可在其他docker主机进行导入,一次可打包多个
常用选项:
示例:
[root@app51 ~]
6.镜像导入docker load [OPTIONS]
将已经导出的镜像压缩文件导入为镜像
常用选项:
[root@app51 ~]
7.查看镜像信息docker image inspect [OPTIONS] IMAGE [IMAGE...] [root@app51 ~]
:
其他运行信息查看docker info [root@app51 ~]
Containers: 11418.09.2
版本信息查看 docker version root@app51 ~]
18.09.21.3910.6624796210 04:13:27 2019/Arch: linux/
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |