Docker 安装卸载及常用命令
Docker安装卸载及常用命令
官方手册请点击 > 官方安装手册
学习请点击 > 理论知识
CentOS 7.6.1810 安装步骤如下:
1 $ sudo yum install -y yum-utils \ # 安装依赖
2 device-mapper-persistent-data \
3 lvm2
4
5 $ sudo yum-config-manager \ # 安装配置管理
6 --add-repo \
7 https://download.docker.com/linux/centos/docker-ce.repo
8
9 $ sudo yum-config-manager --enable docker-ce-nightly
10 $ sudo yum-config-manager --enable docker-ce-test
11
12 $ sudo yum install docker-ce docker-ce-cli containerd.io
13
14 $ sudo systemctl start docker # 启动docker
15 $ sudo systemctl status docker # 查看docker状态
16 $ sudo docker run hello-world # 运行hello-world
17 $ sudo docker images hello-world
18
19 $ sudo docker run hello-world # 使用hello-world测试安装是否成功
20
21 $ sudo systemctl enable docker # 开机启动
卸载docker
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine \
docker-ce
$ sudo rm -rf /var/lib/docker
docker常用指令
最常用的docker客户端:docker,也可通过REST API与服务器通信;
安装compose(Docker-Compose是一个可以自动化的脚本工具。)
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version
vim docker-compose.yml
wordpress:
image: wordpress
ports:
- "8022:80"
environment:
WORDPRESS_DB_PASSWORD: <passwd>
links:
- wordpress_mysql:mysql
container_name: wordpress_wordpress
wordpress_mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: <passwd>
container_name: wordpress_mysql
docker-compose -f docker-compose.yml up -d
systemctl status docker.service # 查看docker状态
systemctl daemon-reload # 重启docker daemon
systemctl restart docker.service # 重启docker服务 docker -H 192.168.1.2 info # -H参数可与远程服务器通信 vim /etc/systemd/system/multi-user.target.wants/docker.service # 默认配置下,Docker daemon 只能响应来自本地 Host 的客户端请求;允许远程客户端请求,需要在配置文件中打开 TCP 监听
ExecStart/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0
docker run -d -p 80:80 httpd # 启动 httpd 容器,并将容器的80端口映射到 host 的80端口
docker run -d -p 8080:80 httpd # 8080是host端口,80是images端口
docker images # 查看下载到本地的镜像
docker images httpd # 查看httpd镜像信息
docker ps 或者 docker container ls # 显示当前运行容器
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 centos pwd # 直接运行命令
docker run -it centos # 启动并进入 CentOS 容器(互动模式)
docker run haproxy # 可研究负载均衡软件HAProxy
docker run django # 学习使用django开发python web应用
docker run -it centos # 运行容器。(-it以交互模式进入容器)
docker run -it 22d31cc52b3e # 对镜像进行调试
docker run centos-nmap:v1.0 yum install -y nmap # 为镜像安装nmap
docker start ContainerID # 启动容器
docker ps # 查看运行的容器,并获得names
docker commit names mycentos # 创建为新镜像(官方不建议)
docker run -tdi --privileged centos init # 其中centos为镜像,不是名称
docker build -t centos-vi. # 创建新镜像,官方推荐,-t命名,命令末尾的.指明build context为当前目录。
docker build --no-cache -t mycentos # 构建镜像时不使用缓存
docker history mycentos # 显示镜像的构建历史
docker rmi debian:tag # 删除host中的镜像,只有最后一个tag被删除才真被删除
docker rm containerID # 删除container
docker search httpd # 搜索hub中的镜像
docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q ) # 查询依赖
docker ps -a # 查看所有Container
docker tag mycentos mycentos:0.0.1 # 给镜像打tag
docker login -u 13366969672 # 登录docker hub
docker tag httpd 13366969672/httpd # 修改镜像的registry
docker push 13366969672/httpd # 上传镜像至docker hub
搭建本地registry说明,请点击我
docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2 # 运行自己的registry
docker tag 133/httpd:v0.1 hostname:5000/133/httpd:v0.1 # 重命名镜像使之与registry匹配
docker push hostname:5000/133/httpd:v0.1 # 上传镜像至本地registry
docker pull hostname:5000/133/httpd:v0.1 # 从本地registry下载镜像
docker images hostname: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 # 启动容器并命名为my_http_server,-d为后台运行
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 <container> bash|sh # 常用格式,exit退出
docker logs -f ID # 查看启动命令的输出
docker (start stop kill restart pause) ContainerID # 启动、停止、杀死、重启、暂停容器
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章
joined容器可以使两个或多个容器共享一个网络栈,共享网卡和配置信息,joined 容器之间可以通过 127.0.0.1 直接通信
docker run -it --network=container:web1 mycentos # 指定用joined容器
iptables -t nat -S # 查看防火墙NAT配置
tcpdump -i docker0 -n icmp # 监控网卡数据包
docker port 8a6d08d05557 # 查看端口映射
docker run -d -p 80:80 -v ~/htdocs:/usr/local/apache2/htdocs httpd # 将$HOME/htdocs mount到容器上
docker inspect containerID # 查看容器信息
docker volume ls # 查询volume name
docker volume inspect 'volume name' # 查看volume
docker cp /home/index.html containerID:/usr/local/apache2/htdocs # 容器与host之间拷贝数据
volume container 是专门为其他容器提供 volume 的容器
docker create --name vc-data /home/jinbian/var/vc-data:/usr/local/httpddata -v /var/useful/vc-data mycentos # 创建volume container
docker inspect vc-data # 查看volume container
docker run --name web1 -d -p 80 --volumes-from vc-data httpd # 容器启动并使用vc-data
docker volume ls # 查看数据
docker volume rm id # 删除数据
Docker 导图学习
运动可以增加体力;读书可以增加知识;
自古只有天才的学生,没有天才的老师;
猴子不上树是看不见红屁股的,
人不做事情是看不出能力的。
时间花在那儿,擅长就在那儿。
钱花完了可以再赚,时间花了便一去不复返。