安装docker(虚拟机里linux下)
- 安装docker
yum install docker
- 启动docker
systemctl start docker
- 查看docker版本
docker -v
- 将docker设置为开机启动
systemctl enable docker
- 停止docker
systemctl stop docker
镜像操作
- 启动docker
systemctl start docker
- 搜索镜像
docker search mysql #搜索mysql镜像
- 拉取(下载)镜像
#mysql:5.5。镜像:标签,标签不写默认是最新
Docker pull mysql:5.5
- 查看拉取的镜像
docker images
- 删除镜像
docker rmi 镜像ID
根据dockerfile构建镜像
- 编写dockerfile,开始构建镜像
# . 表示当前目录,当前目录下有Dockerfile
docker build . -t springboot-app:v1
- 将本地镜像打标签,推送远端仓库
# 推送远端仓库,镜像名要用远端仓库的名字(路径)
docker tag springboot-app:v1 harborxx.xx.com/production/springboot-app:v1
docker push harborxx.xx.com/production/springboot-app:v1
# 可能需要登录harborxx.xx.com(官方hub.com的登录,只需docker login命令即可)
docker login -u username -p password harborxx.xx.com
- 可启动容器验证
# 映射端口,外部可通过1601端口访问
docker run -d -p 1601:1601 springboot-app:v1
- 查看所有容器
docker ps -a
容器操作
软件镜像(类似QQ.exe安装程序)–运行镜像–产生一个容器(正在运行的软件,类似正在运行的QQ)
- 搜索镜像
docker search tomcat
- 拉取镜像
docker pull tomcat
- 根据镜像启动容器
#mytomcat 是自定义的启动的容器的名字(也可以不指定随机生成),tomcat:latest是要启动的镜像名称:标签,-d表示后台运行
docker run --name mytomcat -d tomcat:latest
- 查看运行中的容器(可以查看容器启动的端口)
docker ps
- 停止容器
docker stop 容器ID
- 查看所有容器,可以查看所有容器,也可以列出已经停止的容器
docker ps -a
- 启动容器
docker start 容器ID
- 删除容器(需要先停止容器)
docker rm 容器ID
以交互式模式启动容器
交互模式类似进入容器内部以shell命令操作:
- 根据镜像启动容器时,就直接进入交互式模式
docker run -it tomcat:latest
- 退出交互模式,退出时就停止了容器
exit
- 启动一个容器,只是启动不能进入交互模式
Docker start 容器ID
- 启动后在进入交互模式
docker exec -it 容器ID bash
启动一个可以外部访问的容器
启动一个可以外边访问的容器,需要端口映射(把主机端口映射到容器内部端口)
- 根据镜像启动容器
#容器启动的端口是8080,-p可以把主机的8888端口映射到容器的8080端口,主机端口:容器端口
docker run -d -p 8888:8080 tomcat:latest
- 在外边主机上访问容器
访问http://主机ip:8888即可
- 前提需要关闭Linux防火墙
Service firewalld status #查看防火墙状态
Service firewalld stop#关闭防火墙
- 查看容器日志
docker logs 容器ID
- 一个镜像可以启动多个容器
docker run -d -p 8888:8080 tomcat:latest
docker run -d -p 8889:8080 tomcat:latest
docker run -d -p 8887:8080 tomcat:latest
启动需要带参数的容器
若启动mysql容器使用:docker run --name mysql01 -d mysql:latest,,然后Docker ps -a 查看会发现启动状态是exited,异常退出的,,然后用docker logs 容器ID 查看日志,提示:error:database is uninitialized and password option is not specified。 You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD。。。
原因是mysql需要配置密码参数项
- 带密码参数启动mysql(不带-p的话也不能用,不能访问)
docker run --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
#这样在外面主机连接mysql容器就可以连接上,正常使用mysql数据库