yudiewenyuan 2020-06-17
Docker容器引擎
一:Docker的安装(以1809版本为例)
1:修改内核参数
[ dockerfile]# vim /etc/sysctl.conf
在末尾添加:
net.ipv4.ip_forward=1
2:安装方法1(不能上网)
(1)先将Docker的仓库文件拷贝到Linux系统中
(2)修改yum配置文件,在末尾添加
[ ~]# vim /etc/yum.repos.d/CentOS-Media.repo
[docker]
name=docker1809
baseurl=file:///opt/yum-docker1809
gpgcheck=0
[ ~]# yum clean all
(3)安装
[ ~]# yum -y install docker-ce
(4)启动docker服务
[ ~]# systemctl start docker
[ ~]# systemctl enable docker
(5)查看docker版本
[ ~]# docker version
Client:
Version: 18.09.3
API version: 1.39
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 06:33:21 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.3
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 06:02:24 2019
OS/Arch: linux/amd64
Experimental: false
方法二:能上网
docker版本为1809
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/CentOS-Base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
注意:上述两个语句是为了在linux中下载docker的rpm仓库文件,如果已经下载的有,这两部步可以不要
[ ~]# yum install -y docker-ce-18.09.7
注意:如果要安装最新版可以:yum install -y docker-ce
[ ~]# systemctl enable docker
[ ~]# systemctl start docker
二:Docker镜像操作
1:搜索镜像
[ ~]# docker search dhcp
[ ~]# docker search apache
[ ~]# docker search httpd
2:获取镜像
[ ~]# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
743f2d6c1f65: Pull complete
c92eb69846a6: Pull complete
2211b052800a: Pull complete
aed180197314: Pull complete
7c472a4980a7: Pull complete
Digest: sha256:680657b49788fc643cda8cbdcf0564474cb78c0d5ed53a3ea9cb3d56f9aacfc8
Status: Downloaded newer image for httpd:latest
注意:如果使用docker官方的docker仓库,下载会很慢,可以使用国内的镜像
对于大于1.9的docker版本可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
此文件原本不存在,需要创建
[ ~]# vim /etc/docker/daemon.json
添加如下代码:
{
"registry-mirrors": ["https://v10sz3o0.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.1.149:8000"]
}
[ ~]# systemctl daemon-reload
[ ~]# systemctl restart docker
注释:
https://v10sz3o0.mirror.aliyuncs.com为申请的阿里专属加速器
如果没有专属加速器,可以使用其他国内仓库:https://registry.docker-cn.com
没有此文件表示使用默认的docker官方仓库
Docker镜像加速地址可以在阿里上申请
https://cr.console.aliyun.com/cn-hangzhou/mirrors
3:查看镜像信息
(1)查看本地所有镜像
[ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest b7cc370ac278 2 days ago 132MB
(2)获取镜像详细信息
[ ~]# docker inspect httpd
(3)为镜像重命名并设置新的标签
[ ~]# docker tag httpd http:myhttpd
[ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
http myhttpd b7cc370ac278 2 days ago 132MB
httpd latest b7cc370ac278 2 days ago 132MB
(4)删除镜像
[ ~]# docker rmi httpd
Untagged: httpd:latest
Untagged: :680657b49788fc643cda8cbdcf0564474cb78c0d5ed53a3ea9cb3d56f9aacfc8
[ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
http myhttpd b7cc370ac278 2 days ago 132MB
(5)导出镜像
[ ~]# docker save -o /root/http http
(6)导入镜像(要先把原来的http镜像删掉)
[ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
http myhttpd b7cc370ac278 2 days ago 132MB
[ ~]# docker rmi b7
[ ~]# docker load --input /root/http
三:Docker容器操作
1:容器的创建与启动
(1)将镜像文件拷贝到系统
(2)导入镜像
[ ~]# docker load --input centos-7
[ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
http myhttpd b7cc370ac278 2 days ago 132MB
httpd latest b7cc370ac278 2 days ago 132MB
centos latest d123f4e55e12 18 months ago 197MB
(3)创建容器
[ ~]# docker create -it centos /bin/bash
[ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a20112bccf57 centos "/bin/bash" 2 seconds ago Created nifty_lumiere
c713336886d5 d1 "/bin/bash" 3 minutes ago Created hopeful_keldysh
cd65cd6d83b9 httpd "/bin/bash" 6 minutes ago Created stoic_yonath
(4)启动容器
[ ~]# docker start a2011
a2011
[ ~]# docker ps -a | grep a2011
a20112bccf57 centos "/bin/bash" 7 minutes ago Up 15 seconds nifty_lumiere
(5)创建并启动一次容器
注意:此方法启动完容器后,容器就会停止
[ ~]# docker run centos /bin/bash -c ls
(6)永久启动一个容器
[ ~]# docker run -d centos /bin/bash -c "while true;do echo ok;done;"
注释:
-c:在容器中执行指令
-d:以守护进程运行
(7)停止容器
[ ~]# docker stop a20112bccf57
(8)进入容器
[ ~]# docker start a2011
[ ~]# docker exec -it a2011 /bin/bash
[ /]# ls
anaconda-post.log dev home lib64 media opt root sbin sys usr
bin etc lib lost+found mnt proc run srv tmp var
[ /]# exit
(9)导出容器
[ ~]# docker export a20>/root/mycentos
(10)导入容器
注意:导入的容器在系统中会成为一个镜像
[ ~]# docker import mycentos centos123
[ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos123 latest b6d1b0ebddca 11 seconds ago 197MB
http myhttpd b7cc370ac278 2 days ago 132MB
httpd latest b7cc370ac278 2 days ago 132MB
ubuntu latest d131e0fa2585 13 days ago 102MB
centos latest d123f4e55e12 18 months ago 197MB
(11)删除容器
[ ~]# docker stop a20
a20
[ ~]# docker rm a20
a20
[ ~]# docker ps -a
四:Docker资源控制
1:对cpu的控制
(1)限制cpu使用率
[ ~]# echo 2000 >/sys/fs/cgroup/cpu/system.slice/docker.service/cpu.cfs_quota_us
注释:使用率为20%
(2)多任务按比例分配cpu
[ ~]# docker run -tid --cpu-shares 1024 centos
[ ~]# docker run -tid --cpu-shares 1024 ubuntu
(3)为容器分配内核
[ ~]# docker run -tid --cpuset-cpus 0 centos
注释:为centos分配0号内核,注意,不存在的内核不能调用
2:对内存使用的限制
(1) 分配内存上限
[ ~]# docker run -tid -m 512m 192.168.1.149:8000/centos
(2)对内存blkio(每秒写入次数)的限制
[ ~]# docker run -tid --device-write-bps /dev/sda:1MB centos