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安装和常用命令的更多相关文章

  1. docker 安装与常用命令与常用容器(containers)环境

    注意区别 container 与 image 的关系,container 的建立需要 image 的承载,也即 container 依赖 image,停止并删除了 container 并不会删除 im ...

  2. Docker 安装与常用命令介绍

    docker的镜像文件作用就是:提供container运行的文件系统层级关系(基于AUFS实现),所依赖的库文件.已经配置文件等等. 安装docker yum install -y docker 启动 ...

  3. Docker 安装与常用命令

    目录 Docker 安装 1)安装 2)启动 3)镜像加速器 Docker 常用命令 1)Docker 进程相关命令 2)Docker 镜像相关命令 docker search:查找镜像仓库中的镜像 ...

  4. Docker安装及常用命令

    修改机器名: [root@docker /]# hostnamectl set-hostname Docker 安装EPEL源: [root@docker /]# yum -y install epe ...

  5. docker安装以及常用命令

    yum-config-manager 对/etc/yum.repos.d/下的.repo文件进行增删改查 yum install -y yum-utils 添加docker源,由于yum源的docke ...

  6. Docker 入门指南——常用命令

    前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...

  7. Docker系列之常用命令操作手册

    目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4.Docker容器操作 Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Doc ...

  8. Docker基础和常用命令

    Docker基础和常用命令 一,Docker 简介 1.1,什么是 Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...

  9. ios开发环境配置及cordova安装与常用命令

    一.ios开发环境配置 1.首先要有台Mac Book,如果有Mac Book,跳过步骤2.3.4,如果没有,执行步骤2.3.4: 2.下载并安装VMware Workstation,最好是下最新版本 ...

随机推荐

  1. Windows8.1 关机异常的解决

    昨天电脑无法正常关机,关机后风扇仍然转,硬盘也在读写,等了很长时间都没有完全关机,只能强制关机.以前其他系统也遇到过这个问题,因此考虑还是驱动问题.回想了下之前装过VirtualBox,考虑到应该是V ...

  2. win7 卸载vs2010 后无法安装vs2008 提示 Microsoft Visual Studio Web创作组件安装失败 (转)

    解决方法: Visual Studio 2008 安装失败(“Web 创作组件”无法安装)解决方法   Visual Studio 2008 安装失败(“Web 创作组件”无法安装)解决方法(一) 今 ...

  3. 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 ...

  4. VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法

    下面是一篇文章比较详细,其实具体操作很简单,把Web Service服务地址,利用工具(VS2010),通过添加引用的形式,添加到项目中来就可以应用了. 大家如果这个地方不会操场的话,可以问问我QQ: ...

  5. wifidog接口文档(转)

    目录(?)[-] 网关心跳协议 请求信息 回复格式 例子 用户状态心跳协议 请求格式 注意 回复格式 状态码 例子 跳转协议 请求格式 例子 注册协议 请求格式 例子 wifidog是搭建无线热点认证 ...

  6. centos 新建swap区文件

    一. 相当详细且流程完整,(推荐阅读) 在centos7上新建swap区 https://www.digitalocean.com/community/tutorials/how-to-add-swa ...

  7. Docker创建MySQL容器环境两部曲

    1:下载MySQL镜像 需要执行以下命令,确保主机或者VM联网,从官网下载mysql的最新镜像(镜像版本以官网为主) docker  pull  mysql 下载成功后执行 docker image ...

  8. 如何实现json字符串和 BsonDocument的互相转换

    String to BsonDocument string json = "{ 'foo' : 'bar' }"; MongoDB.Bson.BsonDocument docume ...

  9. 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 ...

  10. gson ajax 数字精度丢失

    ajax传输的json,gson会发生丢失,long > 15的时候会丢失0 解决方案:直接把属性为long的属性自动加上双引号成为js的字符串,这样就不会发生丢失了,ajax自动识别为字符串. ...