文章目录
这是docker快速上手使用指南,记录了常见的docker语法,希望可以帮助到需要的您!
一、Centos下 docker的安装
1、更新update到最新的版本(一般可不执行此步骤)
yum update
2、卸载老版本docker
yum remove docker docker-common docker-selinux docker-engine
3、安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
4、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5、查看docker版本
yum list docker-ce --showduplicates|sort -r
6、安装docker
yum install docker-ce-18.03.1.ce -y
7、启动docker
systemctl start docker
8、加入开机自启
systemctl enable docker
9、配置国内镜像和指定docker挂载目录
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"],
"data-root": "/home/docker"
}
二、 docker基本概念
Docker 包括三个基本概念
镜像(Image)
容器(Container)
仓库(Repository)
Docker 镜像就是一个只读的模板。
例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。
镜像可以用来创建 Docker 容器。
Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
Docker 容器
Docker 利用容器来运行应用。
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
Docker 仓库
仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。
快速入门
2.启动容器
docker run -itd --name redis1 redis
3.进入容器
docker exec -it swoft1 bash
4.删除 停止所容器
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
5、容器网络
Docker安装后,默认会创建下面三种网络类型
docker network ls 查看默认的网络
在启动容器时使用 --network bridge 指定网络类型
bridge:桥接网络
默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了
none:无指定网络
使用 --network=none ,docker 容器就不会分配局域网的IP
host: 主机网络
使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。
例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中
- 指定自定义网络
因为默认的网络不能制定固定的地址,所以我们将创建自定义网络,并指定网段:192.168.11.0/24并命名为mynetwork,指令
如下:
docker network create --subnet=192.168.11.0/24 mynetwork
- 运行容器
docker run -itd --name nginx --net mynetwork -p 8080:8099 --ip 192.168.11.2 nginx
参数说明:
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-v 共享目录,格式为: 宿主机绝对路径:容器绝对路径
–ip: 为容器制定一个固定的ip
–net: 指定网络模式
- 查看下结果
docker ps -a
docker container
- 查看容器ip地址
docker network inspect mynetwork
- 进入容器
docker exec -it nginx bash
三、容器镜像制作及镜像导出
- 将容器制作为新的镜像
格式:docker commit -m ‘镜像描述’ -a ‘制作者’ 容器名 镜像名
docker commit -m test-nginx-summary -a 'royee' test-nginx test-nginx-os
- 容器导出为镜像文件
//格式为 docker export -o 文件名 容器名
docker export -o royeeapi.tar lnmp
- 导入镜像文件,并指定镜像名字
//将royeeapi.tar复制到另一台机器,可以将其导入为镜像。
//格式为 docker import 文件名 镜像名
docker import royeeapi.tar lnmp
- 导出镜像为文件
//格式为 docker save -o 保存镜像文件名 原镜像名
docker save -o royeeapi.tar lnmp
- 导入镜像
//格式为 docker load < 镜像文件名
docker load < royeeapi.tar
四、上传镜像至dockerhub
- 创建仓库
1、主要命令介绍 docker tag
和 docker push
docker tag : 标记本地镜像,将其归入某一仓库。
语法:docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
用法: 将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像。
docker tag ubuntu:15.10 runoob/ubuntu:v3
2、详细用例
登录【docker hub】https://hub.docker.com/
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
royee-novnc latest d8e2a86f0f89 4 hours ago 3.62GB
test-nginx-os latest 03c644991b6d 23 hours ago 133MB
nginx latest 08b152afcfae 11 days ago 133MB
2233466866/lnmp latest eea70517b175 7 weeks ago 2.58GB
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# docker tag royee-novnc royeecai/royee-vnc:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
royee-novnc latest d8e2a86f0f89 5 hours ago 3.62GB
royeecai/royee-vnc latest d8e2a86f0f89 5 hours ago 3.62GB
test-nginx-os latest 03c644991b6d 23 hours ago 133MB
nginx latest 08b152afcfae 11 days ago 133MB
2233466866/lnmp latest eea70517b175 7 weeks ago 2.58GB
[root@localhost ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: royeecai
Password:
Login Succeeded
[root@localhost ~]# docker push royeecai/royee-vnc:latest
The push refers to repository [docker.io/royeecai/royee-vnc]
6672cd9b975a: Pushed
a8e5c49dbe62: Mounted from 2233466866/lnmp
d08e41b1c0ef: Mounted from 2233466866/lnmp
174f56854903: Mounted from 2233466866/lnmp
latest: digest: sha256:92b670557b25de77c8530db18887fc48a73dbffc4b45dd1e32a8d1d49f57d3ce size: 1169