docker学习笔记

196 阅读3分钟

本文已参与 ⌈新人创作礼⌋ 活动,一起开启掘金创作之路

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 #指定地址拉取,可不配置加速器

使用 阿里容器镜像服务 配置加速器: 前提要求:

  • 注册阿里云账号

  • 管理控制台---产品与服务---容器镜像服务---镜像加速器 (获取加速地址)

  1. 安装/升级Docker客户端 推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce

  2. 配置镜像加速器 针对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…