docker 系列 - 基础镜像环境和Docker常用命令整理
=======================
docker 基础镜像环境 alpine
=======================
可以使用 docker search 命令搜索指定的 image, 或者访问网址 https://hub.docker.com/explore/
在hub官网会经常能看到 alpine 字样, alpine 是要给非常轻量级的Linux发行版,Docker官方已经推荐使用alpine 代替之前的 Ubuntu作为基础镜像环境, 好处是制作出的最终镜像文件很多, 但docker dub上目前仍以 Ubuntu 为主流的基础镜像环境.
下面是几个常用发行版基础镜像的大小.
REPOSITORY TAG IMAGE ID VIRTUAL SIZE
alpine latest 4e38e38c8ce0 4.799 MB
debian latest 4d6ce913b130 84.98 MB
ubuntu latest b39b81afc8ca 188.3 MB
centos latest 8efe422e6104 210 MB
alpine 内置 apk 包管理器, 而不是Ubuntu的apt, alpine 包的网址是 https://pkgs.alpinelinux.org/packages
=======================
常用 docker images
=======================
可以使用 docker search 命令搜索指定的 image, 或者访问网址 https://hub.docker.com/explore/
docker pull openjdk:8-alpine # 大小为107.8MB
docker pull openjdk:8 # 大小为309MB
docker pull nginx
docker pull tomcat
docker pull wnameless/oracle-xe-11g
docker pull python
docker pull mysql
docker pull mongo
docker pull redis
docker pull rabbitmq
docker pull rabbitmq:3-management
=======================
用于 docker 命令学习的镜像和命令
=======================
下面镜像常用于 docker 命令学习
docker pull nginx:1.15-alpine #只需要20M的空间
docker pull busybox #只占用2M空间
以守护态运行容器, 经常用于容器的学习.
docker run -d --name mybusybox busybox /bin/sh -c "while true; do echo hello world; sleep 1; done"
使用镜像nginx:1.15-alpine以后台模式启动一个容器, 并将容器的80端口映射到主机随机端口(80是该镜像expose的端口)
docker run -P -d --name mynginx1 nginx:1.15-alpine
使用镜像nginx:1.15-alpine以后台模式启动一个容器, 指定主机的端口为 80
docker run -p 80:80 -d --name mynginx2 nginx:1.15-alpine
=======================
docker 容器端口映射
=======================
1. 指定host端口和容器内端口
使用镜像nginx:1.15-alpine以后台模式启动一个容器, 指定主机的端口为80, 冒号前的host端口, 冒号后为容器内部的端口.
docker run -p 80:80 -d --name mynginx2 nginx:1.15-alpine
2. 容器内端口随机分配一个Host端口
下面 -p 参数的 80 指的是容器内部的端口, 没有指定host端口, docker在主机上自动开放一个映射端口(当然是未被占用的), 自动端口号一般大于等于 32768 .
docker run -p 80 -d --name mynginx2 nginx:1.15-alpine
3. 自动为所有的 Dockerfile EXPOSE 端口映射Host端口
Dockerfile EXPOSE 可能会开放多个端口, 使用 -P 参数将自动为这些容器内部端口分配对应的Host主机端口
docker run -P -d --name mynginx1 nginx:1.15-alpine
=======================
docker 的一些常用命令
=======================
docker images 命令, 显示可用的容器
docker rmi <镜像Id> 命令,删除指定镜像
docker pull hello-world 命令 , 下载 hello-world image
docker rmi <镜像Id> 命令,删除指定镜像
docker ps 命令, 列出当前正在运行的容器, 结果的第一列是container_Id, 第2列是容器名称.
docker ps -a 命令, 列出当前正在运行的和之前运行完的容器
docker stop container_id/container-name 命令, 停止指定的容器, 该容器Id或名称可以从docker ps中获取.
docker restart container_id/container-name 命令, 重新启动指定的容器, 该容器Id或名称可以从docker ps中获取.
docker start container_id/container-name 命令, 启动指定的容器, 该容器Id或名称可以从docker ps中获取.
docker rm container_id/container-name, 删除指定的容器
docker rm $(docker ps -a -q) 命令, 删除所有运行结束了容器, 正在运行的容器不会被删除
docker top container_id/container-name, 查看容器内的进程
docker logs [-f] [-t] [--tail string] 容器名, 查看容器的日志输出, -f是打开跟踪, -t是加上时间戳, --tail 100 表示仅显示最后的100行日志
docker search nginx, 在hub站点中搜索 nginx 镜像
docker image inspect image_id 命令, 显示指定镜像的详细信息.
docker container inspect container_id/container-name 命令, 显示指定容器的详细信息,包括容器的Ip
docker images -f dangling=true 命令, 列出没有被容器化的镜像
docker rmi $(docker images -qf dangling=true) 命令, 删除那些没有被容器化的镜像
docker system df 命令, 可以一次性查看镜像/容器/host volume的磁盘占用情况.
docker ps -s 命令, 输出容器的空间占用
=======================
docker 一些管理命令集
=======================
除了上面常用的命令外, docker 还有一些管理命令集, 这些命令集还可以包含二级命令:
config Manage Docker configs
container Manage containers
image Manage images
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
比较常用的是,
docker image build, 编译 Dockfile
docker network create, 创建 docker 网络
docker volume create, 创建数据卷
=======================
docker run/exec 命令
=======================
运行 hello-world 容器, 如果本地没有下载, 将会自动从hub站点下载.
docker run hello-world 命令
以守护态运行容器
docker run -d --name mybusybox busybox /bin/sh -c "while true; do echo hello world; sleep 1; done"
登陆一个容器, 运行中的容器其实是一个功能完备的Linux操作系统, 所以我们可以在登陆该容器执行常规的Linux命令.
docker exec -it container_id/container-name /bin/bash
使用 redis-cli 登陆 myredis 容器
docker exec -it myredis redis-cli
exec 后的 -it 参数的意思是, 以交互的方式并分配一个伪tty, 经常一起联用.
=======================
docker redis 使用
=======================
# 下载最新版的 redis image
docker pull redis:latest
# 简单方式启动 redis 服务
pull run redis
下面命令摘自: https://blog.csdn.net/cookily_liangzai/article/details/80726163
docker run --name redis-test -p 6379:6379 -d --restart=always redis:latest redis-server --appendonly yes --requirepass "your passwd"
--name redis-test: 为容器指定名称为 redis-test
-p 6379:6379 :将容器内端口映射到宿主机端口(容器端口在右边, 宿主端口在左边)
-d: 即 --detach, 以后台的方式执行容器
–restart=always: 随docker启动而启动
redis-server –appendonly yes: 在容器执行redis-server启动命令, 并打开redis持久化配置
requirepass "your passwd" : 设置redis认证密码
下面命令摘自: http://www.cnblogs.com/cgpei/p/7151612.html
# docker run -p 6699:6379 --name myredis -v $PWD/redis.conf:/etc/redis/redis.conf -v $PWD/data:/data -d redis:3.2 redis-server /etc/redis/redis.conf --appendonly yes
命令说明:
--name myredis : 指定容器名称,这个最好加上,不然在看docker进程的时候会很尴尬。
-p 6699:6379 : 端口映射,默认redis启动的是6379,至于外部端口,随便玩吧,不冲突就行。
-v $PWD/redis.conf:/etc/redis/redis.conf : 将主机中当前目录下的redis.conf配置文件映射。
-v $PWD/data:/data -d redis:3.2 : 将主机中当前目录下的data挂载到容器的/data
--redis-server --appendonly yes :在容器执行redis-server启动命令,并打开redis持久化配置\
注意事项:
如果不需要指定配置,-v $PWD/redis.conf:/etc/redis/redis.conf 可以不用 ,
redis-server 后面的那段 /etc/redis/redis.conf 也可以不用。
=======================
MySQL 官方Docker镜像的使用
=======================
摘自 https://itbilu.com/linux/docker/EyP7QP86M.html
docker run --name itbilu-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-pass -d mysql:5.7
我们就创建了一个名为 itbilu-mysql 的MySQL数据库服务器容器实例, 在创建数据库时,通过环境变量MYSQL_ROOT_PASSWORD设置数据库的root密码,还通过5.7标签指定了所使用的镜像版本。
不使用cnf文件的配置方式, 启动一个MySQL服务器容器,并使用UTF-8(utf8mb4)格式的表编码:
docker run --name itbilu-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-pw -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
使用宿主机/my/cnf/my.cnf 配置文件,这时就可以通过以下方式启动MySQL容器
docker run --name itbilu-mysql -p 3306:3306 -v /my/cnf/:/etc/mysql/ -e MYSQL_ROOT_PASSWORD=my-pass -d mysql:5.7
指定MySQL数据目录的volume
docker run --name itbilu-mysql -p 3306:3306 -v /my/datadir:/var/lib/mysql -v /my/cnf/:/etc/mysql/ -e MYSQL_ROOT_PASSWORD=my-pw -d mysql:5.7
docker 系列 - 基础镜像环境和Docker常用命令整理的更多相关文章
- docker系列四之docker镜像与容器的常用命令
docker镜像与容器的常用命令 一.概述 docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人 ...
- Docker系列-(2) 镜像制作与发布
上篇文章引入了Docker的基本原理和操作,本节文章主要介绍如何制作Docker镜像和发布. 镜像文件结构 Docker镜像的本质是一系列文件的集合,这些文件依次叠加,形成了最后的镜像文件,类似于下图 ...
- centos7安装docker并安装jdk和tomcat(常用命令)
阿里专属的镜像加速 在宿主机器编辑文件:vi /etc/docker/daemon.json 阿里专属的镜像加速地址,类似于"https://91cntlkt.mirror.aliyuncs ...
- docker的一些常用命令整理
docker清除命令: 杀掉所有容器:docker kill $(docker ps -q) ; 清除所有容器:docker rm $(docker ps -a -q) ; 清除所有镜像:docker ...
- docker的ubuntu镜像无ifconfig和ping命令
docker的ubuntu镜像无ifconfig和ping命令 或者 ubuntu系统中无ifconfig 和 ping 解决方案: 执行以下鸣冷: apt-get update apt-get in ...
- 【linux】---常用命令整理
linux常用命令整理 一.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭配: l ...
- salt 常用命令整理
salt 常用命令整理 ***********模块*********** 查看模块列表module salt 'minion' sys.list_modules 查看指定module的function ...
- Tomcat性能优化及常用命令整理
1汤姆猫性能优化 1.1连接参数 1.1.1默认连接配置 默认连接器采用阻塞式 IO,默认最大线程数为200,配置如下: <Connector port="8080" pro ...
- linux 服务器常用命令整理
linux 服务器常用命令整理 目录 网络分析 - tcpdump \ telnet \ (netstat \ ss \ lsof) \ nload 网络传输 - scp \ rsync \ (rz ...
随机推荐
- yyb省选前的一些计划
突然意识到有一些题目的计划,才可以减少大量查水表或者找题目的时间. 所以我决定这样子处理. 按照这个链接慢慢做. 当然不可能只做省选题了. 需要适时候夹杂一些其他的题目. 比如\(agc/arc/cf ...
- rt-thread之串口设备的配置流程
@2019-01-30 [小记] > rt-thread 工程启动之后先是进入函数 rtthread_startup 做一些系统运行前的基础工作,主要有: * 板级硬件初始化 * 系统定时器初始 ...
- 「HAOI2018」染色 解题报告
「HAOI2018」染色 是个套路题.. 考虑容斥 则恰好为\(k\)个颜色恰好为\(c\)次的贡献为 \[ \binom{m}{k}\sum_{i\ge k}(-1)^{i-k}\binom{m-k ...
- Python3 与 C# 面向对象之~异常相关
周末多码文,昨天晚上一篇,今天再来一篇: 在线编程:https://mybinder.org/v2/gh/lotapp/BaseCode/master 在线预览:http://github.les ...
- [学习笔记]FWT——快速沃尔什变换
解决涉及子集配凑的卷积问题 一.介绍 1.基本用法 FWT快速沃尔什变换学习笔记 就是解决一类问题: $f[k]=\sum_{i\oplus j=k}a[i]*b[j]$ 基本思想和FFT类似. 首先 ...
- spring 中连接多个数据源
http://www.ityouknow.com/springboot/2016/08/20/springboot(%E4%BA%94)-spring-data-jpa%E7%9A%84%E4%BD% ...
- poj1958 strange towers of hanoi
说是递推,其实也算是个DP吧. 就是4塔的汉诺塔问题. 考虑三塔:先从a挪n-1个到b,把最大的挪到c,然后再把n-1个从b挪到c,所以是 f[i] = 2 * f[i-1] + 1; 那么4塔类似: ...
- c# WebApi之解决跨域问题:Cors
什么是跨域问题 出于安全考虑,浏览器会限制脚本中发起的跨站请求,浏览器要求JavaScript或Cookie只能访问同域下的内容.由于这个原因,我们不同站点之间的数据访问会被拒绝. Cors解决跨域问 ...
- python基础之FTP
目的:实现客户端到服务器的上传功能 所需文件夹: 客户端是FTP_client 服务端是FTP_server bin文件存放执行文件,conf下存放配置文件,core下是核心文 ...
- linux服务器上tomcat日志中的中文乱码
转: 修改tomcat应用日志默认编码格式 前言 今天开发跟我说tomcat日志中的中文不能正常显示,根据以往的经验,我觉得可能跟服务器的编码有关,于是尝试各种方法,但还是没能解决问题. 后来我突然想 ...