一、安装docker:
删除: yum -y remove docker
安装:yum -y install docker
启动:systemctl start docker (centos7命令)
开机自启动:systemctl enable docker
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
二、Docker镜像:
查看已经拉取的镜像:docker images
搜索镜像:docker serach xxx
拉取镜像:
1.从 docker hub 拉取
Docker Hub 的网址:https://hub.docker.com
命令:docker pull centos:7
Docker Hub 是 docker 默认的公用 Registry,不过缺点是国内下载会比较慢
2.从 ustc 拉取(建议使用)
在宿主机器编辑文件(centos7 不支持 vim 命令,但是支持 vi 命令):
vi /etc/docker/daemon.json
请在该配置文件中加入(没有该文件的话,请先建一个):
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }
最后,需要重启 docker 服务
systemctl restart docker
之后再使用 pull 命令拉取镜像,这时候是从 ustc 获取镜像,而且速度杠杠的。
docker pull centos:7
删除镜像:
1.删除指定镜像 :
docker rmi repository:tag
docker rmi imageID
2.删除所有镜像:
docker rmi $(docker images -q)
三、Docker容器
创建并运行容器
创建容器命令:
docker run
创建容器常用的参数说明:
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。
--name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
-d:在 run 后面加上-d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会 自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
以交互方式运行容器:
docker run -i -t --name 容器名称 repository:tag /bin/bash docker run -it --name 容器名称 imageID /bin/bash
以守护进程方式运行容器:
docker run -di --name 容器名称 repository:tag docker run -di --name 容器名称 imageID
注意 :通过 run创建并进入容器之后 ,如果使用 exit命令 退 出 容 器 ,则 容 器 停 止 。
再次进入该容器 , 先使用 start启动容器 , 再 使用 exec/attach命令 进入容器 。
启动容器
docker start 容器名称或者容器 ID
进入容器
进入正在运行的容器的命令如下:docker exec -it容器名称或者容器 ID /bin/bash
docker attach容器名称或者容器 ID
两者之间的区别 :attach 进入容器之后 , 如果使用 exit退出容器 , 则容器停止 。
exec进入容器之后 , 使用 exit退出容器 , 容器依然处于运行状态 。
查看容器
docker ps :查看正在运行的容器
docker ps -a:查看历史运行过的容器
docker ps -l:查看最近运行过的容器
停止容器
docker stop容器名称或者容器 ID
删除容器
删除指定容器:
docker rm 容器名称或者容器 ID
删除所有容器:
docker rm ‘docker ps -a -q’
docker rm $(docker ps -a -q)
复制文件
docker cp 源文件 目标文件
比如 :docker cp /root/boot.war my-centos:/usr/local/
说明 :/root/boot.war是宿主机器的路径
my-centos是容器的名称
/usr/local/ 是容器内的路径
注意:源文件可以是宿主机器也可以是容器中的文件,同样,目标文件可以是容 器也可以是宿主机器的文 件。
四、Docker 应用
MySQL 部署
5.1.1 拉取 MySQL 镜像
docker pull mysql:5.6
查看镜像 docker images
5.1.2 创建 MySQL 容器
docker run -di --name kkb_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.6
docker run -di --name mysql57 -p 3333:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
-p 代表端口映射,格式为 宿主机映射端口:容器运行端口 -e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是 root 用户的登陆密码
外挂数据和配置文件
docker run --name mysql5.7 -p 33333306 -v/data/MySQL/datadir:/var/lib/mysql -v /data/MySQL/conf.d:/etc/mysql/conf.d -eMYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
5.1.3 进入 MySQL 容器,登陆 MySQL
进入 mysql 容器 docker exec -it kkb_mysql /bin/bash 登陆 mysql mysql -u root -p
5.1.4 远程登陆 MySQL
5.1.5 查看容器 IP 地址
我们可以通过以下命令查看容器运行的各种数据 docker inspect kkb_mysql 运行效果如下:
我们可以看到我们的数据库服务器的 IP 是 172.17.0.2
tomcat 部署
5.2.1 拉取 tomcat 镜像
docker pull tomcat:7-jre7
5.2.2 创建 tomcat 容器
创建容器 -p 表示地址映射 docker run -di --name=kkb_tomcat -p 9000:8080 tomcat:7-jre7
Nginx 部署
5.3.1 拉取 Nginx 镜像
docker pull nginx
5.3.2 创建 Nginx 容器
docker run -di --name=kkb_nginx -p 9080:80 nginx /bin/bash
/usr/sbin/nginx
5.3.3 测试 Nginx
浏览器地址栏输入: http://192.168.247.135
Redis 部署
5.4.1 拉取 Redis 镜像
docker pull redis
5.4.2 创建 Redis 容器
docker run -di --name=kkb_redis -p 16379:6379 redis
连接
docker exec -it redis16379 redis-cli
5.4.3 客户端测试
在你的本地电脑命令提示符下,用 window 版本 redis 测试 redis-cli -h 192.168.247.135
搭建 Tomcat 服务并部署 web 应用
docker run -di --name my-tomcat -v /root/webapps: /usr/local/tomcat/webapps -p 8888:8080 imageID
docker run -ti --name my-tomcat -v /opt/webapps:/opt/tomcat/webapps -p 8888:8080 imageID /bin/bash
容器内的 tomcat
目录 : /usr/local/tomcat/webapps
docker run -di --name my-tomcat -v /kkb/webapps:/usr/local/tomcat/webapps -p 8888:8080 --privileged=true tomcat:7-jre7
说明:
--name : 该参数的作用是给容器起一个名字 , 名字要唯一 。
-v :该 参 数 的 作 用 是 进 行 目 录 映 射 ,具 体 指 的 是 宿 主 机 器 和 容 器 之 间 的 目 录 映 射 。
/opt/webapps : 宿主机器的目录
/opt/tomcat/webapps : 容器中的目录
-p :该参数的作用是进行端口映射 ,具体指的是宿主机器和容器之间的端口映射 。
8888 端口是宿主机的 端口
8080
端口是容器内的端口
1、将 war 包上传到宿主机器的/opt/webapps/目录下。 2、tomat 会自动热部署,直接访问 web 应用的路径即可。
6 制作镜像
纯手工制作镜像
需求:制作一个 tomcat 镜像。
步骤: 1、下载基础镜像(centos7) docker pull centos:7
2、安装 64 位 jdk(注意:jdk 要和 os 的位数一致)
vi /etc/profile
export JAVA_HOME=/opt/jdk export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
3、安装 tomcat
略
4、生成新的镜像
docker commit
容器名称 或者容器 ID
新镜像名称