一Docker安装与启动
- 1.1说明
Docker是基于Ubuntu发布的, 官方建议在Ubuntu中安装, 很多版本的CentOS是不支持更新最新的一些补丁包的
但是个人喜欢用CentOS, 所以一系列操作均在CentOS7 以上版本操作
- 1.2安装Docker
a. yum包更新到最新
sudo yum update
b. 安装需要的软件包, yun-util提供yun-config-manager功能, 另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
c. 设置yun源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
d. 安装Docker
sudo yum install docker-ce
e. 安装后查看docker版本
docker -v
- 1.3设置ustc镜像
ustc是老牌Linux镜像服务提供者, ustc的docker镜像加速器速度很快, ustc docker mirror的优势之一就是不需要注册, 是真正的公共服务, https://lug.ustc.edu.cn/wiki/mirrors/help/docker
a. 编辑文件
vim etc/docker/daemon.json
b. 在文件中输入如下内容
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
- 1.4Docker的启动与停止
a. 启动docker
systemctl start docker
b. 停止docker
systemctl stop docker
c. 重启docker
systemctl restart docker
d. 查看docker状态
systemctl status docker
e. 开机启动
systemctl enable docker
f. 查看docker概要信息
docker info
g, 查看docker帮助文档
docker --help
二Docker常用命令
2.1 镜像相关命令
- 2.1.1查看镜像
docker images
Repository: 镜像名称 Tag: 镜像标签 Imageid: 镜像ID Created: 镜像的创建日期(不是获取该镜像的日期) Size: 镜像大小 这些镜像是存储在Docker宿主机的/var/lib/docker目录下
- 2.1.2搜索镜像
docker search 镜像名称
Name: 仓库名称 Description: 镜像描述 Stars: 用户评价, 反应一个镜像的受欢迎程度 Official: 是否官方 Automated: 自动构建, 表示该镜像由Docker Hub自动构建流程创建的
- 2.1.3拉取镜像
docker pull 镜像名称 docker pull tomcat:8
拉取镜像就是从中央仓库中下载镜像到本地
- 2.1.4删除镜像
按照镜像ID删除镜像: docker rmi 镜像ID
删除所有镜像: docker rmi `docker images -q`
2.2 容器相关命令
- 2.2.1查看容器
查看正在运行的容器: docker ps
查看最后一次运行的容器: docker ps -l
查看所有容器: docker ps -a
查看停止的容器: docker ps -f status-exited
- 2.2.2创建和启动容器
创建容器命令: docker run -i: 表示运行容器 -t: 表示容器启动后会进入其命令行 加入这两个参数后, 容器创建就能登陆进去, 即分配一个伪终端 --name: 为创建的容器命名 -v: 表示目录映射关系(前者是宿主机目录, 后者是映射到宿主机上的目录), 可以使用多个-v 做多个目录或文件映射, 注意: 最好做目录映射, 在宿主机上做修改, 然后共享到容器上. -d: 在run后面加上-d参数, 则会创建一个守护式容器在后台运行(这样创建容器后不会自动登陆容器, 如果只加-i -t 两个参数, 创建后会自动进去容器) -p: 表示端口映射, 前者是宿主机端口, 后者是容器内的映射端口, 可以使用多个-p做多个端口映射 -e 表示设置环境变量
交互式方式创建容器: docker run -it --name-容器名称 镜像名称:标签(就是TGA) /bin/bash 说明: 通过命令ps 查看, 容器处于启动状态 退出当前容器: exit
交护式方式创建容器效果图: [root@localhost ~]# docker run -it --name==mycentos centos:7 /bin/bash [root@3559349be60 ~]# 说明: 出现以上表示进入到了容器中; centos:7后面的tag, 如果是latest可以不写; 使用ll命令可查看目录.
守护式方式创建容器: docker run -di --name=容器名称 镜像名称:标签 登陆守护式容器方式: docker exec -it 容器名称(或者容器id) /bin/bash
- 2.2.3停止和启动容器
docker start 容器名称(或者容器ID) docker stop 容器名称(或者容器ID)
- 2.2.4文件拷贝
需要将文件拷贝到容器中可以使用cp命令 docker cp 需要拷贝的文件或者目录 容器名称:容器目录 也可以将文件从容器内拷贝出来 docker cp 容器名称:容器目录 需要拷贝的文件或目录
- 2.2.5目录挂载
说明: 宿主机目录与容器目录映射, 当修改任意一方目录及其文件的时候, 另一方目录也会发生相应改变 docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos centos:7
- 2.2.6查看容器IP地址
查看容器的所有数据: docker inspect 容器名称(或者容器ID) 也可以从所有数据中进行筛选, 如下我要筛选容器IP地址: docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(或者容器ID)
三应用部署
- MySQL部署
拉取mysql镜像: docker pull mysql:8 创建容器: docker run -di --name=mysql_1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8 进入容器: docker exec -it mysql_1 /bin/bash 登陆mysql: mysql -u root -p
- Tomcat部署
docker pull tomcat:8 docker run -di --name=mytomcat -p 8500:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:8 因为设置了目录映射, 此时访问是没有东西的, 需要把项目放到宿主机/usr/local/webapps下面 访问: localhost:8500/项目访问路径
- Nginx部署
docker pull nginx docker run -di --name=mynginx -p 80:80 nginx
nginx更改自己的html页面: 1. 查看nginx的配置: cd /etc/nginx/ cat nginx.conf 此时可以看到nginx的基本配置, 如下有一部分: ... http { ... include /etc/nginx/conf.d/*.conf; } ... 以上include表示, nginx有可以多个配置文件, 通过include进行导入 2. 进入到*.conf所在目录, 查看该文件: cd /etc/nginx/conf.d/ cat default.conf 部分信息如下: server{ ... location / { root /usr/share/nginx/html; } ... } 3. 以上html文件夹就是访问nginx的初始页面所在地方, 可以把自己的页面所在文件夹直接覆盖nginx 4. 对于一个web项目, 可以配置tomcat到nginx
- Redis部署
docker pull redis docker run -di --name=myredis -p 6379:6379 redis
-
同步容器和宿主机的时间
docker cp /etc/localtime {container名称}:/etc/localtime