Docker记录

docker学习记录

1.linux 部分指令熟悉
日志排查,端口,进程查看..
2.docker 镜像和容器命令
镜像获取的5种方式:bulid pull commit export save
容器的create run start/restart pause/unpause stop/kill rm
进入容器:attach exec -it
出容器:exit vs ctrl+p+q
容器内执行命令:exec
docker安装tomcat,nginx,mysql
docker 镜像、仓库、容器-》开发的工作:将项目整合到Dockfile提供镜像给DockerServer
3.idea docker插件 和 docker|dockerfile-maven-plugin
docker远程访问
项目经Dockerfile生成镜像给Docker Sever
4.idea Deployment工具 vs wagon-maven-plugin(自动发布)
wagon插件=Deployment+ ssh session工具
5.Dockfile 使用测试--》Docker容器就是一个简易的linux系统
可以把容器看做是一个简易版的 Linux 环境,包括root用户权限、进程空间、用户空间和网络空间等和运行在其中的应用程序。
在一个镜像的基础上安装软件,配置启动软件
RUN,CMD,ENTRYPOINT的使用
6.C/S架构下 tomcat/docker相关插件配置使用的类比
服务端的配置(监听port)
客户端idea插件工具和maven插件的使用
连通的配置信息
7.Docker网络和容器之间的通信
网络模式:host/container/none/bridge/自定义
通信:
IP 通信
Docker DNS Server:根据容器名
joined 容器:一个httpd

docker安装mysql

docker 中下载 mysql

docker pull mysql

启动

docker run --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=zsl383155 -d mysql:5.6
or 
docker run -p 3307:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql镜像

进入容器

docker exec -it mysql /bin/bash

登录mysql

mysql -u root -p
#ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lzslov123!';

添加远程登录用户

create user 'zhangshilei'@'%' IDENTIFIED BY 'zsl383155';
GRANT ALL PRIVILEGES ON *.* TO 'zhangshilei'@'%';

注意防火墙问题!!

自定义bridge模式

创建network

# docker network create -d bridge --ip-range=192.168.1.0/24 --gateway=192.168.1.1 --subnet=192.168.1.0/24 bridge2
# docker network ls
创建两个容器指定ip并指定network

# docker run -it --network=bridge2 --ip=192.168.1.3 busybox

# docker run -it --network=bridge2 --ip=192.168.1.4 busybox 

通过docker history查看镜像构建过程(即dockerfile)
修改已启动docker 容器的启动参数
docker build
修改端口 挂载等
1.commit 后重新run
2.修改容器的配置文件
docker inspect containerName:查看容器的相关配置(port,挂载,网络,workdir ...)

dockr 的理念:所要运行的环境,最好是在镜像制作时就组建完毕,一旦生成镜像,发布出去,镜像所起的容器都不要再修改了,所有需要数据持久化的,请使用数据存储卷,或者制造下一个版本的镜像重新发布上线。

二:回顾(19-11-19)
1.Docker 架构属于C/S架构
S: Docker Daemon / Docker Client
daemon默认配置是只能本地访问,client可以连接远程docker daemon

2.Docker镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS (linux 一切皆文件)

3.Docker容器 = 镜像 + 读写层

4.写时复制(Copy-on-Write):当需要修改一个文件,而该文件位于低层 branch时,
顶层 branch 会直接复制低层 branch 的文件至顶层再进行修改,而低层的文件不变,
这种方式即是 CoW 技术(写复制)
5.build->run->commit

6.ENTRYPOINT VS CMD and RUN
ENTRYPOINT 的 Exec 格式用于设置容器启动时要执行的命令及其参数,同时可通过CMD命令或者命令行参数提供额外的参数。
ENTRYPOINT 中的参数始终会被使用,这是与CMD命令不同的一点。
VS
CMD 指令允许用户指定容器的默认执行的命令。此命令会在容器启动且 docker run 没有指定其他命令时运行

注意:当ENTRYPOINT和CMD连用时,CMD的命令是ENTRYPOINT命令的参数

RUN 用于安装应用和库

7.已启动的容器如何修改端口映射(也可以删除重新run)
1.关闭容器
2. vi /var/lib/docker/containers/{container_id}/hostconfig.json
找到PortBindings 值。在这个json集合里边追加新端口
eg:
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
],
"8888/tcp": [
{
"HostIp": "",
"HostPort": "8888"
}
]
}
3.启动服务

【var/lib/docker/containers/{container_id}/hostconfig.json】这里的这个文件也可以修改挂载

你可能感兴趣的:(Docker记录)