使用yum安装docker
1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
uname -r
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
sudo yum update
3、卸载旧版本(如果安装过旧版本的话)
sudo yum remove docker docker-common docker-selinux docker-engine
4、安装docker
sudo yum install -y docker
5、设置镜像
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://aj2rgad5.mirror.aliyuncs.com"]
}
6、docker 基础命令
sudo service docker status 状态 #systemctl status docker
sudo service docker start/stop/restart 启动/停止/重启 #systemctl start/stop/restart docker
7、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
sudo docker version
8、启动并加入开机启动
sudo systemctl enable docker
9、docker 镜像操作
1、列出镜像
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/hello-world latest fce289e99eb9 10 months ago 1.84 kB
Repository:镜像所在仓库名称
Tag:镜像版本
Image ID:镜像 ID
Created:镜像创建时间
Size:镜像大小
2、搜索镜像
sudo docker search 镜像名称
docker.io docker.io/tomcat Apache Tomcat is an open source implementa... 2552 [OK]
docker.io docker.io/tomee Apache TomEE is an all-Apache Java EE cert... 69 [OK]
docker.io docker.io/dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 ba... 53 [OK]
docker.io docker.io/bitnami/tomcat Bitnami Tomcat Docker Image 29 [OK]
docker.io docker.io/kubeguide/tomcat-app Tomcat image for Chapter 1 28
docker.io docker.io/consol/tomcat-7.0 Tomcat 7.0.57, 8080, "admin/admin" 16 [OK]
docker.io docker.io/cloudesire/tomcat Tomcat server, 6/7/8 15 [OK]
docker.io docker.io/aallam/tomcat-mysql Debian, Oracle JDK, Tomcat & MySQL 11 [OK]
docker.io docker.io/arm32v7/tomcat Apache Tomcat is an open source implementa... 9
docker.io docker.io/rightctrl/tomcat CentOS , Oracle Java, tomcat application s... 5 [OK]
docker.io docker.io/maluuba/tomcat7-java8 Tomcat7 with java8. 4
docker.io docker.io/unidata/tomcat-docker Security-hardened Tomcat Docker container. 4 [OK]
docker.io docker.io/amd64/tomcat Apache Tomcat is an open source implementa... 2
docker.io docker.io/arm64v8/tomcat Apache Tomcat is an open source implementa... 2
docker.io docker.io/99taxis/tomcat7 Tomcat7 1 [OK]
docker.io docker.io/camptocamp/tomcat-logback Docker image for tomcat with logback integ... 1 [OK]
docker.io docker.io/i386/tomcat Apache Tomcat is an open source implementa... 1
docker.io docker.io/oobsri/tomcat8 Testing CI Jobs with different names. 1
docker.io docker.io/ppc64le/tomcat Apache Tomcat is an open source implementa... 1
docker.io docker.io/appsvc/tomcat 0
docker.io docker.io/cfje/tomcat-resource Tomcat Concourse Resource 0
docker.io docker.io/jelastic/tomcat An image of the Tomcat Java application se... 0
docker.io docker.io/picoded/tomcat7 tomcat7 with jre8 and MANAGER_USER / MANAG... 0 [OK]
docker.io docker.io/s390x/tomcat Apache Tomcat is an open source implementa... 0
docker.io docker.io/secoresearch/tomcat-varnish Tomcat and Varnish 5.0 0 [OK]
NAME:仓库名称
DESCRIPTION:镜像描述
STARS:用户评价,反应一个镜像的受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像由 Docker Hub 自动构建流程创建的
3、拉取镜像
sudo docker pull repository:tag
4、删除镜像
1、指定镜像
sudo docker rmi repository:tag
sudo docker rmi imageID
2、删除所有镜像
sudo docker rmi $(docker images -q)
5、导入导出镜像(镜像迁移)
导出镜像:
sudo docker save repository:tag/imageId > /root/xx.tar.gz
sudo docker save -o mynginx.tar mynginx
-o 输出到的文件
执行后,运行 ls 命令即可看到打成的 tar 包
导入镜像:
docker load < /root/xx.tar.gz
docker load -i mynginx.tar
-i 输入的文件
执行后再次查看镜像,可以看到镜像已经恢复
10、容器操作
1、创建并运行容器
创建容器命令:sudo docker run
创建容器常用的参数说明:
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即
分配一个伪终端。
--name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使
用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后
共享到容器上。
-d:在 run 后面加上-d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会
自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p
做多个端口映射
以交互方式运行容器:
sudo docker run -i -t --name 容器名称 repository:tag /bin/bash
sudo docker run -it --name 容器名称 imageID /bin/bash
以守护进程方式运行容器:
sudo docker run -di --name 容器名称 repository:tag
sudo docker run -di --name 容器名称 imageID
注意:通过 run 创建并进入容器之后,如果使用 exit 命令退出容器,则容器停止。
再次进入该容器,先使用 start 启动容器,再使用 exec/attach 命令进入容器。
2、启动容器
sudo docker start 容器名称或者容器ID
3、进入容器
sudo docker exec -it 容器名称或者容器 ID /bin/bash
sudo docker attach 容器名称或者容器 ID
两者之间的区别:
attach 进入容器之后,如果使用 exit 退出容器,则容器停止。
exec 进入容器之后,使用 exit 退出容器,容器依然处于运行状态
4、查看容器
sudo docker ps :查看正在运行的容器
sudo docker ps -a:查看历史运行过的容器
sudo docker ps -l:查看最近运行过的容器
5、停止容器
sudo docker stop 容器名称或者容器 ID
6、删除容器
删除指定容器:
sudo docker rm 容器名称或者容器 ID
删除所有容器:
sudo docker rm ‘docker ps -a -q’
7、复制文件
sudo docker cp 源文件 目标文件
比如:
docker cp /root/boot.war my-c说明:
/root/boot.war 是宿主机器my-centos 是容器的名称
/usr/local/是容器内的路径
注意:源文件可以是宿主机器器也可以是宿主机器的文件。
11、常用应用安装
1、MySQL
拉取 sudo docker pull mysql:5.6
查看镜像 sudo docker images
创建MySQL容器 sudo docker run -di --name xj-mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=xiaojing mysql:5.6
-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQLROOTPASSWORD 是 root 用户的登陆
进入mysql:sudo docker exec -it xj-mysql /bin/bash
登录mysql:sudo docker xj-mysql -u -root -p
远程登录 进入容器执行:ALTER USER'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xiaojing';
查看容器IP地址 sudo docker inspect xj-mysql
2、Tomact
拉取 sudo docker pull tomcat:8-jre8
创建Tomcat镜像 sudo docker run -di --name=xj-tomcat -p 18080:8080 tomcat:8-jre8
搭建 Tomcat 服务并部署 web 应用
docker run -di --name xj-tomcat -v /root/webapps:/usr/local/tomcat/webapps -d -p 8888:8080 --privileged=true xj-tomcat
说明:
--privileged=true 给docker挂载的权限
-d 后台运行
--name:该参数的作用是给容器起一个名字,名字要唯一。
-v:该参数的作用是进行目录映射,具体指的是宿主机器和容器之间的目录映射。
/opt/webapps:宿主机器的目录
/opt/tomcat/webapps:容器中的目录
-p:该参数的作用是进行端口映射,具体指的是宿主机器和容器之间的端口映射。
8888 端口是宿主机的端口
1、将 war 包上传到宿主机器的/opt/webapps/目录下。
2、tomat 会自动热部署,直接访问 web 应用的路径即可
3、Nginx
拉取 sudo docker pull nginx
创建nginx容器 sudo docker run -di --name=xj-nginx -p 1800:80 nginx /bin/bash
/usr/sbin/nginx
4、Redis
拉取redis sudo docker pull redis
创建Redis容器 sudo docker run -di --name=xj-redis -p 16379:6379 redis --requirepass "xiaojing"
5、RocketMq
拉取 docker pull rocketmqinc/rocketmq
运行nameserver:
docker run -d -p 9876:9876 -v `pwd`/data/namesrv/logs:/root/logs -v `pwd`/data/namesrv/store:/root/store --name rmqnamesrv rocketmqinc/rocketmq sh mqnamesrv
运行broker:
docker run -d -p 10911:10911 -p 10909:10909 -v `pwd`/data/broker/logs:/root/logs -v `pwd`/data/broker/store:/root/store --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
注意点:
/opt/rocketmq-4.4.0/conf/broker.conf 为容器内对应配置文件的路径
为避免端口不可访问的情况,要记得关掉防火墙
通过docker跑起来的broker,其cluster地址默认为docker的ip,外网无法访问需要更改其ip,具体操作见下文。
进入容器内,修改配置文件
docker exec -it broker容器id /bin/sh
进入到容器后: vi /opt/rocketmq-4.4.0/conf/broker.conf
在broker.conf文件内新增brokerIP1属性,即: brokerIP1 = 本机外网ip地址
修改完成后保存退出
重启容器
docker container restart broker容器id // 注:前文运行broker命令中的 -c /opt/rocketmq-4.4.0/conf/broker.conf, 即表示使用此配置文件
部署可视化界面
docker pull styletang/rocketmq-console-ng
docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=本机外网ip:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8001:8080 -t styletang/rocketmq-console-ng
.查看主页http://localhost:8001