Docker 基础
安装docker
对应CentOS 7.3
- 升级yum
yum update
- 安装必须的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置yum源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装docker
yum install docker-ce
- 验证
docker -v
配置镜像拉取地址
修改 /ect/docker/daemon.json,第一次安装docker,并没有这个文件。
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
启动docker
-
启动docker
systemctl start docker -
检查docker启动状态
systemctl status docker -
关闭docker
systemctl stop docker -
重启docker
systemctl restart docker -
开机自启动docker
systemctl enable docker -
docker信息查看
docker -info -
docker在线帮助文档
docker --help
镜像相关
-
查看镜像列表
docker images -
搜索镜像
docker search [name] -
拉取镜像
docker pull [name] -
删除镜像(按照镜像Id删除镜像)
docker rmi [imagesId] -
删除所有镜像
docker rmi `docker images -q`
容器相关命令
-
查看正在运行的容器
docker ps查看所有容器
docker ps -a查看最后一次运行的容器
docker ps -l查看停止的容器
docker ps -f status=exited -
创建启动容器
docker runi: 表示运行容器。
t: 表示容器启动后会进入其命令行。加上这个参数后,容器创建就能登录进去。即分配一个伪终端。
name: 为容器命名。
v: 表示目录映射关系。
d: 创建一个守护容器,这样创建的容器不会自动登录容器,如果只加-i, -t两个参数,创建后就会自动进去容器。
p: 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射。
-
交互式方式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash返回到宿主机(退出当前容器)
exit退出容器,容器会停止。
-
以守护式的方式创建线程
docker run -di --name=容器名称 镜像名称:标签注意:容器名称不能重复
进入容器
docker exec -it 容器名称 /bin/bash退出容器,容器仍然会继续运行
-
启动容器
docker start 容器名称[容器Id] -
停止容器
docker stop 容器名称[容器Id]
文件操作
-
文件复制
将宿主机的文件复制到docker容器中
docker cp [宿主机文件全路径] 容器名称:位置查看时,使用
dir命令查看dir /usr/local将docker容器中的文件复制到宿主机中
docker cp 容器名称:位置 [宿主机文件全路径]
目录挂载
-
创建容器时,指定目录挂载
docker run -di --name=容器名称 -v 宿主机文件目录:容器文件目录 容器名称:位置
查看容器IP地址
-
查看容器运行时的各种数据
docker inspect 容器名称:位置 -
直接获取ip
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称:位置
删除容器
-
删除容器
docker rm 容器名称移除容器之前,容器必须先关闭
容器部署
-
MySQL部署
(1)拉取镜像
docker pull mysql(2)创建容器
docker run -di --name=mysql-1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest注意: 第一次创建mysql容器,需要去修改mysql的登录密码。否则在使用navicat连接mysql时,会出现2059错误
使用navicat连接时,ip地址为宿主机的ip地址,端口号为宿主机映射的端口号。
-
Tomcat部署
(1)拉取镜像
docker pull tomcat(2)创建容器
docker run -di --name=tomcat-1 -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:latest -
Nginx部署
(1)拉取镜像
docker pull nginx(2)创建容器
docker run -di --name=nginx-1 -p 80:80 nginx注意: 配置静态资源资源路径和对应
nginx配置文件的地址 -
Redis部署
(1)拉取镜像
docker pull redis(2)创建容器
docker run -di --name=redis-1 -p 6379:6379 redis
docker 备份与迁移
-
将容器保存为镜像
docker commit 容器名称 镜像名称 -
将镜像备份(导出为文件)
docker save -o 文件名 镜像
-
将镜像文件恢复为docker镜像
docker load -i 文件名
Dockerfile
Dockerfile是由一系列命令和参数构成的脚本,这些 命令应用于基础镜像并最终创建一个新的镜像。
- 对于开发人与:可以为开发团队提供一个完全一致的开发环境;
- 对于测试人员:可以直接拿开发时锁构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作;
- 对于运维人员:在部署时,可以实现应用的无缝移植。
一、 常用命令
| 命令 | 作用 |
|---|---|
| FROM image_name:tag | 定义了使用哪个基础镜像启动构建流程 |
| MAINTAINER user_name | 声明镜像的创建者 |
| ENV key value | 设置环境变量(可以编写多条) |
| RUN command | 是Dockerfile的核心部分(可以编写多条) |
| ADD source_dir/file dest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
| COPY source_dir/file dest_dir/file | 和add相似,但是压缩文件不能被解压 |
| WORKDIR path_dir | 设置工作目录 |
Docker启动RabbitMQ
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
IDEA集成Docker实现镜像打包一键部署
-
Docker 开启远程访问
# 修改该Docker服务器文件 vi /lib/systemd/system/docker.service # 替换ExecStart ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2357 -H unix:///var/run/docker.sock # 重新加载docker配置文件 systemctl daemon-reload # 重启docker systemctm restart docker # 查看2357端口是否启动 netstat -nlpt # 开启2357端口的外部访问 firewall-cmd --zone=public --add-port=2357/tcp --permanent