Docker Reference Documentation
Docker 从入门到实践 【中文】
安装安装 Docker,设置开机启动,然后配置阿里云镜像加速
1. 安装 DockerDocker 官方安装
CentOS 官方安装教程,直接安装速度相对慢,推荐使用 :
curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun # 开机启动 docker sudo systemctl enable docker # 启动 docker sudo systemctl start docker 2. 阿里云镜像加速注意!registry-mirrors 需要替换成自己的 阿里云镜像加速器地址,通过点击地址获取
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["这里替换成自己的阿里云镜像加速器地址"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker Docker CLICLI 是 Command-Line Interface (命令行界面)的缩写
命令详情可以参考官方文档:Docker Reference Documentation
这里通过几个场景,把 Docker 先用起来
场景0:Tomcat # 输入 docker 回车,docker 的命令会被罗列出来,便于查询 docker # 查询有那些 MySQL 镜像 docker search tomcat相对于直接search,使用搜索 Docker Hub 更方便
搜索 Tomcat
可以看到相关的镜像介绍、使用帮助、历史版本:Tomcat
可以按照文档中的 "How to use this image" 的提示来运行镜像
# 拉取 tomcat 镜像 docker pull tomcat:8.0-jre8 # 查看镜像列表,可以看到 tomcat 镜像,该命令等特于:docker image ls docker images # 运行tomcat 镜像 docker run tomcat:8.0-jre8 # 前台运行,会输出 tomcat 日志 # 按 Ctrl + C 停止 # 添加 -d 后台运行参数 docker run -d tomcat:8.0-jre8 # 查看容器列表,可以查看到容器的id、镜像(IMAGE)、状态(STATUS)、网络端口(PROT)、容器名称(NAME)等信息 docker ps # 查看 tomcat 日志,这里的 `clever_swanson` 为容器id或名称 docker logs clever_swanson # 查看容器内部进程信息 docker top clever_swanson # 进入容器 # i 和 t 参数可以让我们以伪终端的方式进入容器 # bash 是所使用 shell docker exec -it clever_swanson bash # 在容器内可以使用 Linux 命令 # 退出容器,回到宿主机(宿主机就是安装 Docker 的这台机器) exit # 不需要容器了,可以停止容器 docker stop clever_swanson # 查看容器列表,tomcat 就隐藏了 docker ps # -a 参数查看全部所有容器的列表(包括停止的 tomcat) docker ps -a # 启动已经停止的容器 docker start clever_swanson # 删除容器,如果容器还在运行需要加 -f 参数 docker rm clever_swanson docker rm -f clever_swanson # 删除了容器,就可以把镜像也删除了,如果有容器还是该镜像需要加 -f 参数 docker rmi tomcat:8.0-jre8 docker rmi -f tomcat:8.0-jre8 场景1:Tomcat只是将 Tomcat 容器 run 起来,还是无法满足使用
还需要将容器网络端口映射到宿主机才可以使得外部可以访问容器内部服务
为了方便还需要把 Tomcat 的数据目录和配置目录挂载到宿主机,方便直接进行编辑
可参考官方文档:Tomcat
# 部署 Tomcat # run 容器时,本地不存在对应镜像,会自动 pull # -p 将容器内的网络端口映射到宿主机 ,8080:8080 前面为宿主机,后面为容器 # --name 指定容器名称 docker run -p 8080:8080 -d --name mytomcat tomcat:8.0-jre8 # 可以通过 docker 的子命令对 容器进行操作,比如:ps,exec,top,stop # 这个容器已经占用了宿主机的 8080 端口,为了后续的 Tomcat 可以绑定到宿主机的 8080 端口,所以将 这个容器 stop docker stop mytomcat # 通过数据卷的方式 将容器内的数据映射到宿主机 # 语法:- v 数据卷名称:容器内目录 # Tomcat 部署的 web应用目录:/usr/local/tomcat/webapps # 配置文件:/usr/local/tomcat/conf docker run -p 8080:8080 -v apps:/usr/local/tomcat/webapps -v confs:/usr/local/tomcat/conf -d --name mytomcat2 tomcat:8.0-jre8这个时候 Tomcat 已经启动了,可以通过 宿主机:8080 来访问 Tomcat 的默认主页,例如我的访问地址 :8080 ,看到汤姆猫的图标就成功了。如果访问失败,可能是对应的 8080 端口没有开放,CentOS7 可以参考:CentOS7开启端口
场景2:MySQL可参考官方文档:MySQL
# 通过 -e 指定参数,指定 MySQL 的 root 账户的密码为:1234 docker run --name mysql -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 -d mysql:5.7.32 # 停止容器,防止端口占用 docker stop mysql # 数据库的数据将会随着容器消失而消失,所以需要将数据库文件持久化到宿主机, # 配置映射到本地 docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 -d -v mysqldata:/var/lib/mysql -v mysqlconfig:/etc/mysql mysql:5.7.32MySQL 就成功运行了,可以通过 Navicat 或者其他工具测试数据库,地址为宿主机 ip地址,用户名为 root,密码为:1234,可以尝试存储数据,数据会被存储在数据卷,这里指定的数据卷名称为:mysqldata
# 查看所有数据卷 docker volume ls # 查看 MySQL 的数据卷 docker inspect mysqldata # 返回的 json 对象,其中 Mountpoint 的值就是,文件对应挂载的位置 # 我这里挂载的地址为:/var/lib/docker/volumes/mysqldata/_data # 进入这个目录,就可以看到存储的文件