docker 容器
Docker学习地址:
视频:https://www.bilibili.com/video/av32048704/?p=38
文档:http://www.runoob.com/docker/docker-install-mysql.html
安装Docker教程
建议安装Ubuntu系统,CentOS使用CentOS7,CentOS6支持性不好
Ubuntu 16.04 Server 版安装过程图文详解 https://www.linuxidc.com/Linux/2017-11/148341.htm
知识体系:
1、镜像
相关命令:
docker images(查看所有镜像)
docker pull redis(拉取最新版本的镜像,redis)
docker pull redis:3(拉取指定版本,redis)
利用私服拉取镜像
docker rmi 【镜像名称】(删除镜像)
docker search redis(远程搜索关于redis的镜像)
2、容器
docker ps(查看正在运行的容器)
docker ps -a(查看所有容器)
docker create --name 【容器名称】 -p 【外部暴露端口】:【内部端口】 【镜像名称:版本号】
=》docker create --name redis-container -p 16379:6379 redis:3(创建容器,存储redis镜像)
docker start 【容器名称/容器ID】(启动容器)
=》名称/ID可以不写全,只要能辨认出即可
docker stop 【容器名称/容器ID】(关闭容器)
docker run -d(创建容器,与create命令一致)
=》create创建成功后返回的是ID,而run成功后返回的是日志信息
docker rm 【容器名称/ID】(删除容器)
docker rm 【容器名称/ID】 -f(强制删除容器)
容器相当于一个沙箱,有时我们需要进入容器内做一些操作,比如修改配置文件等;
-it代表-i和-t
-i指打开容器的标准输入(容器跟它有交互,可以输入东西)
-t指分配一个伪终端,并且绑定到容器的标准输入上(我们可以看到一个界面)
docker exec -it 【容器名称/ID】 /bin/bash(进入容器内部)
exit(进入容器内部后的退出命令)
docker logs -f 【容器名称/ID】(查看某容器的日志输出)
=》一般配合start使用,
=》docker start redis && docker logs -f redis
3、数据管理,挂载目录
在create或者run容器时,可以通过-v参数指定主机的目录,挂载到容器中的某一个目录上,这样容器就在这个目录读写数据了。从而实现了容器和数据的分离。
docker pull percona:5.6
docker pull 域名/percona:5.6(私服下载)
docker create --name percona -v /data/mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root123 percona:5.6
(主机目录-容器外部目录:挂载目录-容器内部目录,-e就是指定参数,指定ROOT用户的密码)
=》percona容器虽然可以创建成功,但是启动后在列表中一直看不见
sudo docker run -d percona(创建容器,如果没有镜像,则会自动拉取)
4、构建镜像
docker的镜像必须基于某一个镜像
java -jar -Dport=16868(JVM运行参数)jar包名称 [运行参数:--port=16868]
java -jar -Dport=16868 springcloud-eureka-server-1.0-SNAPSHOT.jar
java -jar springcloud-eureka-server-1.0-SNAPSHOT.jar --port=16890
sudo docker pull java:8
===Dockerfile文件内容===
FROM java:8
COPY ./springcloud-eureka-server-1.0-SNAPSHOT.jar /itcast-eureka/springcloud-eureka-server-1.0-SNAPSHOT.jar
COPY ./app-entrypoint.sh /
RUN chmod +x /app-entrypoint.sh
EXPOSE 3306
ENTRYPOINT ["/app-entrypoint.sh"]
===app-entrypoint.sh文件===
#!/bin/bash
java -jar /itcast-eureka/springcloud-eureka-server-1.0-SNAPSHOT.jar
sudo docker build -t itcast-eureka-container:1.0.0 .(制作镜像,点"."代表当前目录)
docker tag 93e5281934c5 itcast-eureka-image:1.0.0(重命名镜像名称和版本,原来的不会被删除)
sudo docker create --name eureka-server-container -t -p 6868:6868 itcast-eureka-image:1.0.0
sudo docker start eureka-server-container && sudo docker logs -f eureka-server-container
Got permission denied while trying to connect to the Docker daemon socket at unix
备注:
1、sudo是指将ROOT管理员权限赋予其他用户
2、--help(查看某命令的帮助信息)
3、一个容器只能包含一个镜像吗?
4、可以针对一个内部端口,创建多个容器-改变容器名称和外部端口即可,如此一来就可以毫不费劲的装N个Reids了
5、容器删掉后,镜像不会被删除
6、percona是mysql的衍生版-组织优化版本