参考资料:
安装准备
为了方便添加软件源, 支持 devicemapper 存储类型, 安装如下软件包
- $ sudo yum update
- $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加 yum 软件源
添加 Docker 稳定版本的 yum 软件源
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker
更新一下 yum 软件源的缓存, 并安装 Docker.
- $ sudo yum update
- $ sudo yum install docker-ce
如果弹出 GPG key 的接收提示, 请确认是否为 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35 , 如果是, 可以接受并继续安装.
至此, Docker 已经安装完成了, Docker 服务是没有启动的, 操作系统里的 docker 组被创建, 但是没有用户在这个组里.
注意
默认的 docker 组是没有用户的(也就是说需要使用 sudo 才能使用 docker 命令).
您可以将用户添加到 docker 组中(此用户就可以直接使用 docker 命令了).
加入 docker 用户组命令
$ sudo usermod -aG docker USER_NAME
用户更新组信息后, 重新登录系统即可生效.
安装指定版本
如果想安装指定版本的 Docker, 可以查看一下版本并安装.
- $ yum list docker-ce --showduplicates | sort -r
- docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
- docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
- docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
- docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
可以指定版本安装, 版本号可以忽略 : 和 el7, 如 docker-ce-18.09.1
$ sudo yum install docker-ce-<VERSION STRING>
至此, 指定版本的 Docker 也安装完成, 同样, 操作系统内 docker 服务没有启动, 只创建了 docker 组, 而且组里没有用户.
启动 Docker
如果想添加到开机启动
$ sudo systemctl enable docker
启动 docker 服务
$ sudo systemctl start docker
验证安装
验证 Docker CE 安装是否正确, 可以运行 hello-world 镜像
$ sudo docker run hello-world
更新和卸载 Docker
使用 yum 管理, 更新和卸载都很方便.
更新 Docker CE
$ sudo yum update docker-ce
卸载 Docker CE
$ sudo yum remove docker-ce
删除本地文件
注意, docker 的本地文件, 包括镜像 (images), 容器(containers), 存储卷(volumes) 等, 都需要手工删除. 默认目录存储在 /var/lib/docker.
$ sudo rm -rf /var/lib/docker
常用 docker 命令
docker pull CentOS 下载映像到本地
docker images 查看映像列表
docker run -i -t CentOS /bin/bash 以交互式启动容器
docker run CentOS echo 'Hello World'
概要信息, docker info
容器查看, 即进程查看, docker ps -a
最近容器查看, docker ps -l
(2)启动容器, docker run -d -p 8080:80 nginx, 把容器内的 nginx 的 80 端口, 映射到当前服务器的 8080 端口, 当前服务器的 ip 是 192.168.1.120, 浏览器输入 http://192.168.1.120:8080/, 就可以看到 nginx 已启动,
(3)再启动多一个容器, docker run -d -p 8081:80 nginx, 浏览器输入 http://192.168.1.120:8081/, 就可以看到另外一个 nginx 已启动
也可以通过 curl 127.0.0.1:8080 来测试是否打开相应端口
(4)到这里就能体现出 Docker 部署应用和传统部署应用的区别了, 传统部署的话, 需要人工拷贝多一份 nginx, 再配置端口, 而 Docker 部署的话, 在已制作好的镜像基础上, 一条命令就可以部署一个新的应用
(5) docker inspect a219737ce905 通过命令找到容器端口, 可以宿主机直接访问容器: http://172.17.0.2/:80
(1)docker ps -a 可以显示容器 id
(2)docker stop 8dc6a2b6f903 停止容器
(3)docker rm 8dc6a2b6f903 删除容器
(4)docker ps 显示当前正在运行的容器
docker commit 235923e34a nginx/CentOS 将自己构建好的 235923e34a 容器提交到本地当作下次可以再次使用的映像
- docker run --name=nexus -i -t CentOS /bin/bash
- docker inspect nexus
docker start -i nexus 重新启动已经停止的容器
docker run --name=nexus -i -t CentOS /bin/bash CTRL + P CTRL + Q 退出交互式, 以后台服务运行
docker attach nexus 可把后台运行服务提升到交互式运行
docker run --name=nexus -d CentOS /bin/sh -c "while true; do echo'hello world'; sleep 1; done"
docker logs -t -f --tail 10 nexus 显示 nexus 容器打印的最新 10 条日志, 指定 10 为 0 时, 显示所有日志
docker top nexus 查看 nexus 进程运行情况
docker exec -i -t nexus /bin/bash 在已经启动的 nexus 容器中加入新的进程 bash,CTRL + P CTRL + Q 退出交互式, 以后台服务运行, 利用 docker top nexus 命令可以查看进程
docker stop nexus 发送一个停止信号, 优雅停止容器
docker kill nexus 直接停止容器
docker network ls 查看容器创建的网络
docker attach 容器 ID 和 docker exec -it 容器 ID 都可以将容器提升到前台. 但是 attach 方法, 当在容器中 exit 时, 容器会退出, 即使是启动时候指定是后台启动; 而 exec 方法, 在窗口中 exit 时, 仅仅是退出当前操作终端, 而不会退出进程.
来源: http://www.bubuko.com/infodetail-3356970.html