离线安装Docker并使用

docker操作手册

离线安装docker:

下载地址:https://download.docker.com/linux/static/stable/x86_64/

选择合适的版本:本次选择( docker-19.03.10 )

上传并解压文件:

[root@docker home]# tar -zxvf docker-19.03.10.tgz 
docker/
docker/ctr
docker/docker
docker/containerd
docker/docker-proxy
docker/runc
docker/docker-init
docker/containerd-shim
docker/dockerd

解压的docker文件夹全部移动至/usr/bin目录

cp -p docker/*  /usr/bin

将docker注册为系统服务

在/usr/lib/systemd/system/目录下,创建docker.service文件

vi /usr/lib/systemd/system/docker.service

复制内容到docker.service中

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
[Service]
Type=notify
EnvironmentFile=-/run/flannel/docker
WorkingDirectory=/usr/local/bin
ExecStart=/usr/bin/dockerd \
                -H tcp://0.0.0.0:4243 \
                -H unix:///var/run/docker.sock \
                --selinux-enabled=false \
                --log-opt max-size=1g
ExecReload=/bin/kill -s HUP $MAINPID
#Having non-zero Limit*s causes performance problems due to accounting overhead
#in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
#Uncomment TasksMax if your systemd version supports it.
#Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
#set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
#kill only the docker process, not all processes in the cgroup
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

☆处理docker run 权限问题:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"write /proc/self/attr/keycreate: permission denied\"": unknown.
关闭电脑的selinux

修改/etc/selinux/config文件中的SELINUX=“” 为 disabled ,然后重启。
不想重启就使用这条命令
setenforce 0
或者使用命令

sed -i 's/enforcing/disabled/'  /etc/selinux/config
setenforce  0

重新加载配置文件

systemctl daemon-reload

启动docker

systemctl start docker

查看docker启动状态

systemctl status docker

查看docker版本

docker version

设置docker开机自启

systemctl enable docker

一、docker基础命令

1、搜索镜像 (OFFICIAL:代表官方发布)

docker search [镜像名称]

#例如:
[root@centos7 conf]# docker ps
NAME                                DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
redis                               Redis is an open source key-value store that…   12285     [OK]       
redislabs/redisearch                Redis With the RedisSearch module pre-loaded…   57                   
redislabs/redisinsight              RedisInsight - The GUI for Redis                 91                   
redislabs/rebloom                   A probablistic datatypes module for Redis        24                   [OK]
redislabs/redis                     Clustered in-memory database engine compatib…   38                   
redis/redis-stack-server            redis-stack-server installs a Redis server w…   54                   
redislabs/rejson                    RedisJSON - Enhanced JSON data type processi…   53                   
redis/redis-stack                   redis-stack installs a Redis server with add…   63                   
redislabs/redisgraph                A graph database module for Redis                26                   [OK]
redislabs/redismod                  An automated build of redismod - latest Redi…   41                   [OK]
redislabs/redistimeseries           A time series database module for Redis          12                   
redislabs/operator                                                                   7                    
redislabs/operator-internal         This repository contains pre-released versio…   1                    
redislabs/redis-py                                                                   5                    

2、拉取镜像

docker pull [镜像名称]:[镜像版本]

3、查看镜像

docker images
docker images -a

#例如:
[root@centos7 conf]# docker images -a
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
redis        latest    7614ae9453d1   20 months ago   113MB
mongo        latest    dfda7a2cf273   20 months ago   693MB

查看镜像详细信息

详细信息中包含了镜像的版本,下载地址,配置路径等信息。

docker inspect [镜像ID]

4、删除镜像

docker rmi [镜像ID]

#例如:
[root@centos7 conf]# docker rmi dfda7a2cf273

5、启动容器

docker run -it \
--name redis_6379 \
--privileged \
-p 6379:6379 \
-v /home/software/redis/6379/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /home/software/redis/6379/data/:/data \
-v /home/software/redis/6379/log/redis.log:/var/log/redis.log \
-d redis

docker run [镜像名称] 配置说明:

参数说明
-it允许进入容器内部,使用“docker exec -it [容器名称] bash” 进入容器
–name指定容器名称
–privileged当值为true时,指定容器权限为root权限
–p指定容器内镜像的映射端口,例如:“6379:6379” ,
前面的6379为主机的端口,后面的6379为容器内部的端口
–v指定容器内镜像文件的挂载地址,例如:“/home/software/redis/6379/conf/redis.conf:/usr/local/etc/redis/redis.conf”
“:”前面的地址代表的是主机的文件路径,“:”后面的地址代表的是容器内部的文件路径
–d指定容器为后台运行

6、查看容器

docker ps
docker ps -a

#例如:
[root@centos7 conf]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                                           NAMES
4471b5c7a853   mongo     "docker-entrypoint.s…"   10 minutes ago   Up 10 minutes   0.0.0.0:27017->27017/tcp, :::27017->27017/tcp   mongodb_27017
cfe1599ab134   redis     "docker-entrypoint.s…"   28 minutes ago   Up 28 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp       redis_6379

6、查看容器日志

docker logs [容器名称]

#例如:
[root@docker conf]# docker logs redis_6379
1:C 15 Sep 2023 03:43:09.006 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:C 15 Sep 2023 03:43:09.006 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 15 Sep 2023 03:43:09.006 * Redis version=7.2.1, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 15 Sep 2023 03:43:09.006 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1:M 15 Sep 2023 03:43:09.007 * monotonic clock: POSIX clock_gettime
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 7.2.1 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                  
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           https://redis.io       
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

1:M 15 Sep 2023 03:43:09.007 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 15 Sep 2023 03:43:09.009 * Server initialized
1:M 15 Sep 2023 03:43:09.009 * Ready to accept connections tcp

7、停止容器

docker stop [容器ID、容器名称]

8、删除容器

docker rm [容器ID、容器名称]

9、进入容器

docker exec -it [容器名称] bash

二、Linux基础命令

1、文件赋权

chmod 777 [文件]

#例如:
[root@centos7 log]# chmod 777 mongod.log/

2、查看文件目录结构

tree

#例如:
[root@centos7 software]# tree
.
├── mongodb
│   └── 27017
│       ├── conf
│       │   └── mongod.conf
│       ├── data
│       └── log
│           └── mongod.log
└── redis
    └── 6379
        ├── conf
        │   └── redis.conf
        ├── data
        │   └── dump.rdb
        └── log
            └── redis.log

11 directories, 4 files

3、创建多层级文件

mkdir -p [文件路径] [文件路径]

#例如:
[root@centos7 software]# mkdir -p /home/software/redis/6379/log /home/software/redis/6379/data /home/software/redis/6379/conf

三、docker安装redis

1、创建挂载文件目录

cd /home
mkdir -p software/redis/6379/log software/redis/6379/data software/redis/6379/conf

查看创建结果

tree

2、docker拉取镜像

离线部署

下载redis压缩包

https://redis.io/download/#redis-downloads
在这里插入图片描述

查看并拉取镜像

#搜索镜像
docker search redis

#拉取镜像,未指定版本时,将自动拉取稳定版:last
docker pull redis

#查看镜像
docker images

docker images -a

3、配置文件映射

3.1、日志文件

在 software/redis/6379/log目录下,创建一个空的日志文件 redis.log。
[root@docker log]# touch redis.log
[root@docker log]# ls
redis.log
修改日志文件权限,将 redis.log 日志文件的权限设置为可读写。
chmod 777 redis.log

[root@docker log]# chmod 777 redis.log
[root@docker log]# ll
总用量 0
-rwxrwxrwx. 1 root root 0 9月  15 11:16 redis.log

3.2、配置文件

查看镜像信息
docker inspect [镜像ID]

[root@docker software]# docker inspect 39ac5829bade

在config、Env 里面可以看到redis镜像的版本信息:REDIS_VERSION=7.2.1

根据redis的版本下载配置文件,下载地址:https://redis.io/docs/management/config(已失效)
可以先下载对应版本的gz压缩包,再从压缩包里面取出配置文件。

上传配置文件 redis.conf 至 software/redis/6379/conf 目录下。

在这里插入图片描述
在这里插入图片描述

修改配置文件

进入文件夹编辑配置文件:

[root@docker conf]# cd /home/software/redis/6379/conf
[root@docker conf]# vim redis.conf 

#修改IP访问权限:
注释掉 	bind 127.0.0.1

#关闭保护模式:
protected-mode no

#指定容器中redis的日志路径:
logfile "/var/log/redis.log"

4、启动docker容器

docker run -it \
--name redis_6379 \
--privileged \
-p 6379:6379 \
-v /home/software/redis/6379/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /home/software/redis/6379/data/:/data \
-v /home/software/redis/6379/log/redis.log:/var/log/redis.log \
-d redis

5、查看启动结果

docker ps 

#查看全部容器,包括启动失败的容器
docker ps -a 

#删除容器或者镜像
docker rm [容器ID、容器名称、镜像ID]

#进入容器
docker exec -it [容器名称] bash

6、检查日志

docker logs redis_6379

在这里插入图片描述这里表示redis启动成功。

7、测试 Redis

#进入容器
docker exec -it redis_6379 bash

#运行 redis 客户端
redis-cli

#测试
ping

#测试结果
[root@docker conf]# docker exec -it redis_6379 bash
root@81eb6c3c8d0a:/data# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> 

显示 PONG 代表测试成功!

四、docker安装MongoDB

docker run --name mongodb_27017 \
  -p 27017:27017 \
  -v /home/software/mongodb/27017/conf/mongod.conf:/etc/mongod.conf \
  -v /home/software/mongodb/27017/data:/var/lib/mongodb \
  -v /home/software/mongodb/27017/log/mongod.log:/var/log/mongodb/mongod.log \
  -d \
  mongo \
  --auth

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值