@
目录
Docker基本使用
核心概念
docker常用命令
镜像操作
修改镜像源
容器操作
普通用户运行docker
Docker是一个开源的应用容器引擎;是一个轻量级容器技术;
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;
运行中的这个镜像称为容器,容器启动是非常快速的。

<code>docker主机(Host)</code>:安装了Docker程序的机器(Docker直接安装在操作系统之上);
<code>docker客户端(Client)</code>:连接docker主机进行操作;
<code>docker仓库(Registry)</code>:用来保存各种打包好的软件镜像;
<code>docker镜像(Images)</code>:软件打包好的镜像;放在docker仓库中;
<code>docker容器(Container)</code>:镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
使用Docker的步骤:
确认要安装docker的系统的linux内核高于<code>3.10</code>,低于3.10使用<code>yum update</code>更新
安装docker
查看docker版本
查看docker状态
启动docker
停止docker
设置docker开机自启
操作
命令
说明
检索
docker search 关键字 eg:docker search redis
我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。
拉取
docker pull 镜像名:tag
:tag是可选的,tag表示标签,多为软件的版本,默认是latest
列表
docker images
查看所有本地镜像
删除
docker rmi image-id
删除指定的本地镜像
修改 <code>/etc/docker/daemon.json</code> ,写入如下内容(如果文件不存在请新建该文件)
国内镜像源
地址
Docker 官方中国区
https://registry.docker-cn.com
网易
http://hub-mirror.c.163.com
中国科技大学
https://docker.mirrors.ustc.edu.cn
阿里云
https://pee6w651.mirror.aliyuncs.com
以tomcat为例:
下载tomcat镜像
根据镜像启动容器,不加TAG默认latest,如果没有下载latest会先去下载再启动
<code>--name</code>:给容器起个名字
<code>-d</code>:后台启动,不加就是前端启动,然后你就只能开一个新的窗口连接,不然就望着黑乎乎的窗口,啥也干不了,<code>Ctrl+C</code>即可退出,当然,容器也会关闭
查看运行中的容器
停止运行中的容器
查看所有的容器
启动容器
删除一个容器
启动一个做了端口映射的tomcat
<code>-d</code>:后台运行
<code>-p</code>: 将主机的端口映射到容器的一个端口 主机端口(8888):容器内部的端口(8080)
外界通过主机的8888端口就可以访问到tomcat,前提是8888端口开放
关闭防火墙
查看容器的日志
以mysql为例:
<code>--name mysql</code>:容器的名字是mysql;
<code>MYSQL_ROOT_PASSWORD=root</code>:root用户的密码是root (必须指定)
连接容器内mysql
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
<code>docker attach</code>
<code>docker exec</code>:推荐使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
<code>-i</code>: 交互式操作。
<code>-t</code>: 终端。
<code>mysql</code>: 名为<code>mysql</code>的镜像。
<code>bash</code>:放在镜像名后的是命令,这里我们希望有个交互式 <code>Shell</code>,因此用的是<code>bash</code>,也可以用<code>/bin/bash</code>。
连接上以后就可以正常使用mysql命令操作了
直接使用端口映射更加方便
docker 命令只能由root用户运行,普通用户还需要加上sudo命令。在第三方开发工具中无法使用docker插件
docker守护进程启动的时候,会默认赋予名为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令
安装docker已经创建了docker用户组,只需要将用户加入到docker组即可