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,最好是下最新版本 ...
随机推荐
- Windows8.1 关机异常的解决
昨天电脑无法正常关机,关机后风扇仍然转,硬盘也在读写,等了很长时间都没有完全关机,只能强制关机.以前其他系统也遇到过这个问题,因此考虑还是驱动问题.回想了下之前装过VirtualBox,考虑到应该是V ...
- win7 卸载vs2010 后无法安装vs2008 提示 Microsoft Visual Studio Web创作组件安装失败 (转)
解决方法: Visual Studio 2008 安装失败(“Web 创作组件”无法安装)解决方法 Visual Studio 2008 安装失败(“Web 创作组件”无法安装)解决方法(一) 今 ...
- Set Matrix Zeroes leetcode java
题目: Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. cl ...
- VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法
下面是一篇文章比较详细,其实具体操作很简单,把Web Service服务地址,利用工具(VS2010),通过添加引用的形式,添加到项目中来就可以应用了. 大家如果这个地方不会操场的话,可以问问我QQ: ...
- wifidog接口文档(转)
目录(?)[-] 网关心跳协议 请求信息 回复格式 例子 用户状态心跳协议 请求格式 注意 回复格式 状态码 例子 跳转协议 请求格式 例子 注册协议 请求格式 例子 wifidog是搭建无线热点认证 ...
- centos 新建swap区文件
一. 相当详细且流程完整,(推荐阅读) 在centos7上新建swap区 https://www.digitalocean.com/community/tutorials/how-to-add-swa ...
- Docker创建MySQL容器环境两部曲
1:下载MySQL镜像 需要执行以下命令,确保主机或者VM联网,从官网下载mysql的最新镜像(镜像版本以官网为主) docker pull mysql 下载成功后执行 docker image ...
- 如何实现json字符串和 BsonDocument的互相转换
String to BsonDocument string json = "{ 'foo' : 'bar' }"; MongoDB.Bson.BsonDocument docume ...
- Intercepting a 404 in IIS 7 and up
Lately I've been working on a system that needs to serve flat files, which is what IIS is very goo ...
- gson ajax 数字精度丢失
ajax传输的json,gson会发生丢失,long > 15的时候会丢失0 解决方案:直接把属性为long的属性自动加上双引号成为js的字符串,这样就不会发生丢失了,ajax自动识别为字符串. ...