简介
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.下载
docker pull mysql/mysql-server
2.创建并运行容器
1)在主机创建挂载路径
mkdir -p /docker/mysql/conf /docker/mysql/data /docker/mysql/logs
2)创建并运行容器
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
指令解释:
-d:后台运行
-p:指定端口暴露 冒号前:主机端口 冒号后:容器端口
-v:挂载路径 冒号前:主机路径 冒号后:容器路径
--name:容器名称
-e: 指定环境变量,容器中可以使用该环境变量
mysql/mysql-server:镜像名称
参考地址:https://www.cnblogs.com/yfalcon/p/9044246.html
3.进入容器
docker exec -it mysql02 bash
指令解释:
-i:让容器的标准输入保持打开
-t:分配一个伪终端并绑定到容器上
base:进入后支持shell命令
mysql02:容器名称
4.容器启动/关闭
启动:docker start mysql02
关闭:docker stop mysql02
5.镜像生成
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
6.镜像的保存和使用
两种方法:1.exported-imported 2.saveed-loaded
以saveed-loaded为例:
保存:
docker save mysql02 > /docker/images/mysql02.tar
使用:
docker load < mysql02.tar
镜像改名:
docker tag 455f4eee97c6 mysql03
exported-imported 和 saveed-loaded的区别:
1.前者针对容器 后者针对镜像
2.exported-imported会丢失 历史和层(layer)
常用指令
镜像下载:docker pull xxx
查看所有镜像:docker images
查看所有容器:docker ps -a
查看正在运行的容器:docker ps
查看容器创建时log:docker logs xxx
进入容器:docker exec -it xxxxx bash
镜像保存:docker commit xxxx xxxx
镜像改名:docker tag xxxx usr-server
从主机复制到容器: docker cp host_path containerID:container_path
从容器复制到主机: docker cp containerID:container_path host_path
常见问题
解决jdk不能使用 :source /etc/profile
bash: xxxxx: Permission denied :chmod 777 xxxxx
中文乱码:
1./etc/profile 中添加 export LANG=en_ZW.utf8
2.source /etc/profile
时间时区不正确:
1.ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2./etc/profile 中添加 export TZ=Asia/Shanghai
3.source /etc/profile
资源汇总
https://www.jianshu.com/p/c2719810819e
http://www.runoob.com/docker/docker-tutorial.html
小技巧
docker update --restart always 容器名字
这样设置就是设置每次docker启动的时候,这个容器就会自启动