1.Dokcer安装
我使用的是MacOS 10.13版本,通过docker官网下载的docker desktop提示不支持我的系统,因为我的系统太旧了。
因此尝试使用Homebrew来安装,经过一番波折,最终安装成功。安装方式如下:
1.1安装或更新Homebrew
首先安装或更新Homebrew,我运行:
brew update
提示无法连接:Failed to connect to raw.githubusercontent.com port 443: Connection refused
尝试了几种网上提供的方案都无法解决,于是使用Gitee重新安装Homebrew,参考地址:https://gitee.com/cunkai/HomebrewCN
运行脚本:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
会重新安装Homebrew,并把原来的文件备份到桌面上(起一个名为"Old_Homebrew"的文件夹)。
经过这一番折腾,Homebrew总算可以正常使用了。
1.2使用Homebrew下载并安装docker desktop
下面使用Homebrew Cask来安装dokcer,命令如下:
brew cask install docker
下载,安装需要等待一段时间。安装完毕后,系统应用中就有了docker desktop应用程序。
在终端运行查看docker版本的命令:
docker -v
得到信息为:Docker version 20.10.0, build 7287ab3
补充:Ubuntu 18.04系统安装docker的命令:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装过程大概需要1、2分钟。安装完毕后运行查看docker版本的命令docker -v:
得到信息为:Docker version 20.10.10, build b485636
至此,两种操作系统的docker安装成功。
2.docker启动与关闭(ubuntu)
启动dokcer服务:
sudo service docker start
停止docker服务:
sudo service docker stop
重启docker服务:
sudo service docker restart
测试docker服务:
docker run hello-world
3、中央仓库
docker官方中央仓库:https://hub.docker.com/
doaCloud仓库:http://hub.daocloud.io/
配置国内镜像:
# 编辑daemon.json文件,文件不存在则新建 sudo vim /etc/docker/daemon.json # 在daemon.json文件中配置网易云地址 # 阿里云需要注册云账户 # 中科大速度较慢,且部分docker镜像会安装失败 # 七牛的速度也较慢 # 综上:选择网易云镜像地址 # 注意事项: 请将https改为http,由于https含有ssl加密机制,所以http速度能快些 {"registry-mirrors":["http://hub-mirror.c.163.com/"]} # 重新加载daemon文件 sudo systemctl daemon-reload # 重启docker服务 sudo systemctl restart docker.service # 查看是否配置成功 sudo docker info
4、docker命令
4.1镜像相关命令:
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
本文下载镜像使用http://hub.daocloud.io/下载镜像。
(1)下载镜像:
docker pull ubuntu:13.10
命令解释:镜像名称:版本号,如果不采用默认的镜像站点,而是指定镜像(daocloud镜像源),可以使用如下格式:
docker pull daocloud.io/library/tomcat:8.5.15-jre8
(2)列出镜像列表:
docker images
(3)删除镜像:
docker rmi 镜像id(IMAGE ID)
(4)镜像导入/导出:
将本地镜像导出:
#导出
docker save -o 导出路径 镜像id
#导入
dokcer load -i 导入路径
#修改镜像名称(NAME)和版本(TAG)
docker tag 镜像id 名称:版本
4.2容器相关命令:
容器就是运行起来的镜像,我个人将其理解为为镜像文件创建了一个虚拟光驱。(一个镜像文件可以创建多个虚拟光驱)
(1)运行容器:
#简单命令
docker run 镜像id|镜像名称[:版本]
#常用参数
docker run -d -p 80:80 docker/getting-started
docker run -d -p 9000:8080 --name tomcat b8dfe9ade316
命令解释:
-d:后台执行,
-p:指定端口 宿主机端口:容器端口。
详细说明9000是安装docker镜像和容器的[物理]机器的端口,也是外部访问的端口,可以任意修改。
8080是docker内部的端口,比如tomcat的默认端口是8080,不能随意修改,否则就无法访问。
--name:容器名称,
-i :交互式操作,
-t:终端
/bin/bash:进入容器的bash
(2)查看容器列表:
docker ps [-aq]
命令解释:
默认无参数:列出所有运行的容器
-a:列出所有容器,包括没运行的
-q:只列出容器id
(3)查看容器日志:
docker logs -f 容器id
名称解释:
-f:滚动查看日志最后内容
(4)进入到容器内部:
docker exec -it 容器id /bin/bash
(5)删除容器:(删除容器之前需要先停止容器)
#停止容器 dokcer stop 容器id #停止全部容器 docker stop $(docker ps -qa) #删除指定容器 docker rm 容器id #删除全部容器 docker rm $(docker ps -qa)
(6)启动容器:
docker start 容器id
(7)将宿主机的文件复制到容器内:
docker cp 宿主机文件路径 容器id:容器内部文件路径
(8)数据卷Volume:将宿主机的目录映射到容器中的目录中,可以在宿主机中直接管理容器中的文件
创建数据卷:
docker volume create 数据卷名称 #创建数据卷之后,默认会存放在: /var/lib/docker/volumes/数据卷名称/_data
查看数据卷信息:
docker volume inspect 数据卷名称
查看全部数据卷:
docket volume ls
删除数据卷:
docker volume rm 数据卷名称
数据卷的使用:
#当映射数据卷时,如果原来不存在,则会自动创建 docker run -v 数据卷名称:容器内路径 镜像id #指定一个路径作为数据卷的存放位置 docker run -v 宿主机路径:容器内路径 镜像id
5、实际操作
5.1 下载并运行一个mysql镜像:
docker run -d -p 3307:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root daocloud.io/library/mysql:5.7.4
可以使用宿主机ip:3307端口访问到这个docker内部的数据库,并设置其root账户的密码为root。
5.2 将一个Spring MVC的war包项目部署到docker中的tomcat下:
docker cp MVCDemo.war 74:/usr/local/tomcat/webapps/
访问地址为:http://xxxx:9000/MVCDemo/
5.3 启动一个tomcat,并指定数据卷
docker run -d -p 9000:8080 --name tomcat -v tomcat_volume:/usr/local/tomcat/webapps b8dfe9ade316
这样只需修改宿主机下/var/lib/docker/volumes/tomcat_volume/_data/ 目录下的文件,即可管理docker容器内tomcat下的war包。