redhat 离线安装 docker

1. 下载地址
官网下载地址:https://download.docker.com/linux/static/stable/x86_64/
官网文档地址:https://docs.docker.com/engine/install/binaries/

2. 解压并注册为service
下载安装

# 下载
tarball="docker-18.09.7.tgz"
wget -c https://download.docker.com/linux/static/stable/x86_64/${tarball}
# 解压
tar -zxvf ${tarball}
# 复制到/usr/bin
cp docker/* /usr/bin
 
# 上步中必须拷贝解压出的文件到/usr/bin目录下,而不是在/usr/bin下建立文件夹,然后再整个拷过来。我这里就犯了个错误,在usr/bin下建立个docker目录,运行时报异常。应该是这个目录没有PATH中定义

添加到service: vim /etc/systemd/system/docker.service
这里是基础配置,详细配置可使用指定配置文件来启动服务

[Unit]
 
Description=Docker Application Container Engine
 
Documentation=https://docs.docker.com
 
After=network-online.target firewalld.service
 
Wants=network-online.target
 
[Service]
 
Type=notify
 
# the default is not to use systemd for cgroups because the delegate issues still
 
# exists and systemd currently does not support the cgroup feature set required
 
# for containers run by docker
 
ExecStart=/usr/bin/dockerd
 
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 the docker process if it exits prematurely
 
Restart=on-failure
 
StartLimitBurst=3
 
StartLimitInterval=60s
 
 
 
[Install]
 
WantedBy=multi-user.target

启动服务

#添加文件权限并启动docker
chmod +x /etc/systemd/system/docker.service
#重载unit配置文件
systemctl daemon-reload
#启动docker
systemctl start docker       
#设置开机自启
systemctl enable docker.service

检查状态

# 状态
systemctl status docker
# 版本
docker -v
``
添加docker的镜像源

vi /etc/docker/daemon.json

内容如下:

{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]}

镜像命令:

docker images                          //查看本地已经存在的镜像

docker search  imageName     //搜索网络上镜像

docker pull imageName:versionNum         //从镜像源拉取镜像

docker rmi imageID   //删除镜(根据ID)

docker rmi `docker images -q` //删除所有镜像  注意  ``是esc键下的字符

容器命令:

docker ps  //查看正在运行的容器

docker ps -a  //查看所有容器

docker ps -l  //查看最后一次运行的容器

dokcer ps -f status=existed //查看停止的容

docker run -it --name=容器名称 镜像名称:标签 /bin/bash  //交互式方式创建容器并进入容器

要退出当前 容器:  exit

docker run -di --name=容器名称 镜像名称:标签  //守护式方式创建容器

以守护式方式创建容器后进入容器:docker exec  -it 容器名称或ID  /bin/bash

注意:直接以交互式创建容器并进入容器,exit后,容器结束 运行;以守护式创建容器,再进入容器,exit后,容器还是运行状态。

容器启动、停止

docker start 容器名称或id

docker stop 容器名称或id

文件拷贝

docker cp 需要拷贝的文件或目录  容器名称:容器目录    //拷贝宿主机文件到容器

docker cp 容器名称:容器目录  需要拷贝的文件或目录   //拷贝容器内文件到宿主机

创建容器时报异常:

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.`
![在这里插入图片描述](https://img-blog.csdnimg.cn/24ea6608743141a9bfb78b0a3738e196.png)
需要执行setenforce 0 (临时使用,重启后消失)

将/etc/selinux下的config文件中的SELINUX属性改为disabled

vi /etc/selinux/config
![在这里插入图片描述](https://img-blog.csdnimg.cn/6d05d260d5a2441d89e1afabcf38e73c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASVQt5rCR5belMjExMTA=,size_17,color_FFFFFF,t_70,g_se,x_16)
文件拷贝
//从宿主机拷贝到容器
docker cp 需要拷贝的文件或目录 容器名称:容器目录
//从容器拷贝到宿主机
docker cp 容器名称:需要拷贝的文件或目录 宿主机目录或文件
目录挂载
创建容器 添加-v参数,后边为 宿主机目录:容器目录
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=myCentos2 centos:latest
如果共享的是多级目录,可能出现权限不足的情况。这是因为系统的安全模块selinux把权限禁掉了。需要添加参数 --privileged=true来解决挂载的目录没有权限的问题
查看容器IP地址
docker inspect 容器名称(或ID)
也可直接执行下面的命令直接输出IP
docker inspect --format='{undefined{.NetworkSettings.IPAddress}}' 容器名称(或ID)
删除容器
docker rm 容器名称(或ID)
运行中的窗口必须stop后才能删除,同理镜像也是删除不掉的。

你可能感兴趣的:(系统,docker,redhat,docker,linux)