Docker

论坛 期权论坛 脚本     
匿名技术用户   2021-1-7 11:06   37   0

目录

Docker安装

设置ustc镜像

Docker启动和停止命令

镜像相关命令

查看&创建并交互式容器

创建并启动守护式容器

停止&拷贝&目录挂载&ip&删除

MySql容器部署

Tomcat容器部署

Nginx容器部署

Redis容器部署

Docker Compose

迁移&备份

使用Dockerfile创建镜像


Docker安装

yum包更新到最新

yum update

安装需要的软件包 yum-util提供yum-config-manager功能,另外两个是devicemanager驱动依赖的

yum install -y yum-utils device-mapper-persitent-data lvm2

设置yum源:推荐使用ustc的

yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

安装docker

yum install -y docker-ce

查看docker版本

docker -v

设置ustc镜像

mkdir /etc/docker

vi /etc/docker/daemon.json

文件内容:

{

"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]

}

Docker启动和停止命令

systemctl start docker

systemctl stop docker

systemctl restart docker

systemctl status docker

systemctl enable docker 设置开机启动docker

镜像相关命令

查看所有镜像

[root@master ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

搜索镜像

[root@master ~]# docker search centos7

NAME DESCRIPTION STARS OFFICIAL AUTOMATED

ansible/centos7-ansible Ansible on Centos7 132 [OK]

拉取最新的centos,再使用docker images查看

docker pull centos

docker pull centos:7 7是版本号

删除镜像

docker rmi 指定的REPOSITORY或IMAGE ID

删除所有镜像,慎用

docker rmi `docker images -q`

查看&创建并交互式容器

容器是基于镜像运行

启动容器之后会直接进入容器的命令行终端,如果退出则容器停止运行

查看正在运行的容器 docker ps

查看所有容器 docker ps -a

创建并启动交互式容器 docker run -it --name=mycentos7 centos:7 /bin/bash 如果容器已存在会报错 exit退出终端并停止容器

-i 启动容器

-t 表示容器启动后会进入其命令行,即分配一个伪终端

-d 在run后面后加上-d参数则会创建一个守护式容器在后台运行

--name 命名容器

-v 目录挂载

创建并启动守护式容器

如果一个容器需要长期运行,可以设置为守护式容器

创建并启动守护式容器 docker run -id --name=mycentos2 centos:7

登录进入容器命令行 docker exec -it mycentos2 /bin/bash exit退出终端时不会停止容器

停止&拷贝&目录挂载&ip&删除

停止指定容器 docker stop mycentos2

运行指定容器 docker start mycentos2

复制本地文件到docker容器中 docker cp a.txt mycentos2:/

复制容器中文件到本地 docker cp mycentos2:/a.txt ./

目录挂载:在创建容器的时候,将本地目录和容器中目录进行映射,这样我们就可以通过修改本机文件从而去影响容器中的文件

创建并启动守护式容器mycentos3,并挂载本地目录 docker run -id -v /usr/local/test:/usr/local/test --name=mycentos3 centos:7

查看容器ip docker inspect mycentos3 172.17.0.*

删除指定容器 docker rm mycentos3

删除全部容器,慎用 docker rm `docker ps -a -q`

创建并允许守护式容器mysql5.7,基于镜像centos/mysql-57-centos7(如果不存在就会下载)

docker run -id --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7

MySql容器部署

因为本地已经启动了mysql服务并且端口是3306,所以端口被占用,启动失败

[root@master dd]# docker run -id --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7

2df7599529b28c1c502d6583975deecd3b3e2e08841d42b1d57e757dba49fff4

docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql5.7 (8ab3f48c01d3aa6b87cd4b04688de0fb5f4dd06b16bd4871eefa6d9a2621bfc5): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use.

-p 端口映射,格式为:宿主机映射端口:容器运行端口

-e 代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的远程登录密码(如果是在容器中使用root登录的话,那么其密码就为空)

进入容器命令行

docker exec -it mysql5.7 /bin/bash

进入mysql命令行

mysql -u root 或者mysql -u root -p

Tomcat容器部署

拉取最新镜像

docker pull tomcat

创建并启动镜像

docker run -id --name=mytomcat -p 9000:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat

如果出现警告:IPv4 forwarding is disabled. Networking will not work.执行如下操作

修改配置文件 vi /etc/sysctl.conf

net.ipv4.ip_forward=1

重启网络 systemctl restart network

浏览器访问 http://192.168.1.135:9000

访问docker tomcat返回404解决方案:https://blog.csdn.net/qq_40891009/article/details/103898876

Nginx容器部署

拉取nginx镜像,启动容器,浏览器访问nginx

nginx的默认端口为80,在创建容器的时候需要端口映射, -p指定 80:80

拉取镜像 docker pull nginx

创建并启动容器 docker run -id --name=nginx -p 80:80 nginx

查看运行中的容器 docker ps

浏览器访问nginx:192.168.1.135或者192.168.1.135:80 默认端口80时,可以不用加上80端口后缀

Redis容器部署

拉取redis镜像,创建并启动容器,端口映射为:-p 6379:6379

创建并启动容器 docker run -id --name=redis -p 6379:6379 redis

进入命令行

[root@slave2 ~]# docker exec -it redis /bin/bash

root@40492fbcad15:/data# cd /usr/local/bin/

root@40492fbcad15:/usr/local/bin# ./redis-cli

127.0.0.1:6379> ping

PONG

127.0.0.1:6379> set name mwt

OK

127.0.0.1:6379> get name

"mwt"

127.0.0.1:6379> exit

root@40492fbcad15:/usr/local/bin# exit

exit

[root@slave2 ~]#

Docker Compose

docker官方开源项目,负责实现对docker容器集群的快速编排。它是一个定义和运行多容器的docker应用工具。可以通过Compose修改yaml文件配置服务,然后通过一个命令来创建和运行所有服务

安装compose

curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

设置文件可执行权限

chmod +x /usr/local/bin/docker-compose

查看版本

docker-compose -version

测试:编写compose模板文件,同时启动redis、tomcat和mysql容器

创建文件夹

mkdir /usr/local/mycompose

cd /usr/local/mycompose

vi docker-compose.yml

version: '3'

services:

redis1:

image: redis

ports:

- "6379:9379"

container_name: "redis1"

networks:

- dev

mysql1:

image: centos/mysql-57-centos7

environment:

MYSQL_ROOT_PASSWORD: "root"

ports:

- "3306:3306"

container_name: "mysql1"

networks:

- dev

web1:

image: tomcat

ports:

- "9090:8080"

container_name: "web1"

networks:

- dev

- pro

networks:

dev:

driver: bridge

pro:

driver: bridge

重启docker服务

systemctl restart docker

[root@slave2 mycompose]# ls

docker-compose.yml

[root@slave2 mycompose]# pwd

/usr/local/mycompose

[root@slave2 mycompose]# docker-compose up -d

Creating network "mycompose_dev" with driver "bridge"

Creating network "mycompose_pro" with driver "bridge"

Creating web1 ... done

Creating mysql1 ... done

Creating redis1 ... done

浏览器访问tomcat:192.168.1.135:9090

访问docker tomcat返回404解决方案:https://blog.csdn.net/qq_40891009/article/details/103898876

迁移&备份

在一个容器中安装了各种组件,期望在其他服务器上也能快速拥有该容器的一切环境。我们可以将当前容器制作为一个镜像,再将该镜像复制到其他服务器上,其他服务器就可以基于该镜像运行容器

将容器保存为一个镜像

docker commit nginx nginx_img 格式为:容器name 镜像name

备份镜像为tar到本地当前路径下

docker save -o nginx.tar nginx_img 格式为:tar 镜像name

加载本机镜像到docker中,再执行命令docker images查看所有镜像

docker load -i ./nginx.tar

使用Dockerfile创建镜像

Dockfile就是一个文本文件,由一系列命令和参数构成。Docker可以读取Dockerfile文件并根据Dockerfile文件的描述来构建镜像

自己可以制作镜像

在centos7基础镜像上,添加jdk1.8并构建一个包含jdk1.8的centos7新镜像

拉取centos7镜像

docker pull centos:7

上传jdk1.8

编写Dockerfile文件

FROM centos:7

MAINTAINER ITCAST

WORKDIR /usr

RUN mkdir /usr/local/java

ADD /usr/local/bigdata/tar-back/jdk-8u201-linux-x64.tar.gz /usr/local/java

ENV JAVA_HOME /usr/local/java/jdk1.8.0_201

ENV JRE_HOME $JAVA_HOME/jre

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lit/tools.jar:$JRE_HOME/lib:$CLASSPATH

ENV PATH $JAVA_HOME/bin:$PATH

构建镜像

docker build -t=`jdk1.8`

基于新镜像创建并运行容器后运行java -version

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP