Docker 使用总结笔记

一、Docker 安装

 Windows下Docker安装(docker-toolbox)

在windows环境下使用docker客户端时,可选择的有:Docker Toolbox、Docker Desktop。

docker toolbox包含如下部分:

Docker CLI              - 客户端,可以理解为与docker引擎交互的接口
Docker Machine      - 服务端,类似于linux上的docker server
Docker Compose    - 执行docker-compose 命令。
Kitematic                 - Docker 的 GUI 版本。
Docker QuickStart shell - 相当于linux下docker的shell环境(可以输入各种命令)。
Oracle VM Virtualbox     - 虚拟机。

其实我们真正经常使用的主要就是 Docker QuickStart shell 了。

安装完成后,在桌面上会出现3个图标:一个是命令行形式Docker终端,一个是图形界面的Docker操作工具。

由于Docker引擎的守护进程使用的是Linux的内核,所以我们不能够直接在windows中运行docker引擎。而是需要运行Docker Machine命令 docker-machine, 在你的机器上创建和获得一个Linux虚拟机,

用这个虚拟机才可以在你的windows系统上运行Docker引擎

 安装详细过程参考
https://www.lmlphp.com/user/57799/article/item/608120

https://zhuanlan.zhihu.com/p/367683110

二、docker 使用

1、系统启用/重启/停用docker

systemctl start docker  #启用docker
systemctl restart docker #重启docker 
systemctl stop docker  #停用docker

2、docker容器

启动容器

docker run -d -p 58080:8080 -v /root/webapps/:/opt/tomcat/webapps/ --name mytomcat_1 mytomcat:1.0 /root/run.sh

#常用参数
-d:表示以“守护模式”执行,此时不会进入容器
-p:表示宿主机与容器的端口映射, 格式:-v <宿主机端口>:<容器端口>
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
--name:表示容器名称
-e:用于参数传递
-i:交互式操作
-t:终端

新建+启动容器:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明(常用):有些是一个减号,有些是两个减号

–name=“容器新名字” 为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行)

-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
也即启动交互式容器(前台有伪终端,等待交互);

-P: 随机端口映射,大写P
-p: 指定端口映射,小写p

启动交互式容器(前台命令行),要退出终端,直接输入    exit    ,这种方式退出后不会在后台运行
 

 应用开机自启

docker update 容器id/名字 --restart=always

–restart=always: 开机自启

列出当前所有正在运行的容器

docker ps [OPTIONS]

OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。

退出容器

两种退出方式:

  • exit : run进去容器,exit退出,容器停止
  • ctrl+p+q : run进去容器,ctrl+p+q退出,容器不停止

启动已停止运行的容器

docker start 容器ID或者容器名

重启容器

docker restart 容器ID或者容器名

停止容器

docker stop 容器ID或者容器名

强制停止容器 

docker kill 容器ID或容器名

删除已停止的容器 

docker rm 容器ID

一次性删除多个容器实例

两种方式:

docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm

 进入正在运行的容器并以命令行交互

docker exec -it 容器ID bashShell

--eg: docker exec -it -uroot id/bash

 重新进入

docker attach 容器ID

attach: 直接进入容器启动命令的终端,不会启动新的进程
exec: 是在容器中打开新的终端,并且可以启动新的进程

 从容器内拷贝文件到主机上

docker cp  容器ID:容器内路径 目的主机路径

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
centos       latest    5d0da3dc9764   6 months ago   231MB

[root@docker ~]# docker run -it centos /bin/bash
[root@76539a2682cc /]# 

[root@docker ~]# ls
anaconda-ks.cfg

[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
76539a2682cc   centos    "/bin/bash"   39 seconds ago   Up 39 seconds             laughing_morse

[root@docker ~]# docker attach 76539a2682cc
[root@76539a2682cc /]# cd home/
[root@76539a2682cc home]# ls

# 在容器内创建test.java镜像
[root@76539a2682cc home]# touch test.java
[root@76539a2682cc home]# ls
test.java
[root@76539a2682cc home]# exit
exit
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS                      PORTS     NAMES
76539a2682cc   centos    "/bin/bash"   About a minute ago   Exited (0) 33 seconds ago             laughing_morse

# 将文件拷贝出来
[root@docker ~]# docker cp 76539a2682cc:/home/test.java /home/
[root@docker ~]# ll /home/
total 0
-rw-r--r--. 1 root root 0 Mar 21 22:19 test.java

# 拷贝是一个手动的过程,以后使用 -v 卷的技术,可以实现,自动同步。

重要:有镜像才能创建容器,这是根本前提

启动守护式容器(后台服务器):
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的后台运行模式。

docker run -d 容器名

#使用镜像centos:latest 以后台模式启动一个容器
docker run -d centos

问题:然后docker ps -a 进行查看, 会发现容器已经退出。

很重要的要说明的一点

    Docker容器后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。

   这个是docker的机制问题,比如你的web容器,我们以nginx为例:正常情况下,我们配置启动服务只需要启动响应的service即可。例如 service nginx start
   但是,这样做 nginx为后台进程模式运行,就导致docker前台没有运行的应用。这样的容器后台启动后,会立即自杀因为他觉得他没事可做了。所以,最佳的解决方案是:将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,别中断。O(∩_∩)O哈哈~

3、docker镜像

列出镜像列表

docker images  #列出镜像信息
docker images summer-front  #列出REPOSITORY为summer-front 的镜像信息
docker images -q # 列出所有镜像的镜像id
docker images -a #列出所有的镜像信息
docker images -f "dangling=true" #列出虚空镜像信息

查找镜像

docker search java  #查看java镜像

拉取镜像
 

docker pull java #拉取最新的java镜像
docker pull java:8 #拉取指定版本的java镜像

构建镜像

docker built -it summer-gitlab:V1 .  #构建summer:V1的镜像,后面的.表示从当前上下文拉取信息进行构建

镜像添加标签

docker tag summer-gitlab 192.168.2.47:8080/summer/summer-gitlab #添加镜像标签

推送镜像到镜像仓库

docker push 192.168.2.47:8080/summer/summer-gitlab:V1  #推送镜像到镜像仓库

登录镜像仓库 

docker login -u admin -p password 192.168.2.47:8080  #登录镜像仓库,-u 用户名 -p 密码  192.168.2.47:8080为仓库地址

192.168.2.47:8080为仓库地址 

 4、docker日志查看

docker logs dockername/dockerid

参考教材

Docker教程:Docker入门实践(精讲版)

Docker中文文档

Docker教程视频(适合docker 0基础,Docker初学入门)_哔哩哔哩_bilibili

Docker常见命令汇总——非常详细的材料


 

参考资料
官方英文资源
· Docker官网:http://www.docker.com

· Docker windows入门:Redirecting…

· Docker Linux 入门:Redirecting…

· Docker mac 入门:Redirecting…

· Docker 用户指引:Redirecting…

· Docker 官方博客:Docker Blog | App Development News and Thought Leadership | Docker

· Docker Hub: Docker Hub

· Docker开源: Open Source Container Project Collaboration | Docker

中文资源
· Docker中文网站:http://www.docker.org.cn

· Docker中文文档:Docker中文文档 Docker概述-DockerInfo

· Docker安装手册:Docker支持的安装方式 - Docker安装手册 - docker中文社区

· 一小时Docker教程 :https://blog.csphere.cn/archives/22

· Docker中文指南:安装 | Docker 中文指南

其它资源 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值