一 什么是Docker
1.1 概念
是一种轻量级的“虚拟机”,在Linux容器里运行应用的开源工具。
1.2 docker和虚拟机区别
Docker | 虚拟机 |
---|---|
容量占用小,启动快,不安全 | 容量占用大,启动慢,安全 |
1.3 docker容器使用场景
打包应用程序简化部署,可脱离底层硬件任意迁移。
1.4 三要素:容器,镜像,仓库
镜像——一个面向Docker容器弓|擎的只读模板
容器——从镜像创建的运行实例
仓库——集中保存镜像的地方
二 部署docker
2.1 安装依赖包
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
2.2 设置阿里云镜像源
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.3安装Docker-ce
[root@localhost yum.repos.d]# yum -y install docker-ce
安装的时候会提示报错 这是因为自己做光盘带的源放进backup里了,需要移出来。
mv /etc/yum.repos.d/backup/CentOS-Base.repo /etc/yum.repos.d/
2.4关闭防火墙
[root@localhost yum.repos.d]# systemctl stop firewalld
[root@localhost yum.repos.d]# setenforce 0
也可以永远关闭防火墙
vi /etc/selinux/config
SELINUX=disable
2.5开启docker
[root@localhost yum.repos.d]# systemctl start docker.service
[root@localhost yum.repos.d]# systemctl enable docker.service
镜像加速
1:打开阿里云官网—》搜索“镜像加速”
2.
3.
写入镜像加速
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ktuyn8y5.mirror.aliyuncs.com"]
}
EOF ##写入镜像加速
systemctl daemon-reload ##重载daemon
systemctl restart docker ##重启docker
三
3.1 镜像下载
[root@server1 overlay2]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
Digest: sha256:6b1daa9462046581ac15be20277a7c75476283f969cb3a61c8725ec38d3b01c3
Status: Image is up to date for nginx:latest
docker.io/library/nginx:latest
3.2添加标签
[root@server1 ~]# docker tag nginx:latest nginx:new
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bc9a0695f571 7 hours ago 133MB
nginx new bc9a0695f571 7 hours ago 133MB
3.3删除镜像
[root@server1 ~]# docker tag nginx:latest nginx:new
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bc9a0695f571 7 hours ago 133MB
nginx new bc9a0695f571 7 hours ago 133MB
[root@server1 ~]# docker rmi bc9a0695f571
Error response from daemon: conflict: unable to delete bc9a0695f571 (must be forced) - image is referenced in multiple repositories
[root@server1 ~]# docker rmi nginx:new
Untagged: nginx:new
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bc9a0695f571 7 hours ago 133MB
如上图 如果有多个名称 只能删除名称 删除ID会报错 因为无法识别
3.4
存出镜像命名为nginx存在当前目录下 必须下载镜像才能存 docker save -o 存储路径 镜像
[root@server1 ~]# docker save -o /opt/nginx nginx:latest
[root@server1 ~]# docker rmi nginx:latest
Untagged: nginx:latest
Untagged: nginx@sha256:6b1daa9462046581ac15be20277a7c75476283f969cb3a61c8725ec38d3b01c3
Deleted: sha256:bc9a0695f5712dcaaa09a5adc415a3936ccba13fc2587dfd76b1b8aeea3f221c
Deleted: sha256:a6862ade3b91fdde2aa8a3d77fdcc95b1eb6c606be079c11b7f97f249d0e731d
Deleted: sha256:32bcbe3740b68d0625744e774b404140366c0c4a2b2eadf32280d66ba001b4fb
Deleted: sha256:2dc5e43f496e41a18c016904b6665454a53be22eb4dcc1b468d864b4e2d1f311
Deleted: sha256:5fe6a7c579cd9fbcfa604810974c4c0c16893f4c40bc801545607ebd0accea74
Deleted: sha256:f5600c6330da7bb112776ba067a32a9c20842d6ecc8ee3289f1a713b644092f8
[root@server1 ~]# docker load < /opt/nginx
f5600c6330da: Loading layer 72.52MB/72.52MB
7ccabd267c9f: Loading layer 64.54MB/64.54MB
850c2400ea4d: Loading layer 3.072kB/3.072kB
f790aed835ee: Loading layer 4.096kB/4.096kB
7e914612e366: Loading layer 3.584kB/3.584kB
Loaded image: nginx:latest
删除镜像–载入镜像
四 容器制作
docker create [选项] 镜像运行的程序
-i 让容器的标准输入保持打开
-t 让Docker分配一个伪终端
查看容器运行状态
docker ps [选项]
-a 列出所有的容器,包括未运行的容器
docker run 等同于下载镜像、创建容器、启动容器
[root@server1 ~]# docker create -it paigeeworld/centos7 /bin/bash
Unable to find image 'paigeeworld/centos7:latest' locally
latest: Pulling from paigeeworld/centos7
Image docker.io/paigeeworld/centos7:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
a3ed95caeb02: Pull complete
7235103339cf: Pull complete
c962e85f182c: Pull complete
e945c72281a4: Pull complete
bd558d66c6e0: Pull complete
b6d31d07a319: Pull complete
Digest: sha256:356b32d72680f0b9e0489af16961b2c3de74e18cbd391ffcf5ab085997fedf2b
Status: Downloaded newer image for paigeeworld/centos7:latest
6e7caa30484530d3775ebe1375be1a07c3908493f67e45cf8e432f1e6c67c1bd
[root@server1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e7caa304845 paigeeworld/centos7 "/bin/bash" 35 seconds ago Created loving_spence
[root@server1 ~]# docker create -it paigeeworld/centos7 /bin/bash
a0c6e70581d9e1b3625f45f5bd06b67d53854e3bf9f7eef3e21563212e29c4ac
[root@server1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a0c6e70581d9 paigeeworld/centos7 "/bin/bash" 7 seconds ago Created lucid_napier
6e7caa304845 paigeeworld/centos7 "/bin/bash" 3 minutes ago Created loving_spence
[root@server1 ~]# docker start a0c6e70581d9
a0c6e70581d9
[root@server1 ~]# docker start 6e7caa304845
6e7caa304845
[root@server1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a0c6e70581d9 paigeeworld/centos7 "/bin/bash" 2 minutes ago Up About a minute lucid_napier
6e7caa304845 paigeeworld/centos7 "/bin/bash" 5 minutes ago Up 8 seconds loving_spence
[root@server1 ~]# docker run paigeeworld/centos7 /usr/bin/bash -c ls /
bin
boot
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
可以看到下载的镜像
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bc9a0695f571 8 hours ago 133MB
nginx new bc9a0695f571 8 hours ago 133MB
paigeeworld/centos7 latest 4cbe7aa905e7 6 years ago 382MB
可以看到执行命令后容器关闭了
[root@server1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8af89be69754 paigeeworld/centos7 "/usr/bin/bash -c ls…" 16 minutes ago Exited (0) 16 minutes ago musing_volhard
a0c6e70581d9 paigeeworld/centos7 "/bin/bash" 19 minutes ago Up 18 minutes lucid_napier
6e7caa304845 paigeeworld/centos7 "/bin/bash" 22 minutes ago Up 17 minutes loving_spence
进入容器
[root@server1 ~]# docker exec -it a0c6e70581d9 /bin/bash
bash-4.2# ls /
bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
bash-4.2# exit
exit
[root@server1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTNAMES
8af89be69754 paigeeworld/centos7 "/usr/bin/bash -c ls…" 28 minutes ago Exited (0) 28 minutes ago musing_volhard
a0c6e70581d9 paigeeworld/centos7 "/bin/bash" 31 minutes ago Up 31 minutes lucid_napier
6e7caa304845 paigeeworld/centos7 "/bin/bash" 34 minutes ago Up 29 minutes loving_spence
持续在后台运行
docker run paigeeworld/centos7 /usr/bin/bash -c "while true;do echo hello;done"
停止一直在后台运行 只要停止这个容器id
[root@server1 ~]# docker stop 32abf1ed5104
32abf1ed5104
五 容器导出
[root@server1 ~]# docker export a0c6e70581d9 > nginx_c
[root@server1 ~]# ls
anaconda-ks.cfg local.repo 公共 文档
backup nginx-1.12.2 模板 下载
initial-setup-ks.cfg nginx-1.12.2.tar.gz 视频 音乐
kibana-4.3.1-linux-x64.tar.gz nginx_c 图片 桌面
容器导入
[root@server1 ~]# cat nginx_c | docker import - nginx:web
sha256:6cf674b9866c1e6d5c2bb1d387c2f34850f834c4ef80b559f4cf246765587b11
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx web 6cf674b9866c 8 seconds ago 355MB
nginx latest bc9a0695f571 8 hours ago 133MB
nginx new bc9a0695f571 8 hours ago 133MB
paigeeworld/centos7 latest 4cbe7aa905e7 6 years ago 382MB
容器删除
[root@server1 ~]# docker ps -a | awk '{print "docker rm "$1}' |bash
Error: No such container: CONTAINER
32abf1ed5104
8af89be69754
Error response from daemon: You cannot remove a running container a0c6e70581d9e1b3625f45f5bd06b67d53854e3bf9f7eef3e21563212e29c4ac. Stop the container before attempting removal or force remove
Error response from daemon: You cannot remove a running container 6e7caa30484530d3775ebe1375be1a07c3908493f67e45cf8e432f1e6c67c1bd. Stop the container before attempting removal or force remove
不能删除开着的容器