本文已参与 ⌈新人创作礼⌋ 活动,一起开启掘金创作之路
docker学习笔记
传统虚拟机与docker容器对比
1、启动时间: 传统虚拟机:分钟级启动 docker容器:秒级启动 2、轻量级: 传统虚拟机:以G为单位 docker容器:通常以M为单位
3、性能: 传统虚拟机:需要hypervisor层支持,虚拟化一些设备,具有完整的GuestOS,开销大,降低性能。 docker容器:共享宿主主机内核,系统级虚拟化,占用资源少,容器性能接近物理机。
4、安全性: 传统虚拟机:较高 docker容器:由于共享宿主主机内核,只是进程级隔离,稳定性和安全性不如虚拟机
5、使用要求: 传统虚拟机:基于硬件的完全虚拟化,需要硬件CPU虚拟化技术支持 docker容器:主流的linux发行版都支持,不需要考虑CPU是否支持虚拟化技术
两个分支版本: Docker CE 和 Docker EE。
Docker CE 即社区免费版;
Docker EE 即企业版,强调安全,但需付费使用。
前提条件: 目前,CentOS 仅发行版本中的内核支持 Docker。 Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。 Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
1、安装docker 安装一些依赖工具 yum install -y yum-utils device-mapper-persistent-data lvm2
配置yum源 yum-config-manager --add-repo mirrors.aliyun.com/docker-ce/l…
yum install docker-ce时可能遇到的报错:
Error: Package: 3:docker-ce-18.09.0-3.el7.x86_64 (docker-ce-stable)
Requires: container-selinux >= 2.9
解决办法:
安装epel源 才能yum安装container-selinux
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.rep
yum install container-selinux
2、验证安装
docker
docker info
3、启动docker
systemctl status docker.service
systemctl start docker.service
systemctl stop docker.service
(开机自启)
systemctl enable docker.service
查找镜像 docker search mysql
下载镜像 docker pull mariadb docker pull hub.c.163.com/public/tomcat:7.0.28 #指定地址拉取,可不配置加速器
使用 阿里容器镜像服务 配置加速器: 前提要求:
-
注册阿里云账号
-
管理控制台---产品与服务---容器镜像服务---镜像加速器 (获取加速地址)
-
安装/升级Docker客户端 推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce
-
配置镜像加速器 针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://oegrafm4.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
查看已下载的镜像 docker images
保存下载过的(或修改过的)镜像到本地 docker save -o mariadb.tar docker.io/mariadb
移除镜像
docker rmi [IMAGE ID]
移除容器
docker rm [容器ID] ( -f 强制删除运行中的容器)
docker start 启动容器
docker stop 停止容器
docker ps 查看运行中的容器(-a 查看所有)
docker cp 容器与操作系统之间互传文件
docker commit a5723e1e5503 mynginx:v1 从容器提交一个新镜像
docker run -d -p 8088:80 --name haha mynginx:v1 从新镜像创建容器
载入本地镜像
docker load -i mariadb.tar
示例:
[root@xyh /]# docker pull training/webapp 下载镜像
Using default tag: latest
Trying to pull repository docker.io/training/webapp ...
latest: Pulling from docker.io/training/webapp
e190868d63f8: Pull complete
909cd34c6fd7: Pull complete
0b9bfabab7c1: Pull complete
a3ed95caeb02: Pull complete
10bbbc0fc0ff: Pull complete
fca59b508e9f: Pull complete
e7ae2541b15b: Pull complete
9dd97ef58ce9: Pull complete
a4c1b0cb7af7: Pull complete
Digest: sha256:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11d
Status: Downloaded newer image for docker.io/training/webapp:latest
[root@xyh /]# docker images 查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/mariadb latest 2c73b3262fff 3 days ago 363 MB
docker.io/ubuntu latest 735f80812f90 3 days ago 83.5 MB
docker.io/nginx latest c82521676580 5 days ago 109 MB
docker.io/centos latest 49f7960eb7e4 7 weeks ago 200 MB
docker.io/ubuntu 15.10 9b9cb95443b5 2 years ago 137 MB
docker.io/training/webapp latest 6fae60ef3446 3 years ago 349 MB
[root@xyh /]# docker run -d -P training/webapp python app.py 启动容器
32b34da8dcb6961672610019bcd3db42601fccfc24caac27b248a775199c9d7f
[root@xyh /]# docker ps 查看运行中的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
32b34da8dcb6 training/webapp "python app.py" 7 seconds ago Up 4 seconds 0.0.0.0:32768->5000/tcp amazing_boyd
[root@xyh /]# docker port 32b34da8dcb6 查看容器端口映射情况
5000/tcp -> 0.0.0.0:32768
[root@xyh /]#
[root@xyh /]# docker logs -f 32b34da8dcb6 查看容器中应用程序的日志(-f 实时)
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.19.236 - - [30/Jul/2018 15:49:17] "GET / HTTP/1.1" 200 -
192.168.19.236 - - [30/Jul/2018 15:49:17] "GET /favicon.ico HTTP/1.1" 404 -
192.168.19.236 - - [30/Jul/2018 15:53:39] "GET / HTTP/1.1" 200 -
[root@xyh /]# docker top 32b34da8dcb6 查看进程ID
UID PID PPID C STIME TTY TIME CMD
root 3605 3590 0 23:48 ? 00:00:00 python app.py
端口映射命令
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
nginx
docker run --privileged=true -d --name xyhnginx -p 8889:80 -v /xup/etc/nginx/nginx.conf:/etc/nginx/nginx.conf -v /xup/etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /xup/etc/nginx/html:/usr/share/nginx/html nginx
docker卸载
###docker卸载###
1首先搜索已经安装的docker 安装包
[root@localhost ~]# yum list installed|grep docker
或者使用该命令
[root@localhost ~]# rpm -qa|grep docker
docker.x86_64 2:1.12.6-16.el7.centos @extras
docker-client.x86_64 2:1.12.6-16.el7.centos @extras
docker-common.x86_64 2:1.12.6-16.el7.centos @extra
2 分别删除安装包
[root@localhost ~]#yum –y remove docker.x86_64
[root@localhost ~]#yum –y remove docker-client.x86_64
[root@localhost ~]#yum –y remove docker-common.x86_64
3 删除docker 镜像
[root@localhost ~]# rm -rf /var/lib/docker
4 再次check docker是否已经卸载成功
[root@localhost ~]# rm -rf /var/lib/docker
[root@localhost ~]#
如果没有搜索到,那么表示已经卸载成功。
关于docker镜像下载加速器配置 www.jb51.net/article/116…