文章目录
一、docker介绍
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
docker 镜像
https://hub.docker.com/
二、docker linux系统一键安装
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
三、docker服务常用命令
# 停止docker服务
systemctl stop docker
# 开启docker服务
systemctl start docker
# 重启docker服务
systemctl restart docker
# 开机自启docker服务
systemctl enable docker
# 查看docker服务状态
systemctl status docker
四、docker 常用命令
# 版本
docker version
docker info
# 拉取命令
docker pull 镜像名
docker pull redis
docker pull redis:版本号
# 查看镜像列表
docker images
# 查看正在运行的镜像
docker ps
docker ps -a
# 运行镜像
# 参数解析
## -d 挂后台运行
## -p 映射端口 宿主机端口:容器端口
## --rm 关闭容器后自动删除容器
docker run -p 80:80 88736fe82739
## 多端映射
docker run -p 80:80 nginx
# 运行指定版本号
docker run -p 80:80 nginx:1.22.1
# 关闭容器后自动删除容器
docker run --rm -p 80:80 nginx:1.22.1
# docker服务自启
docker run --restart -d -p 80:80 nginx:1.22.1
# 进入镜像
docker exec -it 7a91e6f458bb /bin/bash
# 停止镜像
docker stop name/id
# 删除镜像
docker rmi -f name/id
# 镜像重命名
docker tag id 名称:版本号
如:docker tag 8d28fc6920f9 demo:0.01
# 宿主机传文件到容器
docker cp AdventureWorksDW2019.bak id :/tmp/AdventureWorksDW2019.bak
五、打包镜像命令
# 查看要打包的REPOSITORY(仓库名)
docker images
# 打包镜像,可以移动到其他地方使用
docker save redis > redis.tar
docker save --output redis.tar redis
docker save -o redis.tar redis
# redis:latest REPOSITORY(仓库名):TAG
docker save -o redis.tar redis:7.0.5
# 将打包好的镜像拷贝到新机器上面,执行load命令解压,执行命令
docker load -i redis.tar
docker load < redis.tar
六、使用docker-compose.yml创建启动docker容器
version: '2.1'
services:
mysql888:
image: mysql:latest
restart: always
environment:
- MYSQL_ROOT_PASSWORD=Root123456
ports:
- "13306:3306"
volumes:
- /tmp/mysql:/var/lib/mysql
nginx1:
image: nginx:1.22.1
restart: always
ports:
- "10080:80"
volumes:
- /tmp/nginx:/usr/share/nginx/html:ro
nginx2:
image: nginx:1.22.1
restart: always
ports:
- "10082:80"
volumes:
- /tmp/nginx:/usr/share/nginx/html:ro
nginx3:
image: nginx:1.22.1
restart: always
ports:
- "10083:80"
volumes:
- /tmp/nginx:/usr/share/nginx/html:ro
# 解释
version: '2.1'
services:
# 容器名称
mysql8:
# 要拉取的镜像名称与版本
image: mysql:latest
# docker服务开机自启容器
restart: always
# 环境变量
environment:
- MYSQL_ROOT_PASSWORD=Root123456
# 端口映射 宿主机:容器
ports:
- "13306:3306"
# 挂载目录
volumes:
- /tmp/mysql:/var/lib/mysql
# 第二个容器
nginx 1.22.1:
# 要拉取的镜像名称与版本
image: nginx:1.22.1
# docker服务开机自启容器
restart: always
# 端口映射 宿主机:容器
ports:
- "10080:80"
# 挂载目录 :ro 表示只读 read-only system
volumes:
- /tmp/nginx:/usr/share/nginx/html:ro
七、docker-compose 命令
# create and start
docker-compose up
# stop and remove
docker-compose down
# stop
docker-compose stop