1、简介
Docker是一个开源的应用容器引擎;是一个轻量级容器技术;
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;
运行中的这个镜像称为容器,容器启动是非常快速的。
2、核心概念
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker客户端(Client):连接docker主机进行操作;
docker仓库(Registry):用来保存各种打包好的软件镜像;
docker镜像(Images):软件打包好的镜像;放在docker仓库中;
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
3、安装Docker
1 检查内核版本,必须是3.10及以上
uname -r
2 使用 root 权限登录 Centos。确保 yum 包更新到最新(不然运行会报错)
yum update
3 安装依赖
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
4 安装docker
yum install docker
5 查看docker版本
docker version
6 启动docker
systemctl start docker
7 设置docker开启启动
systemctl enable docker
8 测试安装效果
Docker的简单运用---Hello World
将名为 hello-world 的 image 文件从仓库抓取到本地。
docker pull hello-world
运行
docker run hello-world
正确的效果:
9 关闭docker
systemctl stop docker
10 重启Docker
service docker restart
4、Docker常用命令&操作
4.1 镜像操作
4.2、容器操作(安装mysql为例)
-
搜索镜像
docker search mysql
-
拉取镜像(下载)
docker pull mysql 若需要选择版本则如: docker pull mysql:8.0
-
启动(做了端口映射)
docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql ---------- mysql02:设置的容器名称,可自行设置。 -p:将容器内部使用的网络端口映射到我们使用的主机上。 -d:让容器在后台运行 设置 root 用户默认密码是 123456
-
进入容器
docker exec -it 容器ID /bin/bash
-
登录mysql
mysql -uroot -p123456
-
mysql远程登录相关
Navicat 远程连接报错: 进行授权远程连接(注意mysql 8.0跟之前的授权方式不同) 授权 GRANT ALL ON *.* TO 'root'@'%'; 刷新权限 flush privileges 此时,还不能远程访问,因为Navicat只支持旧版本的加密,需要更改mysql的加密规则 更改加密规则 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; 更新root用户密码 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 刷新权限 flush privileges; OK,设置完成,再次使用 Navicat 连接数据库
-
其他容器常用命令:
1.查看运行中的容器 docker ps 2. 停止运行中的容器 docker stop 容器的id 3.查看所有的容器 docker ps -a 4.启动容器 docker start 容器id 5.删除一个容器 docker rm 容器id 6.查看容器的日志 docker logs container-name/container-id 7.查看容器的日志 docker logs container-name/container-id 8.更多命令参看 https://docs.docker.com/engine/reference/commandline/docker/
4、卸载docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
5、Dockerfile
直接看这篇文章吧
作者:百衲本
Dockerfile文件详解
中文文档:http://www.dockerinfo.net/doc...
Dockerfile安装jdk
1.官网下载jdk
2.上传到服务器,并解压
3.在解压jdk的同级目录新建一个Dockerfile文件,文件内容为:
#images 基础镜像
FROM centos
#MAINTAINER 作者信息
MAINTAINER chy
#把自己解压的java目录复制到容器的目录中
ADD jdk1.8.0_211 /work/java
#配置环境变量
ENV JAVA_HOME /work/java
ENV CLASSPATH .:$JAVA_HOME/lib.tools.jar
ENV PATH $JAVA_HOME/bin:$PATH
4、运行安装命令
直接本目录执行(上图相同目录)
docker build -t jdk:8 .
#jdk:8 设置image的名称、标签
#. 表示Dockerfile在当前文件夹下,也可使用绝对路径来表示
5.成功,查看镜像
6.运行创建的镜像
[root@localhost java]# docker run -p 80:80 -d -it e0f4d74150fe /bin/bash
22d7228521019c7ccc275a1a59890e5f10917b2432d675700b7d2ea390e57c6e
注意:创建容器的时候一定要使用 -it /bin/bash这种方式,要不然jdk的容器运行不起来。
打开80端口,因为你的项目jar可能是80端口,一定要注意防火墙。
如果运行报类似这样的错误
COMMAND_FAILED: '/sbin/iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -j DNAT --to-destination 172.17.0.6:80
! -i docker0' failed: iptables: No chain/target/match by that name.
那就执行以下命令,成功后并再次创建容器
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
重启docker后解决 service docker restart
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ycl111/article/details/49028965
7.进入容器,查看java版本
[root@localhost java]# docker exec -it 22d722852101 /bin/bash
[root@22d722852101 /]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
那我们如何把jar项目发布的jdk容器并运行启动呢?
1. 把项目jar上传到实体机
2. 把实体机上面的jar,复制到容器内如:docker cp /usr/local/java/blog 30752fd727f1:/usr/local/java/
/usr/local/java/blog :实体机jar文件的目录
/usr/local/java/ :需要先进入容器,在容器内创建了这样一个目录: mkdir -p /usr/local/java
30752fd727f1: 容器id,一定要跟上 :
3. 然后在容器里面执行java -jar命令就好了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。