博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker安装和常用命令
阅读量:6079 次
发布时间:2019-06-20

本文共 4845 字,大约阅读时间需要 16 分钟。

Docker安装

Docker的安装可以参考  下面的 Get Docker / Docker CE / Linux, 需要关注的主要是CentOS和Ubuntu, 可以通过添加仓库地址再通过 yum install 或 apt install安装, 也可以下载rpm包和deb包进行安装.

对应Ubuntu18.04 64bit系统的deb下载地址是  

Update 2018-12-18: 在版本18.09之后, docker将安装包分成了三个, container.io, docker-ce-cli 和 docker-ce, 需要依次都安装

安装完之后, 会自动在系统中添加 docker 服务

禁止docker随系统自启动

sudo systemctl disable docker

设置docker的mirror, 否则build会非常慢

$ sudo edit /lib/systemd/system/docker.service# 修改以下这行, 加上后面的 --registry-mirror=https://docker.mirrors.ustc.edu.cnExecStart=/usr/bin/dockerd -H fd:// --registry-mirror=https://docker.mirrors.ustc.edu.cn

将自己的用户加入docker用户组, 用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相关命令

# 查找imagedocker search centos# 下载image, 对已经下载的image, 再次执行pull命令时, 会检查更新并下载docker pull centos:latest# 使用Dockerfile制作imagedocker build -t scot-eureka .# 查看imagedocker image lsdocker image ls --alldocker imagesdocker images --all# 删除imagedocker rmi [IMAGE ID]# 导出imagedocker save milton-java -o docker-image-milton-java.tar# 导入image (可以在其他主机上)docker load -i docker-image-milton-java.tar

 

Docker 容器相关命令

# 用image创建容器, 使用默认的bridge网络并启动docker run -d --name eureka -p 8762:8761 scot-eurekadocker run -d --name mongo -v /home/milton/mongo:/mongo -p 27017:27017 mongo:4docker 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.11docker run -itd --name java8 --net mybridge --ip 192.168.250.4 java:8 /bin/bashdocker run -itd --name eureka --net mybridge --ip 192.168.250.3 scot-eureka:latest /bin/bash# 查看容器docker psdocker ps -a# 查看容器日志docker logs -f [CONTAINER NAME]# 将当前终端加入容器, 不是用-it启动的容器勿进行此操作, 否则无法用 ^P^Q退出docker attach [CONTAINER NAME]# 进入容器shell, 在容器中交互地执行命令, 用这种方式进入容器shell是比较安全的, 可以通过exit返回主机shelldocker exec -it java8 /bin/bash# 启动/停止容器docker start/stop [CONTAINER NAME]# 删除容器docker rm [CONTAINER NAME]# 用容器ID创建imagedocker commit -a "Milton" -m "java:8 with nano+net-tools" 8da987975c42 milton-java:8

.

Docker其他常用命令

# 测试运行Hello Worlddocker run hello-world# 查看版本docker --version# 查看信息docker info# 登录, 回车会提示输入密码. 不登录的话, 无法下载alpine这样的imagedocker 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以后台模式启动一个容器,并将容器命名为mynginxdocker run --name mynginx -d nginx:latest# 使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口docker run -p -d nginx:latest# 使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /datadocker run -p 80:80 -v /data:/data -d nginx:latest# 绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。docker run -p 127.0.0.1:80:8080/tcp ubuntu bash# 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。runoob@runoob:~$ docker run -it nginx:latest /bin/bashroot@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

.

转载地址:http://vjhgx.baihongyu.com/

你可能感兴趣的文章
sublime-text 使用记录
查看>>
Python: 函数与方法的区别 以及 Bound Method 和 Unbound Method
查看>>
从 Google 的一道面试题说起·
查看>>
GitHub采用了新的GraphQL API
查看>>
从责任界定和问题预警角度 解读全栈溯源对DevOps的价值
查看>>
面向桌面开发的Windows Template Studio
查看>>
TriggerMesh开源用于多云环境的Knative Event Sources
查看>>
SSPL的MongoDB再被抛弃,GUN Health也合流PostgreSQL
查看>>
微软表示Edge的性能更优于Chrome和Firefox
查看>>
基于容器服务的持续集成与云端交付(三)- 从零搭建持续交付系统
查看>>
Microsoft使用.NET Core SDK遥测数据
查看>>
《Spark GraphX in Action》书评及作者访谈
查看>>
IBM推出了针对区块链部署的云服务
查看>>
关于5G被激烈讨论的那些争端和冲突
查看>>
使用Apache Spark构建实时分析Dashboard
查看>>
2017年InfoQ最受欢迎30项内容清单
查看>>
OpenAI披露最新研究成果:AI训练如何扩展到更大规模?
查看>>
周下载量过200万的npm包被注入恶意代码,Vue、Node项目恐受影响
查看>>
写给Java工程师的面试指南
查看>>
ASP.NET Core 2.1带来SignalR、Razor类库
查看>>