docker容器基础
一、安装docker服务的准备工作
1、版本确认:
Docker使用Docker CE for CentOS,对于Linux版本有要求:
CentOS版本:>=7.0
CentOS内核版本:>3.10
# 确认centos版本
lsb_release -a
# 我的服务器输出内容
LSB Version::base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description:CentOS release 6.8 (Final)
Release:6.8
Codename:Final
# CentOS版本太低,需要升级(root用户身份升级):
sudo yum update# 或者
# 如果没有安装lsb命令,直接cat数据查看CentOS版本
cat/etc/redhat-release
# 输出:
CentOS Linux release 7.2.1511 (Core)
??升级好CentOS后,要保证 CentOS-Extras (软件源,里面附加了很多软件包)的启用,这个软件源默认是允许状态,是必须启用的;如果之前禁用的话要修改成允许状态,因为我们我们要安装的Docker安装包就在这个Extras库里。
2、旧版本移除: ??如果有历史的docker版本,安装之前最好卸载,因为之前docker叫做docker-engine或者docker,而且最开始是没有EE和CE版本的区分的:
# 查看是否有历史安装
rpm -qa|grep docker
# 如果有的话就卸载历史版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
3、依赖安装(当然如果你的机器已经安装好了,就不需要再装了):
# yum-utils提供了yum-config-manager,也就是yum包管理器的实用程序
# devicemapper和lvm 2是devicemapper存储驱动程序所需要的,后面会用来做docker镜像和容器的管理
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
#已经安装过了,所以输出内容表示installed
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Package yum-utils-1.1.31-34.el7.noarch already installed and latest version
Package device-mapper-persistent-data-0.6.2-1.el7_2.x86_64 already installed and latest version
Package 7:lvm2-2.02.130-5.el7_2.5.x86_64 already installed and latest version
Nothing to do
4、yum源(或者稳定repository)添加:
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 也可以用国内的阿里源下载
sudo yum-config-manager --add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 配置完成,保存稳定repo:
Loaded plugins: fastestmirror, langpacks
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
docker-ce.repo| 2.4 kB00:00:00
repo saved to /etc/yum.repos.d/docker-ce.repo
5、edge和test 库启用(不需要开启可以忽略这一步): ??如果需要的话,可以在配置文件启用或禁用edge和test代码库,一般默认是禁用的
# 启用不稳定库
sudo yum-config-manager --enable docker-ce-edge
sudo yum-config-manager --enable docker-ce-test
# 停止启用不稳定库
sudo yum-config-manager --disable docker-ce-edge
# 需要注意的是,Docker 17.06开始,稳定版本也会push到edge和test仓库里
6、yum cache更新:
yum makecache fast
二、docker安装:1、安装docker
# 安装默认版本(一般会默认安装最新版本docker)
sudo yum install docker-ce
# 查看并安装指定版本
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-
# 如果安装过程遇到问题,可能是缺少依赖:container-selinux
文章图片
查看可安装docker版本 2、添加docker镜像: 很多时候为了避免镜像下载受限,添加国内docker镜像,常用的镜像地址:
中科大镜像加速:https://docker.mirrors.ustc.edu.cn/
网易镜像加速:http://hub-mirror.c.163.com
vim /etc/docker/daemon.json
# insert下面的内容:
{ "registry-mirrors": ["[https://docker.mirrors.ustc.edu.cn/](https://docker.mirrors.ustc.edu.cn/)"] }
daemon.json 文件里存放的是docker引擎配置的文件,里面可以配置相关的参数,但是一般不会自动生成,手动创建即可,根据需求自行添加配置项或去官网查看可用参数
三、docker服务启动
1、启动docker服务:
systemctl start docker
2、使用docker测试项目测试docker服务:docker run hello-world
3、卸载docker:直接执行yum remove docker-ce
卸载,然后删除镜像、容器等docker相关内容:rm -rf /var/lib/docker
四、docker容器的基础操作:docker run i_name
基于i_name这个镜像运行容器docker ps
查看正在运行的容器docker ps -l
最近一次创建的容器信息docker rm c_id/c_name
删除容器(需要注意的是,要先停止容器再删除,否则会报错)docker rm -f
强制删除容器(删除运行中的容器也不会报错)docker port c_id/c_name
查看容器端口的快捷方式docker logs c_id/c_name
查看容器日志docker top c_id/c_name
查看容器内的应用进程docker inspect c_id/c_name
查看容器底层信息(例如:/etc/docker/daemon.json)docker restart c_id/c_name
重启容器(start 、 stop)docker pause
暂停容器(unpause恢复容器进程)五、docker镜像
docker images
查看所有本地主机上已有的镜像同一个镜像源可以有多个镜像,使用不同的tag即可;使用时通过image:tag的方式指定镜像,没有指定tag使用latest,没有的话自行pull镜像
docker pull image(docker pull image:tag)
拉取镜像(本地有会提示已经有了,没有会进行下载)docker search i_name
查找镜像1、使用已有镜像创建新镜像
docker commit -m="your description about your update this time" -a="author" c_id target_imageName:version
(回车返回sha256说明新的镜像打造成功,)基于目前已有的本地镜像,打造一个符合我们预期的镜像并提交,下次可以pull使用;之后直接使用
docker run target_imageName:version
即可使用定制化的新镜像2、通过dockerfile创建新镜像 镜像也可以使用docker自带的docker build根据Dockerfile创建
Dockerfile是一个系统文件,它告诉容器,运行时需要依赖的库、资源、需要的程序、配置、环境变量等信息,在build镜像的时候读取Dockerfile指定的要求进行构建,转换成环境的层面,可以理解成,Dockerfile里面的指令,就是一步一步完成手工环境部署的基础过程
Dockerfile文件由一系列的指令指定每一层级的操作组合成的
dockerfile指令说明:https://www.jianshu.com/p/6a924bbc336a
用已经写好的dockerfile文件构建镜像:
docker build -t image_name:tag dockerfilepath
构建镜像(最好将dockerfile放在一个空目录下运行)其他docker操作:
docker rmi image_id
删除镜像docker tag image repository:tag
为镜像添加新的tag(同一个镜像id,不同tag)docker rmi repository:tag
删除镜像tagdocker run -p
容器内部端口绑定到指定的主机端口(-p c_ip:c_p:host_p)docker run -P
容器端口随机映射到主机端口docker run --name
指定容器名称docker run -d
容器后台运行docker run -i -t
容器的伪输入终端,运行可交互式容器docker -v
主机目录挂载到容器docker ps -a
查看所有容器docker ps
查看运行中容器docker ps -q
查看所有运行中容器的iddocker ps -qa
查看所有容器iddocker stop $(docker ps -qa)
停止所有容器docker kill (-s xxx)
杀死运行中的容器docker rm $(docker ps -qa)
删除所有容器docker container prune -f
删除所有当前停止的容器docker image prune --force --all
删除所有当前未使用的镜像docker exec container command
在容器中执行命令docker cp container:path needed_path
拷贝需要使用的文件到容器的指定目录docker inspect
查看镜像 元数据docker pull -a image_name
拉取所有image_name 的镜像docker push image:tag push
本地镜像到镜像仓库docker history
查看镜像的“构建”记录docker info
当前你的服务器上docker相关信息,包括运行的容器数、总容器数、工作空间等docker version
只是展示docker的版本信息docker save -o /path/filename.tar image:tag
将制定镜像保存成tar文件docker save -o /path/filename.zip image:tag
将定制镜像保存成zip文件docker load -i /path/filename.tar/zip
导入使用docker save导出的镜像,load以后可以docker images看到对应的镜像通常情况下,如果镜像不便于直接pull下载拉取,或者想直接从一个公共服务平台拉取自己定制的镜像,都可以把镜像打成压缩文件,需要的时候直接load下载即可
一般在做容器迁移的时候才会进行docker save或者是docker exporter;docker exporter相对docker save的文件比较小,但是会丢失一些历史记录和元数据
【docker容器基础】一个镜像可以有多个tag,一个tag只能有一个镜像
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- Python基础|Python基础 - 练习1
- Java|Java基础——数组
- Java基础-高级特性-枚举实现状态机
- 营养基础学20180331(课间随笔)??
- iOS面试题--基础
- HTML基础--基本概念--跟着李南江学编程
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- typeScript入门基础介绍
- c++基础概念笔记