docker学习笔记

windows下docker安装:(更新到最新版本后报错启动不起来了,最好还是套一个VM,搞到liunx下面用docker把)
下载docker从官网https://www.docker.com/
https://hub.docker.com/ 类似于github
download for windows 的docker-desktop
https://www.docker.com/products/docker-desktop
百度网盘:
Docker Desktop For Windows 链接: https://pan.baidu.com/s/1P78Ja73BQp59A1N86vOr7A 提取码: deqc
注册账号 xx  xx 

Docker的启动与停止
systemctl start docker 启动docker
systemctl stop docker停止docker
systemctl restart docker 重启docker
systemctl status docker 查看docker状态
systemctl enable docker 开机启动
docker info 查看docker概要信息
https://blog.csdn.net/u013931660/article/details/85210787
https://www.bilibili.com/video/BV1qE411N7aC/?spm_id_from=333.788.videocard.4
启动速度快,占用体积小
1.因为环境的不同,到到集装箱里
docker解决的就是环境的移植,比如说开发人员在本地运行程序没问题,到客户那就有问题。
运维人员搭一套环境,每个人搭一套环境,环境和环境之间有可能就产生差距,最后导致程序跑不完美
开发人员搭了一套环境,测试人员只需要一条命令就可以把环境加载过来。运维人员也需要这个环境,也可以
拿过来,只需要一条命令快速的搭起来。不需要从头安装各种软件然后配置各种软件。
简化了环境搭建的问题,使用docker搭建环境,开发,测试,生产完全都一样了
2.面向微服务
推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型
3.常用命令:
镜像相关 :
docker images(查看本地已经存在的镜像)
docker search 镜像名称(搜索的是互联网上的镜像)
docker pull 镜像名称 docker pull centos:7  拉取镜像
docker rmi 镜像ID(删除镜像)
docker rmi ‘dokcer images -q’ (删除所有镜像) ESC下面那个键敲出来的单引号
容器相关:
docker ps(查看正在运行的容器)
docker ps -a(查看所有容器)
docker ps -l (查看最后一次运行的容器)
docker ps -f status=exited (查看停止的容器)
docker run -it --name=容器名称 镜像名称:标签 /bin/bash (交互方式创建容器)
这行命令执行后就进入容器内部了 exit 退出容器
docker run -id --name=容器名称 镜像名称:标签 (守护方式创建容器)


通过docker exec -it mycentos2 /bin/bash(就是--name值)进入容器
先下载镜像文件,再run 创建容器,镜像相当于类模板,容器相当于new了一个对象。
docker容器相当于一个封闭的小linux操作系统,进入容器后对容器的操作等退出来之后就还原了
docker每个容器都相当于一个小型的封闭的Linux系统
docker start 容器名称 (启动已经关闭的容器)
docker stop 容器名称 (关闭容器)
拷贝容器中的文件到宿主容器的当前目录并重名
docker cp mycentos2:/usr/local/docker1.txt 11.txt
拷贝宿主容器当前目录下的11.txt到容器目录
docker cp 11.txt mycentos2:/usr/local/
拷贝正在运行的容器,不运行的容器都可以 cp命令是不管容器是否启动的
docker rm 容器id/name ( 删除容器)
4.目录挂载
https://www.cnblogs.com/lishuaiqi/p/11446577.html
形成映射关系
我们利用docker启动项目的时候不能直接修改容器中的内容,只能在 run 的时候挂载到本地目录或者文件来进行修改.
docker run -di -v /user/local/html:/user/local/html --name=mycentos centos:7
docker run -v c:\Sites\redmine-3.4.5\config\routes.rb:/usr/src/redmine/config/routes.rb -v c:\Sites\redmine-3.4.5\app:/usr/src/redmine/app -d -p 8088:3000 --name myredmine --link mymysql:mysql redmine:3.4.5

docker cp 1.txt mycentos2:/usr/local (拷贝1.txt到mycentos2的/usr/local目录下)
5.查看IP
docker inspect mycentos
"IPAddress": "172.17.0.2",
6. 安装mysql
docker pull mysql:5.7
docker run -di --name=mysql1 -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
docker exec -it mysql1 /bin/bash
进入容器:mysql -u root -p 123456; show databases;
-p 是端口映射,宿主机的3309对准了容器的3306
然后用Navicat连接的时候IP写成宿主机的IP 127.0.0.1:3309 root 123456
7. 安装tomcat
docker pull tomcat:jdk8-corretto
docker run -di --name=tomcat1 -p 9000:8080 -v e:\webapps:/usr/local/tomcat/webapps tomcat:jdk8-corretto
8. 安装nginx
docker pull nginx
docker run -di --name=mynginx -p 81:80 nginx
docker exec -it mynginx /bin/bash
然后通过浏览器http://192.168.17.131:81/访问
9. 安装redis
docker pull redis
docker run -di --name=myredis -p 6379:6379 redis
docker exec -it myredis /bin/bash
redis-cli
set kkk aaa
10. 迁移和备份
将容器保存为镜像 docker commit mynginx mynginx_i
将镜像保存为tar文件 docker save -o mynginx.tar mynginx_i
先删除mynginx_i镜像 ,然后执行恢复命令
docker stop myngix2
docker rm myngix2
docker rmi myngix_i
docker load -i mynginx.tar
docker run -di --name=mynginx2 -p 82:80
11. Dockerfile
是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。
对于开发人员可以为开发团队提供一个完全一致的开发环境;对于测试人员可以拿开发时所构建的镜像通过Dockerfile文件创建一个新的镜像开始工作,对于运维人员在部署时可以实现应用的无缝移植。
dockefile构建jdk8镜像
yum -y install wget
使用wget下载jdk1.8
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
tar xzf jdk-8u141-linux-x64.tar.gz
然后创建Dockfile文件
docker build -t='jdk1.8' .

FROM centos:8
MAINTAINER bozi
WORKDIR /root
RUN mkdir -p /root/server/java
ADD jdk8.tar.gz /root/server/java/

ENV JAVA_HOME /root/server/java/jdk1.8.0_141
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin;$PATH

12. Docker私有仓库
为了在局域网共享一些镜像,存放企业内部的镜像


8. centos8安装FTP服务器
https://blog.csdn.net/nokia_hp/article/details/105169211
https://blog.csdn.net/qq_27525611/article/details/103790608
https://blog.csdn.net/wojiuguowei/article/details/104250093
yum -y install vsftpd
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
192.168.17.131
查看ftp服务是否开启
ps -ef|grep ftp
netstat -anp|grep 21
调整防火墙配置
##启用ftp服务器
firewall-cmd --add-service=ftp --permanent
######增加ftp访问
firewall-cmd --add-port=10000-11000/tcp --permanent
######上述命令,开放10000-11000号的tcp端口
######如果有需要可以增加相应的udp端口
firewall-cmd --reload
##重新加载防火墙
8. centos上安装docker
https://www.cnblogs.com/ding2016/p/11592999.html
https://www.cnblogs.com/wang-yaz/p/10429899.html
systemctl start docker
设置docker开机启动 systemctl enable docker
Docker学习のWindows下如何访问Docker本身的虚拟机
https://blog.csdn.net/weixin_30677475/article/details/99035126?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.baidujs&dist_request_id=1328603.61488.16152172799875379&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.baidujs

docker run --privileged -it -v /var/run/docker.sock:/var/run/docker.sock jongallant/ubuntu-docker-client
docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host alpine /bin/sh

docker for windows pull镜像文件的安装位置
https://www.cnblogs.com/lfri/p/11621410.html
朝阳区百子湾永辉超市中国移动笔记本电脑维修
windows下powershell中使用Vim
https://blog.csdn.net/zSY_snake/article/details/100054858?utm_term=powershell%E5%AE%89%E8%A3%85vim&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduweb~default-0-100054858&spm=3001.4430

posted on 2021-03-08 15:36  防空洞123  阅读(88)  评论(0编辑  收藏  举报

导航