7.9 KiB
centos 安装 docker
Linux 安装 Docker
安装脚本
一键安装脚本!Linux系统都支持!
curl -sSL https://get.docker.com/ | sh
oracle linxu
- 执行以下命令,以安装Docker依赖项:
sudo yum -y install yum-utils device-mapper-persistent-data lvm2
- 执行以下命令,以添加Docker官方GPG key:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 执行以下命令,以安装Docker CE:
sudo yum install docker-ce
- 启动并设置Docker服务为开机自启:
sudo systemctl start docker
sudo systemctl enable docker
通过docker --version
命令,您可以检查Docker是否已经安装。如果命令输出了版本信息,说明已经成功安装Docker CE。
希望这次能给您提供一个更简洁的方法。
启动服务
# 启动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
#注意EOF前不能有空格
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker 配置代理
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
重启 服务
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
#构建建启动nignx容器
docker-compose up -d nginx
#登录到nginx容器中
docker-compose exec nginx bash
#删除所有nginx容器,镜像
docker-compose down
#显示所有容器
docker-compose ps
#重新启动nginx容器
docker-compose restart nginx
#在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
docker-compose run --no-deps --rm php-fpm php -v
#构建镜像 。
docker-compose build nginx
#不带缓存的构建。
docker-compose build --no-cache nginx
#查看nginx的日志
docker-compose logs nginx
# 查看nginx的实时日志
docker-compose logs -f nginx
#验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose config -q
#以json的形式输出nginx的docker日志
docker-compose events --json nginx
#暂停nignx容器
docker-compose pause nginx
#恢复ningx容器
docker-compose unpause nginx
#删除容器(删除前必须关闭容器)
docker-compose rm nginx
#停止nignx容器
docker-compose stop nginx
# 启动nignx容器
docker-compose start nginx
开发调试
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