看完这篇文章,你会从一个docker小白变为一个不是那么菜的菜鸟。
docker简介
docker是一个开放源代码软件项目,让应用程序部署软件的工作可以自动化进行,借此在linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。
docker利用linux核心中的资源分离机制,例如cgroups,以及linux核心名字空间(namespaces).来创建独立的容器(containers)。
docker核心概念
docker镜像(images)
docker容器(Container)
docker客户端(client)
docker主机(Host)
docker Machine
docker的应用场景
- web应用的自动化打包和发布
- 自动化测试和持续继承、发布
- 在服务型环境中部署和调整数据库或其他的后台应用
- 从头编译或者扩展现有的openshift或Cloud Foundry平台来搭建自己的PaaS环境。
安装docker
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#yum install docker-ce
docker镜像使用:
#docker images 列举镜像
#docker pull 拉取镜像
#doccker search 查找镜像
#docker build 构建镜像
#docker tag 镜像标签
下面是一些操作命令:
1003 docker --version 查看docker版本
1004 docker images 查看已存在的镜像,如果docker没有开启会报错
1006 systemctl enable docker
1007 systemctl start docker 开启docker
1008 docker images
1011 docker pull nginx 从docker hub上拉取nginx镜像
1014 docker run nginx 直接执行会有报错
1016 docker search nginx 查找nginx镜像
1017 docker pull jwilder/nginx-proxy 拉取nginx版本镜像
1020 mkdir nginx 自己创建镜像时,需要先创建目录
1022 cd nginx
1023 touch dockerfile 目录中创建dockerfile
1024 cat dockerfile
编写:
FROM nginx 镜像来源
RUN echo 'hello world' >/usr/share/nginx/html/index.html 镜像执行动作
1032 docker build -t nginx:V1 . 创建镜像,-t指定镜像名称和版本(:分割),.指的是dockerfile所在的目录路径
1033 docker images
1034 docker run nginx:V1 会报错
1035 docker run -p 80:80 -d nginx:V1 -p指定内部端口:外部端口映射 -d指定镜像名称
1038 docker inspect nginx:V1 查看容器具体信息
#docker tag IMAGE_ID REPOSITORY_name_new 用镜像ID对镜像打标签
docker容器使用
- docker ps 查看容器
- docker run 运行容器
-
-d : 后台运行容器,并返回容器ID -i: 以交互模式运行容器,通常与-t同时使用 -p: 端口映射,格式为:主机(宿主)端口:容器端口 -t: 为容器分配一个伪输入终端 -h: 指定容器的hostname -m: 设置容器使用内存最大值
docker top 查看进程
- docker stop 停止容器
- docker start 启动容器
- docker rm 移除容器
docker容器连接
容器端口映射,容器目录映射,容器连接
#docker run -it -p 80:80 -v /root:/root nginx:V1 /bin/bash
解释:
-p指定主机:容器之间的端口映射
-v指定主机:容器之间的目录映射
加/bin/bash可以直接连接容器,进入容器
使用#docker login我们可以登录我们在docker hub上创建的账号密码,然后使用docker push将我们的镜像推送到docker hub上。
(1)登录docker hub账号,使用创建的账号,在本地登录
注意:给镜像打上标签之后才能对镜像进行push
给镜像打tag 标签:
docker tag <existing-image> <hub-user>/<repo-name>[:<tag>] #tag不指定默认为latest
hub-user是docker hub的账户名
repo-name就是创建时候的仓库名称
docker hub的使用我们可以参照这篇博客:https://blog.csdn.net/sk_grace/article/details/81220675
docker综合应用实战
- docker环境线上部署nginx
- docker环境线上部署apache
- docker环境线上部署mysql
- docker应用实例---wordpress搭建
细讲:
(1)docker环境线上部署nginx
#docker pull nginx
#docker run --name mynginx -v /some/content:/usr/share/nginx/html -p 8080:80 -d nginx
(2)docker环境部署apache
#docker pull httpd
#docker run --name apache -v "$pwd":/usr/local/apache2/htdocs/ -p 8080:80 -d httpd
(3)docker环境线上部署mysql
docker pull mysql
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123123 -p 8080:3306 -d mysql
(4)docker应用实例--wordpress搭建
#docker pull wordpress
#docker run --name wordpress -v /var/www/html:/data/web -p 8080:80 -d wordpress