centos7安装docker

检查是否安装过 docker :

yum list installed | grep docker

如果有安装了,如果重新安装需要先卸载:
使用命令 yum -y remove docker-ce.x86_64 卸载

删除存储目录:

# rm -rf /etc/docker
# rm -rf /run/docker
# rm -rf /var/lib/dockershim
# rm -rf /var/lib/docker

开始安装:

使用命令 uname-r 检查centOs的内核版本 docker要求centOs的内核版本在3.10 以上

安装必要的系统工具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息 :

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum 缓存:

 sudo yum makecache fast 

安装docker-ce :

sudo yum -y install docker-ce

启动 docker 后台服务 :

sudo systemctl start docker

设置开机启动docker服务:

sudo systemctl enable docker

运行hello-world 镜像:

docker run hello-world

看到Hello from Docker! 字样说明已经安装成功。

一些常用的指令:
docker version 查看版本
docker info 查看基本信息

接下来安装镜像

查看一下镜像列表

docker search centos

下载centos镜像

docker pull centos

查看镜像列表

docker images

运行centos镜像

docker run -it centos:latest /bin/bash

参数解释:
run : 运行
-i :以交互模式运行容器,通常与 -t 同时使用
-t : 为容器重新分配一个伪输入终端,通常与 -i 同时使用
latest : 镜像版本
/bin/bash : 镜像的终端

告警:IPv4 forwarding is disabled. Networking will not work.
解决:开启网络转发功能
方法1:
cat /proc/sys/net/ipv4/ip_forward 查看是否为1
echo 1 > /proc/sys/net/ipv4/ip_forward
方法2:
vim /etc/sysctl.conf
添加
net.ipv4.ip_forward = 1
保存退出后查看:
sysctl -p
cat /proc/sys/net/ipv4/ip_forward

[root@localhost ~]# docker run -it centos:latest /bin/bash
[root@df8906f5a898 /]#

说明已成功运行了。

查看下系统版本:

[root@42f11d0175a3 /]# cat /etc/redhat-release 
CentOS Linux release 8.0.1905 (Core)

退出系统用exit

示例:在container中启动一个长久运行的进程,不断向stdin输出hello world。模拟一个后台运行的服务。

docker run -d centos:latest /bin/bash -c "while true; do echo hello world; sleep 1; done"

参数:
-d 后台运行容器,并返回容器ID;
-c 后面跟待完成的命令。

从容器中查看日志,查看输出的内容
语法: docker logs 容器name/ID

docker logs 69bec6b3d840

查看容器ID
docker ps 列出所有运行中的容器
docker ps -a 查看所有容器

结束运行的容器进程

docker ps
docker kill ID
docker kill 69bec6b3d840

启动、停止、重启 容器进程:

docker start ID
docker stop ID
docker restart ID

删除容器:(容器关闭的前提下)

docker rm ID

强制删除:

docker rm -f ID

docker镜像制作方法

两种方法:
方法1:docker commit # 保存container的当前状态到image后,然后生成对应的image。
方法2:docker build # 使用dockerfile文件自动化制作image。

方法1示例:制作一个apache的镜像

docker run -it centos:latest /bin/bash
yum install -y httpd
exit
docker ps -a


[root@localhost ~]# docker commit 2c9ae8cf8ba6 centos:apache   
命名为centos:apache

查看下是否保存成功:

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              apache              9017e4f2adb4        15 seconds ago      269MB
centos              latest              0f3e07c0138f        2 months ago        220MB
hello-world         latest              fce289e99eb9        11 months ago       1.84kB

删除镜像:
docker rmi centos:latest
或者 docker rmi 0f3e07c0138f

docker image 的发布

方法1:save image to tarball
保存image到tar包
语法:docker save -o 导出的镜像名.tar 本地镜像名:镜像标签

[root@localhost ~]# docker save -o docker-centos-latest.tar centos:latest

方法2: push image to docker hub
1.signup on docker hub & create repo 注册一个账号
https://hub.docker.com/
2.login to docker hub

# docker login -u 用户名 -p 密码 -e 123456789@qq.com

3.push image to docker hub # 上传镜像

#docker push centos:latest

4.pull image from docker hub # 下载镜像

#docker pull 用户名/镜像名:镜像标签

导入本地镜像

docker load -i docker-centos-latest.tar

container 容器端口映射

[root@localhost ~]# netstat -tunlp

docker run -it -d --name my-httpd -p 8088:80 centos:apache

[root@localhost ~]# netstat -tunlp

访问已经运行的容器:

docker ps
docker  exec -it 0f3e07c0138f /bin/bash