264 lines
5.7 KiB
Markdown
264 lines
5.7 KiB
Markdown
|
||
|
||
# Centos 安装 Docker
|
||
|
||
|
||
|
||
## 安装脚本
|
||
|
||
一键安装脚本!Linux系统都支持!
|
||
|
||
```
|
||
|
||
curl -sSL https://get.docker.com/ | sh
|
||
|
||
#国内阿里云镜像
|
||
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
|
||
|
||
#Azure源(中国区azure)
|
||
curl -fsSL https://get.docker.com | bash -s docker --mirror AzureChinaCloud
|
||
```
|
||
|
||
|
||
|
||
## 启动服务
|
||
|
||
```
|
||
|
||
# 启动docker服务
|
||
systemctl start docker.service
|
||
|
||
# 停止docker服务
|
||
systemctl stop docker.service
|
||
|
||
# 重启docker服务
|
||
systemctl restart docker.service
|
||
|
||
# 查看docker服务当前状态
|
||
systemctl status docker.service
|
||
|
||
# 设置 docker 服务开机自启动
|
||
systemctl enable docker.service
|
||
|
||
# 停止 docker 服务开机自启动
|
||
systemctl disable docker.service
|
||
```
|
||
|
||
|
||
|
||
## 国内镜像
|
||
|
||
为了加速下载镜像文件,国内服务器可以指定国内的镜像!
|
||
|
||
阿里云:https://registry.cn-hangzhou.aliyuncs.com/
|
||
|
||
华为云:https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com/
|
||
|
||
Docker中国:https://registry.docker-cn.com
|
||
|
||
网易:http://hub-mirror.c.163.com
|
||
|
||
中科大:https://docker.mirrors.ustc.edu.cn
|
||
|
||
腾讯云 https://mirror.ccs.tencentyun.com
|
||
|
||
|
||
|
||
### 写入配置文件 重启服务
|
||
|
||
```
|
||
|
||
sudo mkdir -p /etc/docker
|
||
|
||
sudo tee /etc/docker/daemon.json <<-'EOF'
|
||
{
|
||
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
|
||
}
|
||
EOF
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl restart docker
|
||
```
|
||
|
||
|
||
|
||
|
||
|
||
## 迁移目录
|
||
|
||
主要是为了不让Docker镜像,容器占用系统盘的容量!
|
||
|
||
如果就一块盘或者系统盘容量大,这部分内容可忽略!
|
||
|
||
```
|
||
|
||
# 给Docker廋身一下
|
||
#docker system prune
|
||
|
||
#停止Docker服务
|
||
systemctl stop docker
|
||
|
||
#创建目标目录
|
||
mkdir -p /data/docker/
|
||
|
||
#同步源目录文件 -> 目标目录
|
||
rsync -avz /var/lib/docker/ /data/docker
|
||
|
||
#修改Docker配置文件
|
||
vim /etc/docker/daemon.json
|
||
|
||
#修改或者新增内容如下
|
||
{
|
||
"data-root": "/data/docker"
|
||
}
|
||
|
||
#启动Docker服务
|
||
systemctl start docker
|
||
|
||
# 查看是否修改成功
|
||
docker info | grep "Docker Root Dir"
|
||
|
||
#输出:Docker Root Dir: /data/docker 就OK了!
|
||
|
||
```
|
||
|
||
|
||
|
||
## 常用命令
|
||
|
||
```
|
||
#下载镜像
|
||
docker pull nginx
|
||
#启动容器
|
||
#下面命令为启动一个nginx,将服务器的8080 端口 映射到 容器的80端口,且容器命名为nginx-test
|
||
docker run -d -p 8080:80 nginx --name="nginx-test"
|
||
|
||
#停止容器
|
||
docker stop xxxx
|
||
|
||
删除容器
|
||
docker rm id
|
||
|
||
|
||
-f, --force=false 是否强行终止并删除一个运行中的容器
|
||
-l, --link=false :删除容器的连接 ,但保留容器
|
||
-v, --volumes=false :删除容器挂载的数据卷
|
||
|
||
|
||
|
||
删除所有镜像
|
||
docker rmi $(docker images -q)
|
||
#停止所有容器
|
||
docker stop $(docker ps -a -q)
|
||
#删除所有容器
|
||
docker rm $(docker ps -a -q)
|
||
#启动所有容器
|
||
docker start $(docker ps -a -q)
|
||
|
||
|
||
#进入容器
|
||
docker exec -it jd /bin/bash
|
||
docker exec -it jd /bin/sh
|
||
docker exec -it jd /bash
|
||
docker exec -it jd /sh
|
||
|
||
|
||
#宿主往容器中复制文件
|
||
docker cp /etc/apt/sources.list ubuntu:/etc/apt/
|
||
|
||
|
||
#容器中往宿主机复制
|
||
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt
|
||
|
||
|
||
#不进入容器 在容器中执行命令
|
||
docker exec ID 命令
|
||
|
||
#查看容器信息
|
||
docker inspect ID
|
||
|
||
|
||
#查询部分信息
|
||
docker inspect -f {{.Config.Hostname}} id
|
||
```
|
||
|
||
|
||
|
||
## 开发调试
|
||
|
||
### Build Dockerfile
|
||
|
||
```
|
||
|
||
|
||
#比如我们要写一个Dockerfile 该怎么调试呢?
|
||
docker build -t [命名] [编译的目录]
|
||
|
||
#比如:AList目录中有Dockerfile,重新编译镜像,且命名成alist
|
||
docker build -t alist ./AList/
|
||
|
||
#启动 alist
|
||
docker run alist --name="alist"
|
||
|
||
```
|
||
|
||
## 容器目录映射
|
||
|
||
以docker hub的centos:8为研究对象
|
||
|
||
**1、宿主机和容器映射目录都不存在**
|
||
|
||
宿主机和容器映射目录都会自动创建,且在一边操作等同于在另一边操作。
|
||
|
||
**2、宿主机目录不存在,容器映射目录为空。容器中/usr/lib/games目录为空**
|
||
|
||
宿主机映射目录会自动创建,且在一边操作等同于在另一边操作。
|
||
|
||
**3、宿主机目录不存在,容器映射目录不为空。容器中/usr/lib/locale/C.utf8目录不为空**
|
||
|
||
宿主机映射目录会自动创建,容器映射目录中原来的文件都消失了,在一边操作等同于在另一边操作,且操作的是宿主机目录中的文件。
|
||
|
||
|
||
|
||
**4、宿主机映射目录为空,容器映射目录不存在**
|
||
|
||
容器映射目录会自动创建,且在一边操作等同于在另一边操作。
|
||
|
||
**5、宿主机和容器映射目录都为空。**
|
||
|
||
在一边操作等同于在另一边操作。
|
||
|
||
**6、宿主机映射目录为空,容器映射目录不为空**
|
||
|
||
容器映射目录中原来的文件都消失了。在一边操作等同于在另一边操作,且操作的是宿主机目录中的文件。
|
||
|
||
**7、宿主机映射目录不为空,容器映射目录不存在**
|
||
|
||
容器映射目录会自动创建,一进去该目录就能看见宿主机映射目录中的文件,且在一边操作等同于在另一边操作。
|
||
|
||
**8、宿主机映射目录不为空,容器映射目录为空**
|
||
|
||
一进容器映射目录就能看见宿主机映射目录中的文件,且在一边操作等同于在另一边操作。
|
||
|
||
**9、宿主机和容器映射目录都不为空。**
|
||
|
||
容器映射目录中原来的文件都消失了。在一边操作等同于在另一边操作,且操作的是宿主机目录中的文件。
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
## 常见问题
|
||
|
||
容器内没有网 不能解析dns
|
||
|
||
创建时添加以下参数
|
||
|
||
```
|
||
--network=host
|
||
```
|
||
|
||
|
||
|