简单docker概述,轻松部署应用

Docker学习笔记

环境介绍:centos7

零、概述

在这里插入图片描述

一、Docker安装

1.移除之前的docker环境

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

2.安装必要环境

yum install -y yum-utils

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.更新软件包索引

yum makecache fast

4.下载docker

yum install docker-ce docker-ce-cli containerd.io

运行/停止docker

systemctl start docker

systemctl stop docker

运行helloworld

docker run hello-world

卸载docker

yum remove docker-ce docker-ce-cli containerd.io

rm -rf /var/lib/docker

阿里云镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    
    
  "registry-mirrors": ["https://wf09nu9h.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart 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

猜你喜欢

转载自blog.csdn.net/qq_44625080/article/details/107878060
今日推荐