简介

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

安装

环境要求:
Ubuntu:系统的内核版本高于 3.10
CentOS 7:系统要求为64位、系统内核版本高于 3.10
检验方法:uname -r
安装:yum -y install docker-io
启动:service docker start
测试:docker run hello-world

使用

以安装mysql为例
1.下载

  1. docker pull mysql/mysql-server

2.创建并运行容器

  1. 1)在主机创建挂载路径
  2. mkdir -p /docker/mysql/conf /docker/mysql/data /docker/mysql/logs
  3. 2)创建并运行容器
  4. docker run -d -p 3306:3306 --name mysql02 -v /docker/mysql/conf:/etc/mysql/conf.d -v /docker/mysql/data:/var/lib/mysql -v /docker/mysql/logs:/logs -e MYSQL_ROOT_PASSWORD=cloud123 mysql/mysql-server
  5. 指令解释:
  6. -d:后台运行
  7. -p:指定端口暴露 冒号前:主机端口 冒号后:容器端口
  8. -v:挂载路径 冒号前:主机路径 冒号后:容器路径
  9. --name:容器名称
  10. -e 指定环境变量,容器中可以使用该环境变量
  11. mysql/mysql-server:镜像名称
  12. 参考地址:https://www.cnblogs.com/yfalcon/p/9044246.html

3.进入容器

  1. docker exec -it mysql02 bash
  2. 指令解释:
  3. -i:让容器的标准输入保持打开
  4. -t:分配一个伪终端并绑定到容器上
  5. base:进入后支持shell命令
  6. mysql02:容器名称

4.容器启动/关闭

  1. 启动:docker start mysql02
  2. 关闭:docker stop mysql02

5.镜像生成

  1. docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
  2. OPTIONS说明:
  3. -a :提交的镜像作者;
  4. -c :使用Dockerfile指令来创建镜像;
  5. -m :提交时的说明文字;
  6. -p :在commit时,将容器暂停。

6.镜像的保存和使用

  1. 两种方法:1.exported-imported 2.saveed-loaded
  2. saveed-loaded为例:
  3. 保存:
  4. docker save mysql02 > /docker/images/mysql02.tar
  5. 使用:
  6. docker load < mysql02.tar
  7. 镜像改名:
  8. docker tag 455f4eee97c6 mysql03
  9. exported-imported saveed-loaded的区别:
  10. 1.前者针对容器 后者针对镜像
  11. 2.exported-imported会丢失 历史和层(layer)

常用指令

  1. 镜像下载:docker pull xxx
  2. 查看所有镜像:docker images
  3. 查看所有容器:docker ps -a
  4. 查看正在运行的容器:docker ps
  5. 查看容器创建时logdocker logs xxx
  6. 进入容器:docker exec -it xxxxx bash
  7. 镜像保存:docker commit xxxx xxxx
  8. 镜像改名:docker tag xxxx usr-server
  9. 从主机复制到容器: docker cp host_path containerID:container_path
  10. 从容器复制到主机: docker cp containerID:container_path host_path

常见问题

  1. 解决jdk不能使用 source /etc/profile
  2. bash: xxxxx: Permission denied chmod 777 xxxxx
  3. 中文乱码:
  4. 1./etc/profile 中添加 export LANG=en_ZW.utf8
  5. 2.source /etc/profile
  6. 时间时区不正确:
  7. 1.ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  8. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  9. 2./etc/profile 中添加 export TZ=Asia/Shanghai
  10. 3.source /etc/profile

资源汇总

  1. https://www.jianshu.com/p/c2719810819e
  2. http://www.runoob.com/docker/docker-tutorial.html

小技巧

  1. docker update --restart always 容器名字
  2. 这样设置就是设置每次docker启动的时候,这个容器就会自启动