docker
安装
#下载Centos 7 基础镜像源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
#下载epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
#下载docker-ce源
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
#执行安装
yum remove -y docker-ce docker-common docker-selinux docker-engine container-selinux containerd.io
yum -y install docker-ce
#启动
systemctl start docker
systemctl enable docker
#配置镜像加速器
#docker中国官方加速器
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
#重新加载配置
systemctl reload docker
#确认安装
docker --version
docker info
docker基本使用
docker是一个软件打包技术,架构为C/S架构,包含客户端和服务端。
仓库:自定义镜像仓库
镜像:一次镜像处处运行
容器:运行镜像
[root@oldboy ~]# docker --version
Docker version 19.03.10, build 9424aeaee9
[root@oldboy ~]# docker info
Client:
Debug Mode: false
Server:
Containers: 4
Running: 1
Paused: 0
Stopped: 3
Images: 4
Server Version: 19.03.10
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 972.6MiB
Name: oldboy
ID: TZWK:GEIN:LZGW:CRL3:6K5K:MVQ5:QVGQ:EEX5:QYHP:NYNK:G4QD:AI5L
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://registry.docker-cn.com/
Live Restore Enabled: false
使用
#容器的打包技术:在不安装nginx的情况下,启用nginx容器,就可以正常使用nginx服务。
docker run -d -p 80:80 nginx:lastest
docker images
docker images 列出本机上的镜像
repository --表示镜像的仓库源
tag --表示镜像的标签
image id --镜像的ID
create --镜像的创建时间
size --镜像的大小
参数
-a 列出本地的所有镜像及子镜像
-q 只显示镜像ID
–digests 显示镜像的摘要信息
–no-trunc 显示完整的镜像信息
docker search
从docker仓库中查找镜像,默认从/etc/docker/daemo.json文件中定义的路径中查找。
[root@oldboy ~]# cat /etc/docker/daemon.json
{
"registry-mirrors":["https://registry.docker-cn.com"]
}
[root@oldboy ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 13914 ok
NAME :镜像名称
DESCRIPTION :描述
STARS :星级
OFFICIAL :是否官方
AUTOMATED :自定义
参数
–no-trunc 显示完整的镜像描述
-s 数字,列出收藏数字
–automated 只列出automated build类型构建的镜像
docker pull
docker search alpine #在线查找镜像
docker pull alpine #在线下载镜像
docker pull alpine:3.9
docker image ls 或者 docker images #查看本地镜像列表
不标记镜像版本,默认下载最新的镜像(latest),镜像都是压缩文件,可以解压查看文件。可以将其导出,然后分析该镜像的文件内容和设置。
docker save
docker save nginx:latest -o docker_nginx.tar.gz
-o 导出镜像的名称
导出的镜像也可以执行导入
docker load -i docker_nginx.tar.gz
镜像加速
为了永久性保留更改,您可以修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
systemctl restart docker
docker tag
docker tag centos centos:v01
docker run
docker run -d -it centos:6.9 [初始命令]
docker run -it --name oldboy --rm alpine:latest /bin/bash
- 运行一个在后台执行的容器,同时,还能用控制台管理:
docker run -i -t -d ubuntu:latest - 运行一个带命令在后台不断执行的容器,不直接展示容器内部信息:
docker run -d ubuntu:latest ping www.docker.com - 运行一个在后台不断执行的容器,同时带有命令,程序被终止后还能重启继续跑,还能用控制台管理,
docker run -d --restart=always ubuntu:latest ping www.docker.com - 为容器指定一个名字,
docker run -d --name=ubuntu_server ubuntu:latest - 容器暴露80端口,并指定宿主机80端口与其通信(: 之前是宿主机端口,之后是容器需暴露的端口),
docker run -d --name=ubuntu_server -p 80:80 ubuntu:latest - 指定容器内目录与宿主机目录共享(: 之前是宿主机文件夹,之后是容器需共享的文件夹),
docker run -d --name=ubuntu_server -v /etc/www:/var/www ubuntu:latest
run参数说明
run 有两个作用,创建并启动容器
-d 后台运行容器, 指定容器运行于前台还是后台,默认为false
-it 分配一个交互式的终端
–name 不指定名称的时候,容器启动是会产生随机的名称
–rm 表示运行退出之后执行容器删除操作
-v, --volume=[] , 给容器挂载存储卷,挂载到容器的某个目录
–volumes-from=[] ,给容器挂载其他容器上的存储卷
-e, --env 指定环境变量, 容器中可以使用该环境变量
–net=host 容器网络设置
- bridge:使用docker daemon指定的网络桥接
- host:使用容器主机网络
- container: NAME_or_ID 使用其他容器的网络
- none: 容器使用自己的网络(类似–net=bridge),但是不进行配置
–name=“” ,指定容器的名称
–privileged=false ,指定容器是否为特权容器,特权容器拥有所有的capabilities
–restart=always 重启策略
- no
- on-failure
- always
-u, --user 指定容器的用户
-a, --attach 登录容器(必须是以docker run -d启动的容器)
-w, --workdir 指定容器的工作目录
-c, --cpu-shares=0 ,设置容器CPU权重,在CPU共享场景使用
-m, --memory=“” ,指定容器使用内存的上限
-P, --publish-all=false ,容器自动暴露的端口(大写P)
-p, --publish=[] 指定容器暴露的端口
-h,–hostname=“” ,指定容器的主机名称
–cidfile=“” , 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
–cpuset=“”,设置容器可以使用那些CPU,此参数可以用来让容器独占CPU
–device=[] ,添加主机设备给容器,相当于设备直通,
–dns=[] ,指定容器的DNS服务器
–dns-search=[] , 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
–expose=[] , 指定容器暴露的端口,即修改镜像的暴露端口
–link=[] , 指定容器间的关联,使用其他容器的IP、env等信息
–rm=false, 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
–entrypoint=“” ,覆盖images的入口点。
不加参数就是在前台运行。CTRL+C可以结束容器。
宿主机
容器共用宿主机的内核。因此docker只支持linux内核的发行版本。
宿主机是centos6.9的系统,而运行的容器不一定都是,因为会出现有些容器运行的命令可能会没有。但是所有的linux操作系统的内核都是一样的,因此可以正常运行,按照linux的发行版本的固有命令来执行。
centos yum
debian apt-get
ubuntu ap

最低0.47元/天 解锁文章
1502





