Docker安装和常用命令
Docker安装
Docker的安装可以参考 https://docs.docker.com/ 下面的 Get Docker / Docker CE / Linux, 需要关注的主要是CentOS和Ubuntu, 可以通过添加仓库地址再通过 yum install 或 apt install安装, 也可以下载rpm包和deb包进行安装.
方式一: 通过deb包进行安装
对应Ubuntu18.04 64bit系统的deb下载地址是 https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/
Update 2018-12-18: 在版本18.09之后, docker将安装包分成了三个, container.io, docker-ce-cli 和 docker-ce, 需要依次都安装
安装完之后, 会自动在系统中添加 docker 服务
方式二: 通过apt安装
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt install docker-ce
# check
docker version
禁止docker随系统自启动
sudo systemctl disable docker
设置docker的mirror, 否则build会非常慢
方法一:
$ sudo edit /lib/systemd/system/docker.service
# 修改以下这行, 加上后面的 --registry-mirror=https://docker.mirrors.ustc.edu.cn
ExecStart=/usr/bin/dockerd -H fd:// --registry-mirror=https://docker.mirrors.ustc.edu.cn
方法二:
编辑/etc/docker/daemon.json 添加以下内容, docker-cn.com也是国内的源. 一个暂时还可用的阿里的源 https://x9o4p9lt.mirror.aliyuncs.com/
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
将自己的用户加入docker用户组, 用id命令查看是否生效. 需要退出本ID的全部登录, 使group设置生效, 如果不生效则重启.
# 加入用户组
sudo usermod -aG docker milton
# 查看结果
getent group
# 或者
cat /etc/group
# 查看是否生效
id
Docker Network相关命令
# 查看docker网络列表
docker network ls # 查看具体网络明细
docker network inspect mybridge # 创建自定义网络
docker network create --subnet=192.168.250.1/24 mybridge
Docker Image相关命令
# 查找image
docker search centos # 下载image, 对已经下载的image, 再次执行pull命令时, 会检查更新并下载
docker pull centos:latest # 查看image
docker image ls
docker image ls --all # 删除image
docker image rm [IMAGE ID] # 导出image
docker save milton-java -o docker-image-milton-java.tar # 导入image (可以在其他主机上)
docker load -i docker-image-milton-java.tar # 使用Dockerfile制作image
docker build -t scot-eureka:1.0 [Dockerfile存放路径]/
注意: 制作image的过程中, 如果失败退出, 会产生一个停止的容器, 以及一个<none>属性的image, 需要对应的用docker rm和docker image rm清理掉
Docker 容器相关命令
# 用image创建容器, 使用默认的bridge网络并启动
docker run -d --name eureka -p 8762:8761 scot-eureka
docker run -d --name mongo -v /home/milton/mongo:/mongo -p 27017:27017 mongo:4
docker run -d --name mysql57 -v /home/milton/mysql57:/mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7 --character-set-server=utf8 # 用image创建容器并启动, 指定固定IP (必须使用自定义network)
docker run -d --name redis2 --net mybridge --ip 192.168.250.2 redis:4.0.11
docker run -itd --name java8 --net mybridge --ip 192.168.250.4 java:8 /bin/bash
docker run -itd --name eureka --net mybridge --ip 192.168.250.3 scot-eureka:latest /bin/bash # 查看容器
docker ps
docker ps -a # 查看容器日志
docker logs -f [CONTAINER NAME] # 将当前终端加入容器, 不是用-it启动的容器勿进行此操作, 否则无法用 ^P^Q退出
docker attach [CONTAINER NAME] # 进入容器shell, 在容器中交互地执行命令, 用这种方式进入容器shell是比较安全的, 可以通过exit返回主机shell
docker exec -it java8 /bin/bash # 启动/停止容器
docker start/stop [CONTAINER NAME] # 删除容器
docker rm [CONTAINER NAME] # 用容器ID创建image
docker commit -a "Milton" -m "java:8 with nano+net-tools" 8da987975c42 milton-java:8
如果是启动ubuntu这样的容器, 需要使用 -itd 参数, 如果只使用 -d, 那么因为没有跑主进程, 容器会立即退出, 例如
# 运行一个ubuntu18.04容器, 名称为ubuntu1, 将22端口映射到宿主的50001端口上, 在/ubuntu1目录挂载宿主的/home/milton/ubuntu1目录
docker run -dit --name ubuntu1 -v /home/milton/ubuntu1:/ubuntu1 -p 50001:22 ubuntu:18.04
如果只是一次性使用的容器, 需要加上--rm参数, 例如
docker run -it --rm ubuntu:16.04 bash
配置容器随着docker服务启动而自启动
# 查看容器配置
# docker inspect [container id]
# 检查里面的 RestartPolicy
docker inspect mongo # 设置容器自动启动
# docker update --restart=always [container id]
# 默认为no状态, 对于always状态, 在容器被手动stop时是不会自动重启的.
docker update --restart=always mongo
.
Docker其他常用命令
# 测试运行Hello World
docker run hello-world
# 查看版本
docker --version
# 查看信息
docker info
# 登录, 回车会提示输入密码. 不登录的话, 无法下载alpine这样的image
docker login -u [username]
.
Docker run命令的详细参数说明
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数说明
-a, --attach 绑定标准输入输出 Attach to STDIN, STDOUT or STDERR (default [])
-c, --cpu-shares int CPU的份额(相对权重, 整数) CPU shares (relative weight)
--cpuset-cpus 绑定容器到指定CPU运行, CPUs in which to allow execution (0-3, 0,1)
-d, --detach 后台运行容器,并返回容器ID Run container in background and print container ID
-i: 以交互模式运行容器,通常与 -t 同时使用
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-p, 小写的P为端口映射,格式为:主机(宿主)端口:容器端口, Publish a container's port(s) to the host (default [])
-P, --publish-all 大写的P表示将所有暴露的端口随机发布 Publish all exposed ports to random ports
-m :设置容器使用内存最大值
-h, --hostname 指定容器的hostname, 例如 "mars"
-e, --env username="ritchie": 设置环境变量
--env-file value 从指定文件读入环境变量 Read in a file of environment variables (default [])
-u, --user 用户名或UID, Username or UID (format: <name|uid>[:<group|gid>])
-v, --volume 绑定一个本地路径到容器的指定路径. 这样当容器结束后数据依然留在本地文件系统中 Bind mount a volume (default [])
--name "nginx-lb" 为容器指定一个名称, 不能与已经存在的容器重名
--ip 指定容器的IPv4地址, 必须要和 --net 合用, 只能用于自定义网络, 不能使用docker默认的bridge网络, Container IPv4 address (e.g. 172.30.100.104)
--ip6 指定容器的IPv6地址, Container IPv6 address (e.g. 2001:db8::33)
--mac-address 指定容器的MAC地址 Container MAC address (e.g. 92:d0:c6:0a:29:33)
--dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致
--dns-search example.com 指定容器DNS搜索域名,默认和宿主一致
--net="bridge": 指定容器的网络, 支持 bridge/host/none/container: 四种类型
--ulimit Ulimit选项 Ulimit options (default [])
--link=[]: 添加链接到另一个容器
--expose 开放一个端口或一组端口 Expose a port or a range of ports (default [])
--rm 自动检测如果容器存在, 则将其删除 Automatically remove the container when it exits
例子
# 使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx
docker run --name mynginx -d nginx:latest
# 使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口
docker run -p -d nginx:latest
# 使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 端口映射到主机的 端口,主机的目录 /data 映射到容器的 /data
docker run -p : -v /data:/data -d nginx:latest
# 绑定容器的 端口,并将其映射到本地主机 127.0.0.1 的 端口上。
docker run -p 127.0.0.1::/tcp ubuntu bash
# 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
runoob@runoob:~$ docker run -it nginx:latest /bin/bash
root@b8573233d675:/#
# 生产环境中设置了环境变量的启动命令
docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /:/host \
-e FLUENTD_OUTPUT=elasticsearch \
-e ELASTICSEARCH_HOST=elasticsearch \
-e ELASTICSEARCH_PORT=9200 \
--link=quickstart_elasticsearch_1:elasticsearch \
registry.cn-hangzhou.aliyuncs.com/acs-sample/fluentd-pilot:latest
.
Docker安装和常用命令的更多相关文章
- docker 安装与常用命令与常用容器(containers)环境
注意区别 container 与 image 的关系,container 的建立需要 image 的承载,也即 container 依赖 image,停止并删除了 container 并不会删除 im ...
- Docker 安装与常用命令介绍
docker的镜像文件作用就是:提供container运行的文件系统层级关系(基于AUFS实现),所依赖的库文件.已经配置文件等等. 安装docker yum install -y docker 启动 ...
- Docker 安装与常用命令
目录 Docker 安装 1)安装 2)启动 3)镜像加速器 Docker 常用命令 1)Docker 进程相关命令 2)Docker 镜像相关命令 docker search:查找镜像仓库中的镜像 ...
- Docker安装及常用命令
修改机器名: [root@docker /]# hostnamectl set-hostname Docker 安装EPEL源: [root@docker /]# yum -y install epe ...
- docker安装以及常用命令
yum-config-manager 对/etc/yum.repos.d/下的.repo文件进行增删改查 yum install -y yum-utils 添加docker源,由于yum源的docke ...
- Docker 入门指南——常用命令
前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...
- Docker系列之常用命令操作手册
目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4.Docker容器操作 Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Doc ...
- Docker基础和常用命令
Docker基础和常用命令 一,Docker 简介 1.1,什么是 Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...
- ios开发环境配置及cordova安装与常用命令
一.ios开发环境配置 1.首先要有台Mac Book,如果有Mac Book,跳过步骤2.3.4,如果没有,执行步骤2.3.4: 2.下载并安装VMware Workstation,最好是下最新版本 ...
随机推荐
- Intellij IDEA打开就闪退或关闭
找到idea安装目录的bin目录,搜索vmoptions可以看到两个文件, idea.exe.vmoptions idea64.exe.vmoptions 1 这两个文件就是IDEA的一些配置文件,带 ...
- apache+jetty 配置web jsp服务器负载均衡
首先,查找中文资料,貌似很少,有一个网友写了点,但是1版本过老,2有些地方有错误. 经过我自己摸索,记录一下.这个图很简洁明了 第一阶段 ,配置jetty 首先从 http://download.ec ...
- uva 10344 23 out of 5 凑运算结果 全排列+dfs
五个数三个运算符号,排列之后凑成结果为23,不考虑优先级. 很水,数据量也不大,先生成五个数的全排列,用dfs找出结果能否为23即可. 代码: #include <cstdio> #inc ...
- Tiny210 U-BOOT(二)----配置时钟频率基本原理
U-BOOT在启动的过程中,需要配置系统时钟. 配置系统时钟,大概是以下几个步骤: (1)设置系统PLL锁定时间 (2)配置PLL (3)配置各模块分频系数 (4)切换到PLL时钟 1.基本原理 首先 ...
- 7.1 服务暴露前的准备-ServiceBean的装配
dubbo的服务暴露以第一章 第一个dubbo项目中的dubbo-demo-provider来讲述. 列出dubbo-demo-provider的xml配置: <?xml version=&qu ...
- go语言之进阶篇创建goroutine协程
1.goroutine是什么 goroutine是Go并行设计的核心.goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现 ...
- 读书笔记,《Java 8实战》,第四章,引入流
集合是Java中使用最多的API,但集合操作却远远算不上完美.主要表现在两点, 第一,集合不能让我们像数据库的SQL语言一样用申明式的语言指定操作: 第二,现在的集合API无法让我们 ...
- 解剖android中的闹钟app 一
首先,看一看android市场上有哪些主流的闹钟app了,我们来进行一个简单的评测: 一.正点闹钟 这是一款源自金山技术的闹钟app,其主力创始团队都是来自于金山,其装机量,下载量都是排名第一.老样子 ...
- pThreads线程(二) 线程同步--互斥量/锁
互斥量(Mutex)是“mutual exclusion”的缩写.互斥量是实现线程同步,和保护同时写共享数据的主要方法. 互斥量对共享数据的保护就像一把锁.在Pthreads中,任何时候仅有一个线程可 ...
- 【GRPC】GRPC-负载均衡
GRPC-负载均衡 grpc nginx_百度搜索 grpc(1):Centos 安装java的grpc服务,使用haproxy进行负载均衡,nginx不支持 - freewebsys的专栏 - CS ...