Docker 安装及常用命令

Docker安装及常用命令

请点击 > 官方安装手册

学习请点击 > 理论知识

 

CentOS 7.6.1810 安装步骤如下:

$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

$ sudo yum-config-manager --enable docker-ce-nightly
$ sudo yum-config-manager --enable docker-ce-test
$ sudo yum install docker-ce docker-ce-cli containerd.io

$ sudo systemctl start docker
$ sudo systemctl status docker
$ sudo docker run hello-world
$ sudo docker images hello-world
$ sudo docker run hello-world

$ sudo systemctl enable docker

 

最常用的docker客户端:docker
也可通过REST API与服务器通信

systemctl status docker.service               #查看docker状态
docker -H 192.168.1.2 info                 #-H参数可与远程服务器通信
/etc/systemd/system/multi-user.target.wants/docker.service  #在环境变量 ExecStart 后面添加 -H tcp://0.0.0.0 #允许远程配置

docker run -d -p 80:80 httpd
docker images                        #查看下载到本地的镜像
docker images httpd                    #查看httpd镜像信息
docker ps 或者 docker container ls               #显示当前运行的容器

systemctl daemon-reload                    #重启docker daemon
systemctl restart docker.service               #重启docker服务

CLI或API启动、停止、移动或删除容器

docker pull                         #从Registry 下载镜像
docker pull hello-world                      #用来验证docker是否安装成功
docker pull centos                       #下载centos base镜像
docker images centos                    #查看镜像信息

docker run                         #下载镜像并启动容器
docker run hello-world                    #运行hello-world
docker run -it centos                    #启动并进入 CentOS 容器
docker run haproxy                     #可研究负载均衡软件HAProxy
docker run django                       #学习使用django开发python web应用
docker run -it ubuntu                   #运行容器。(-it以交互模式进入容器)
docker run -it 22d31cc52b3e                 #对镜像进行调试

docker commit names ubuntu-with-vi           #创建为新镜像,官方不建议
docker build -t ubuntu-vi-dockerfile           #创建为新镜像,官方推荐(-t命名)
docker history ubuntu-vi-dockerfile           #显示镜像的构建历史

docker rmi debian:tag                 #删除host中的镜像,只有最后一个tag被删除才真被删除
docker search httpd                 #搜索hub中的镜像

docker tag myimage-v1.9.1 myimage:1.9.1       #给镜像打tag

 

docker login -u 133                  #登录docker hub
docker tag httpd 133/httpd:v0.1             #修改镜像的registry
docker push 133/httpd:v0.1                #上传镜像至docker hub

docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
#运行自己的registry
docker tag 133/httpd:v0.1 registry.example.net:5000/133/httpd:v0.1
#重命名镜像使之与registry匹配
docker push registry.example.net:5000/133/httpd:v0.1
#上传镜像至本地registry
docker pull registry.example.net:5000/133/httpd:v0.1
#从本地registry下载镜像
docker images registry.example.net:5000/133/httpd:v0.1
#查看镜像
registry配置安全传输:https特性

 

docker run -d centos /bin/bash -c "while true; do sleep 1;done"
#后台长期运行容器
docker stop fe39cc2ccc8b #停止一个容器
docker run --name "my_http_server" -d httpd
#为容器指定名字

docker run -d centos /bin/bash -c "while true; do sleep 1; echo I_am_in_container;done"
#获取长ID
docker attach 长ID #进入容器命令终端,ctrl +p or +q退出
docker exec -it ID bash #进入容器命令终端
docker exec -it bash|sh #常用格式,exit退出

docker logs -f ID #查看启动命令的输出

docker start stop kill restart pause
docker stop $(docker ps -a -q) #停止所有container
docker rm $(docker ps -a -q) #删除所有container
docker rm -v $(docker ps -aq -f status=exited)
#删除所有退出的container
docker rmi $(docker images -q) #删除所有images
docker run -d --restart=always httpd #重启容器,stop或kill的不重启
docker run -d --restart=failure:3 httpd #重启容器最多3次
docker pause names #暂停容器
docker unpause names #恢复运行

docker create #container处于created状态
docker start #后台启动容器
docker run #是create和start的组合

docker run -m 200M --memory-swap=300M centos
#设置内存+swap进行限额,默认没有限制
#只有内存没有内存+swap时,默认后者是两倍
docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 280M
#images对容器进行压力测试

docker run --name "container_A" -c 1024 centos
#设置CPU share
docker run --name container_A -it -c 1024 progrium/stress --cpu 1
docker run --name container_B -it -c 512 progrium/stress --cpu 1
#进行压力测试,使用top查看

docker run -it --name container_A --blkio-weight 600 centos
docker run -it --name container_B --blkio-weight 300 centos
#设置blkio-weight,默认500,磁盘的读写带宽

bps 是 byte per second,每秒读写的数据量。
iops 是 io per second,每秒 IO 的次数
docker run -it --device-write-bps /dev/sda:30M centos
#限制容器/dev/sda的速率为30M/s
time dd if=/dev/zero of=test.out bs=1M count=800 oflag=direct
#测试硬盘读写

cgroup 实现资源限额,
namespace 实现资源隔离(六种资源:Mount、UTS、IPC、PID、Network 和 User)

docker run -it --cpu-shares 512 progrium/stress -c 1
docker ps #查看短ID
ls /sys/fs/cgroup/cpu/docker/短ID Tab #查看cpu.shares设置
/sys/fs/cgroup/memory/docker/短ID Tab
/sys/fs/cgroup/blkio/docker/短ID Tab

docker run -h myhost -it centos #设置容器的主机名

 

docker network ls #查看docker网络
docker run -it --network=none centos #容器指定使用none网络(什么都没有的网络)
docker run -it --network=host centos #指定host网络,配置与主机完全一致,使用ip l
yum install bridge-utils #安装brctl
brctl show #查看网桥
docker network inspect bridge #查看网桥配置信息

user-defined 网络驱动:bridge, overlay 和 macvlan。overlay 和 macvlan
docker network create --driver bridge my_net
#创建默认的bridge网络
docker network inspect my_net #查看刚创建网桥
docker network create --driver bridge --subnet 10.113.0.0/24 --gateway 10.113.0.1 my_net
#为自己创建的网桥指定网段,只有使用 --subnet 创建的网络才能指定静态 IP
docker run -it --network=my_net centos
#使用新的网络
docker run -it --network=my_net --ip 10.113.0.2 centos
#配置静态ip地址
ip r #查看路由信息
sysctl net.ipv4.ip_forward #查看转发是否启用,1为启用
iptables-save #查看防火墙
docker network connect my_net centos短ID
#为centos添加一块my_net网卡

docker run -it --network=my_net2 --name=bbox1 busybox
docker run -it --network=my_net2 --name=bbox2 busybox
#为容器命名,并实现网络通
docker DNS 有个限制:只能在 user-defined 网络中使用


docker run -it --network=container:web1 centos
#通过--network=container:web1 指定 jointed 容器为 web1
dcoker exec -it web1 bash
ip a #查看web1的网络 35章

转载于:https://www.cnblogs.com/shuter/p/11281196.html

你可能感兴趣的:(Docker 安装及常用命令)