Docker指北-详细讲解容器化部署

零、概述

在这里插入图片描述

一、Docker安装

1.ubuntu下安装

ubuntu安装docker环境

2.centos下安装

centos安装docker环境

二、常用命令

镜像命令

docker images 镜像名					#查看当前所有镜像
docker search 镜像名					#搜索镜像
docker pull	镜像名						#下载镜像
docker rmi -f 镜像id					#删除指定镜像
docker rmi -f $(docker images -aq)   #删除所有镜像

容器命令

docker run [可选参数] image
#参数说明
	--name="Name" 容器名字
	-d	后台方----式运行
	-it	交互运行,进入查看内容
	-p	指定容器端口 -p 8080:8080
		-p	主机端口:容器端口(常用)
	-P	随机指定端口
例:docker run -it centos /bin/bash

docker ps    	#列出正在运行的容器
docker ps -a	#包含曾经运行的

exit	#容器停止并退出
Ctrl+P+Q #容器退出不停止

docker rm -f 容器id				#删除指定容器
docker rm -f $(docker ps -aq)	 #删除所有的容器
docker ps -a -q|xargs docker rm  # 删除所有容器

#容器的运行,重启,停止,杀死
docker run 容器id
docker restart容器id
docker stop 容器id
docker kill 容器id

其它常用命令

docker top 容器id		#查看容器内部的进程
docker inspect 容器id	#查看容器的元数据

#进入正在运行的容器
docker exec -it 容器id bashShell	#打开一个新的终端
docker attach 容器id				#打开原来正在运行的终端

#从容器拷贝文件到主机上
docker cp 容器id:容器内路径 目的主机路径

镜像的提交

commit 镜像

docker commit -m="提交的消息" -a="作者" 容器id 目标镜像名称:[tag]

三、镜像讲解

在这里插入图片描述

四、容器数据卷

使用 -v 命令挂载数据卷

docker run -it -v 主机目录:容器内目录

-v 内的路径中有 ro rw**

#例如: /etc/nginx:ro  #表示只读,只能通过宿主机来修改,容器内部无法操作
#例如: /etc/nginx:rw  #表示可读可写,均可操作

#使用 -e 命令进行环境配置

#使用 --name 配置容器的名字

查看所有 卷volume 的情况

docker volume ls

卷的共享(1继承或者共享2的数据),实现容器的数据共享
容器名1 – volumes-from 容器名2
容器数据卷的生命周期是,只要有人使用它,就不会消失

五、Dockerfile

1.编写dockerfile文件

Dockerfile关键字

关键字作用
FROM指定基础镜像
MAINTAINER作者的信息
RUN执行什么命令
EXPOSE容器对外暴露的端口
WORKDIR进入到容器后进入到哪个目录
ENV配置环境变量
ADD将文件拷贝到镜像中并解压
COPY将文件拷贝到镜像中
VOLUME配置数据卷
CMD容器启动时候执行的命令
ENTRYPOINT容器启动时候执行的命令

在这里插入图片描述

2.docker build构建镜像

docker build -t lk666 .

3.docker run 运行镜像

docker run -d -p --name lk lk666

4.docker push 发布镜像


#############docker hub提交###################################
docker login -u linking0606
docker push 镜像名称

六、Docker网络

查看所有的网络

docker network ls

默认使用桥接模式

docker run -d -p tomcat01  tomcat
docker run -d -p tomcat01 --net bridge tomcat

docker0 默认,域名不能访问,–link可以打通

自定义网络 mynet

--driver birdge 		桥接网络
--subnet 192.168.0.0/16	网络ip段255*255个
--gateway 192.168.0.1	网管

命令:

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

使用自己的网络

docker run -d -p tomcat01 --net mynet tomcat

网络互连

tomcat01在网络docker01中;tomcat-net-01在mynet中

将mynet与Tomcat01连通

docker network connect mynet tomcat01

docker exec -it tomcat01 ping tomcat-net-01

七、Docker部署示例

1.安装mysql8

下载最新的mysql镜像,默认为mysql8

docker pull mysql

创建相应目录和文件,用于容器与宿主机数据同步

mkdir -p /mydata/mysql/data
mkdir -p /mydata/mysql/log
mkdir -p /mydata/mysql/conf

vim /mydata/mysql/conf/my.cnf

写入my.cnf中的内容如下

# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Custom config should go here
!includedir /etc/mysql/conf.d/

default_authentication_plugin= mysql_native_password

后台运行mysql8,并挂载数据卷,下面指定了root用户的密码为123456

docker run \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -v /mydata/mysql/data:/var/lib/mysql:rw \
    -v /mydata/mysql/log:/var/log/mysql:rw \
    -v /mydata/mysql/conf/my.cnf:/etc/mysql/my.cnf:rw \
    -v /etc/localtime:/etc/localtime:ro \
    --name mysql8 \
    --restart=always \
    -d mysql

进入容器内部

docker exec -it mysql8 /bin/sh

mysql -uroot -p

配置root用户,密码123456,可从任意ip远程连接此数据库

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

2.安装nginx

下载nginx1.10的docker镜像:

docker pull nginx:1.10

从容器中拷贝nginx配置
先运行一次容器(为了拷贝配置文件):

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-d nginx:1.10

将容器内的配置文件拷贝到指定目录:

docker container cp nginx:/etc/nginx /mydata/nginx/

修改文件名称:

mv /mydata/nginx/nginx /mydata/nginx/conf

终止并删除容器:

docker stop nginx
docker rm nginx

使用docker命令启动:

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是lk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值