Docker入门技巧

2019年3月25日 作者 lj

Docker入门技巧

历史版本

版本 修改人 修改时间 备注
V1.0 李明明 2018-1-3 初始版本

目录

1. Docker基础 5

1.1. 简介 5

1.2. Docker的组成部分 5

1.3. 优点以及解决的问题 5

1.4. 结构图 6

2. 安装步骤 6

2.1. 对操作系统的支持 6

2.2. Centos中docker的安装步骤 7

3. 常用命令 7

3.1. docker version 7

3.2. docker info 8

3.3. service docker status 9

3.4. docker images 10

3.5. docker ps -a 10

3.6. docker run 10

3.7. docker start、stop、restart 11

3.8. docker rm 11

3.9. docker export 11

3.10. docker import 12

3.11. docker rmi 12

3.12. docker commit 12

3.13. docker save 12

3.14. docker load 12

3.15. docker logs -f 13

3.16. docker exec 14

4. Docker 仓库 14

4.1. 默认仓库,官网仓库 14

4.2. 本地搭建仓库 15

4.3. 仓库命令 15

5. Dockerfile 15

5.1. Dockerfile编写命令 15

5.2. Dockerfile使用命令 16

6. docker-compose 16

6.1. 安装 16

6.2. 常用命令 16

6.3. 配置文件docker-compose.yml 17

7. 使用技巧 17

1. 有哪些好用的git管理工具? 17

2. 怎么部署? 17

3. 在哪里找镜像? 17

4. 例如现在用的gogs 17

为什么使用docker容器部署服务? 19

8. 其他 19

Docker基础

简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker的组成部分

  • dockerClient客户端
  • Docker Daemon守护进程
  • Docker Image镜像
  • DockerContainer容器

优点以及解决的问题

  • 一处打包,多处运行,解决部署麻烦的问题,方便快速部署
  • 更轻量的虚拟化,节省了虚拟机的性能损耗
  • 节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级
  • 应用隔离

结构图

安装步骤

对操作系统的支持

https://www.docker.com/community-edition

Centos中docker的安装步骤

https://docs.docker.com/engine/installation/linux/docker-ce/centos

常用命令

docker version

查询系统安装的docker版本(server、client)

docker info

查询docker的信息

service docker status

查看docker服务状态:running,配置文件位置:/usr/lib/systemd/system/docker.service

docker images

查询本地镜像

docker ps -a

查看所有容器

docker run

运行镜像为容器,会新建一个容器;如果所使用的镜像在本地没有,会去docker hub下载。

docker run –name test_mysql -v /home/kee/mysql/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

–name:容器的名称【注意,以下关于容器的命令mysql都是这个容器名称;也可以使用容器id】

-v:挂载容器的文件夹到宿主主机的文件夹;前面是宿主主机,后面是容器

-e:设置容器的环境变量

-d:在后台运行

docker start、stop、restart

容器启动、停止、重启

docker rm

删除容器

docker export

导出容器为文件

docker import

导入容器为镜像

docker rmi

删除镜像

docker commit

commit容器为镜像,将容器保存为镜像

docker save

保存镜像为文件

docker load

加载文件为镜像(截图我先删除了容器和镜像,然后加载文件为镜像)

docker logs -f

查看容器日志,例如:docker logs -f mysql

docker exec

执行容器命令。例如截图执行容器的bash命令,由于bash命令是阻塞命令,所以相当于进入了容器;注意 加-it

退出:exit

执行一次性命令,执行完成即退出

Docker 仓库

默认仓库,官网仓库

hub.docker.com

本地搭建仓库

https://hub.docker.com/_/registry/

使用本地仓库需要配置docker的服务,需要重启docker;这里先不操作。

PS:一般不直接使用这个仓库,会使用第三方的registry管理工具,例如:portus,harbor

仓库命令

docker pull 127.0.0.1:5000/mysql:5.7

获取本地仓库镜像

例子中的REPOSITORY:127.0.0.1:5000/mysql

TAG:5.7

docker push 127.0.0.1:5000/mysql:5.7

推送镜像到仓库

Dockerfile

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像。

Dockerfile demo: https://github.com/docker-library/mysql/blob/6c414e7f38c2079c7193beae5dc7c34ee46cd6e7/5.7/Dockerfile

Dockerfile编写命令

http://blog.csdn.net/wsscy2004/article/details/25878223

Dockerfile使用命令

使用dockerfile构建镜像

docker build -t test:v1 .

docker-compose

Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。

安装

https://docs.docker.com/compose/install/

curl -L https://github.com/docker/compose/releases/download/1.4.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod x /usr/local/bin/docker-compose

常用命令

build 构建或重建服务

help 命令帮助

kill 杀掉容器

logs 显示容器的输出内容

port 打印绑定的开放端口

ps 显示容器

pull 拉取服务镜像

restart 重启服务

rm 删除停止的容器

run 运行一个一次性命令

scale 设置服务的容器数目

start 开启服务

stop 停止服务

up 创建并启动容器

配置文件docker-compose.yml

编写docker-compose.yml文件命令:http://blog.csdn.net/kevin_201353/article/details/51547742

Yaml语法规则:https://www.cnblogs.com/moonandstar08/p/6435640.html

demo如下:

version: ‘2’

services:

web:

build: .

depends_on:

– db

– redis

redis:

image: redis

db:

image: postgres

使用技巧

例如:我想部署一套git仓库管理工具

  1. 有哪些好用的git管理工具?

例如:gitlab、gogs、gitbucket、bitbucket等等

  1. 怎么部署?

当然是用容器部署了

  1. 在哪里找镜像?

Docker官方的镜像库:hub.docker.com

  1. 例如现在用的gogs

搜索可以看到:

点击详情进去:

一般这里会有使用镜像的说明,但gogs界面并没有;

继续往下看,发现这里有一个链接:

进去之后是github的源码和说明,按照这里的使用说明操作就OK了:

容器起来后,发现可以正常访问。

到这里理论上就应该完成了,but,有什么忘记了吗?容器应该是无状态的!!!

继续查看说明,发现容器的数据都放在了宿主主机的这里:/var/gogs,Very Good,完成!

PS:并不是所有的镜像运行的基础命令都带上了数据盘的挂载,需要注意!!!

为什么使用docker容器部署服务?

其他

  • Docker volume
  • Docker网络配置
  • Docker cpu、内存配置
  • Docker权限
  • 容器安全
  • 容器的监控手段
  • Docker集群(Swarm、Kubernetes、Mesos等)