linux 与 docker

本文详细介绍如何在RHEL或CentOS 7及以上版本中安装Docker,包括检查系统环境、安装配置、启动服务及验证安装成功。同时,通过实例演示了如何搜索、下载镜像,启动并管理容器,以及在容器内安装软件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

检查内核版本

Linux 发行版本是RHELCentOS,便需要7或之后版本

$ uname -r

检查系统架构

系统架构必须是64位

$ uname -m

 

检查安装

检查系统,安装适合的Docker安装包

$ curl https://get.docker.com > /tmp/install.sh

$ chmod +x /tmp/install.sh

$ /tmp/install.sh

 

SELinux置于宽容模式下运行

$ sestatus

 

SELinux status:                 enabled

SELinuxfs mount:                /sys/fs/selinux

SELinux root directory:         /etc/selinux

Loaded policy name:             targeted

Current mode:                   enforcing

Mode from config file:          enforcing

Policy MLS status:              enabled

Policy deny_unknown status:     allowed

Max kernel policy version:      28

 

enforcing 代表SELinux已经生效并会强制执行规则

改为宽容模式只要执行

$ sudo setenforce 0

 

省略sudo

Docker运行时需要特殊的权限,所以默认执行命令时前面必须加上sudo,省略命令前面加上sudo的方法就是将用户加入用户组。将用户加入用户组等同于赋予他root权限。因此,要了解机器是不是共享的,否则有安全隐患。

$ sudo usermod -aG docker 用户

加入用户组后,需要先注销再登入系统

然后是启动docker服务

$ sudo service docker restart

确认安装

$ docker version

Client:

 Version:      17.05.0-ce

 API version:  1.29

 Go version:   go1.7.5

 Git commit:   89658be

 Built:        Thu May  4 22:06:25 2017

 OS/Arch:      linux/amd64

 

Server:

 Version:      17.05.0-ce

 API version:  1.29 (minimum version 1.12)

 Go version:   go1.7.5

 Git commit:   89658be

 Built:        Thu May  4 22:06:25 2017

 OS/Arch:      linux/amd64

错误1

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

如果出现这个错误可以重启一下docker试试

$ service docker restart

1. 安装Docker
[plain] view plain copy
  1. yum install docker.x86_64   

2. 启动Docker
[plain] view plain copy
  1. service docker start  
把Docker 加入到开机自启动
chkconfig docker on

3. 去docker 仓库查找image
[plain] view plain copy
  1. [root@ ~]# docker search centos  
  2. INDEX       NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED  
  3. docker.io   docker.io/centos                             The official build of CentOS.                   3827      [OK]         
  4. docker.io   docker.io/ansible/centos7-ansible            Ansible on Centos7                              103                  [OK]  
  5. docker.io   docker.io/jdeathe/centos-ssh                 CentOS-6 6.9 x86_64 / CentOS-7 7.4.1708 x8...   90                   [OK]  
  6. docker.io   docker.io/tutum/centos                       Simple CentOS docker image with SSH access      33                     

4.  下载image 到本地
[plain] view plain copy
  1. docker pull docker.io/centos  

5. 查看刚刚下载下来的image
[plain] view plain copy
  1. [root@ ~]# docker images  
  2. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  
  3. docker.io/centos    latest              d123f4e55e12        2 weeks ago         196.6 MB  

6. 启动容器,放到后台,不退出,并查看启动的容器id
[plain] view plain copy
  1. [root@ ~]# docker run -dt docker.io/centos /bin/bash  
  2. abe3a1f3063de369beb91d3679f11e5f61c0fad91e418022e9b868fb2632cb33  
  3. [root@smsgw1 ~]# docker ps -a  
  4. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  
  5. abe3a1f3063d        docker.io/centos    "/bin/bash"         9 seconds ago       Up 8 seconds                            cocky_wozniak  


7. 进入容器
[plain] view plain copy
  1. docker exec -ti abe3a1f3063d /bin/bash  

8. 进入容器后安装JDK 8
[plain] view plain copy
  1. [root@abe3a1f3063d /]# yum install java-1.8.0-openjdk.x86_64  

安装完后保持为新的镜像
[plain] view plain copy
  1. docker commit 5ed1587b3923 centos/java8  
9. 安装这个是 为了运行tomcat, 刚才启动docker的时候,没有带上端口映射的参数。我们退出去再启动下
[plain] view plain copy
  1. [root@abe3a1f3063d /]# exit  

10. 关闭并删除容器
[plain] view plain copy
  1. [root@ ~]# docker ps -a  
  2. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  
  3. abe3a1f3063d        docker.io/centos    "/bin/bash"         11 minutes ago      Up 11 minutes                           cocky_wozniak  
  4. [root@smsgw1 ~]# docker stop abe3a1f3063d  
  5. abe3a1f3063d  
  6. [root@ ~]# docker ps -a  
  7. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES  
  8. abe3a1f3063d        docker.io/centos    "/bin/bash"         12 minutes ago      Exited (137) 17 seconds ago                   cocky_wozniak  
  9. [root@smsgw1 ~]# docker rm abe3a1f3063d  

11. 重启启动容器
[plain] view plain copy
  1. docker run -dt -p 8080:8080 -p 8990:8990 centos/java8 /bin/bash  
指定port range: 

docker run -dt -p 7000-8000:7000-8000 centos/java8 /bin/bash

挂接本地磁盘到容器 docker run -dt -p 7000-8000:7000-8000 -v /usr/local/home:/usr/local/container/home centos/java8 /bin/bash


12. 从新进入镜像,就像在 Linux下一样,执行你想做的操作吧。
[plain] view plain copy
  1. docker exec -ti 5ed1587b3923 /bin/bash  

13. copy宿主机器的文件到容器:
docker cp /host-path/file <containerId>:/containter-path
[plain] view plain copy
  1. docker cp /home/msg/name.tar 5ed1587b3923:/home/software 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值