容器技术-Docker入门
基础知识
镜像image
- Docker镜像文件(核心文件)
容器container
- image生成运行的实例
仓库repository
-
公共仓库
-
Docker Hub
- 改为国内镜像(阿里云...)
-
C/S架构
基本命令
验证安装
- docker version
- docker info
启动docker服务
- service docker start
- systemctl start docker
搜索
- docker search [镜像名]
image
-
通过image文件才能生成容器,可以生成同时运行的多个容器
-
列出所有image文件
- docker image ls
-
删除image文件
- docker image rm [imagename]
-
拉取image文件
- docker image pull library/hello-world (library可省略)
container
-
image生成容器实例,如果本地仓库没有这个image文件会自动从公共仓库拉取下来
-
docker container run hello-world
- 新建容器
-
docker container start [containerID]
- 运行已生成并且已停止的容器
-
-
容器执行完会自动停止,提供服务的(例如Ubuntu)不会停止
-
手动终止
- docker container kill [containID]
-
-
容器生成后就有两个文件分别是image文件和容器文件,关闭容器不会删除容器文件
-
本机正在运行的容器
- docker container ls
- docker ps
-
所有容器
- docker container ls -all
-
删除容器
- docker container rm [containerID]
-
容器输出(日志)
- docker container log [containerID]
-
进入容器
- docker container exec -it [containerID] /bin/bash
需要推广自己的软件,必须要制作image文件
-
Dockerfile文件
- 配置image,生成二进制image文件
-
制作自己的Docker容器
安装实例
-it、-itd
-
-i
- 交互式操作
-
-t
- 终端
-
-d
- 容器后台运行,默认不会进入容器,需要docker exec 进入
Nginx
-
下载最新镜像
- docker pull nginx:latest
-
运行容器调整端口并在后台运行
- docker run --name nginx-test -p 8089:80 -d nginx
-
验证
- curl 127.0.0.1:8089
Node.js
-
下载最新镜像
- docker pull node:latest
-
运行
- docker run -itd --name node-test node
-
进入容器验证
- docker exec -it node-test /bin/bash
- node -v
MySQL
-
下载最新镜像
- docker pull mysql:latest
-
运行命名设置端口设置root密码
-
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=19971114abc mysql
- -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务
-
-
进入mysql容器
- docker exec -it mysql-test bash
-
登录mysql,查看版本
- mysql -u root -p19971114abc
Tomcat
-
下载镜像
- docker pull tomcat
-
运行设置端口
-
测试
Redis
-
镜像
- docker pull redis:latest
-
运行设置端口
- docker run -itd --name redis-test -p 6379:6379 redis
-
测试
- docker exec -it redis-test /bin/bash
- redis-cil
MongoDB
-
镜像
- docker pull mongo:latest
-
运行设置端口
- docker run -itd --name mongo -p 27017:27017 mongo --auth
-
进入容器
- docker exec -it mongo mongo admin
-
创建一个名为 admin,密码为 123456 的用户。
- db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
-
尝试使用上面创建的用户信息进行连接。
- db.auth('admin', '123456')
微服务
思想
- 软件把任务外包出去,让各种外部服务完成这些任务,软件本身只是底层服务的调度中心和组装层
- 微服务很适合用 Docker 容器实现,每个容器承载一个服务。一台计算机同时运行多个容器,从而就能很轻松地模拟出复杂的微服务架构。