Docker 使用整合
1.更新源和依赖包
yum install -y epel-release
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
2.安装docker
86_64
curl -sSL https://get.docker.com/ | sh
arm
◎.修改源
nano /etc/apt/sources.list
deb https://mirrors.ustc.edu.cn/debian buster main contrib non-free
deb https://mirrors.ustc.edu.cn/debian buster-updates main contrib non-free
deb https://mirrors.ustc.edu.cn/debian buster-backports main contrib non-free
deb https://mirrors.ustc.edu.cn/debian-security/ buster/updates main contribnon-free
Ctrl+O保存,Ctrl+X退出。
◎.更新
apt-get update
◎.使用docker安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
◎.修改docker源(很多时候没有就忽略)
找到daemon.json文件,更改源地址。
文件在/etc/docker/。
"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
3.启动 停止 重启 docker
service docker {start|stop|restart}
4.设置docker开机自动启动
systemctl enable docker
5.查看docker版本
docker version
6.查看docker系统的信息
docker info
7.查找docker镜像命令
docker search 关键字
8.启动运行镜像( 前者是外围访问端口:后者是容器内部端口)
docker run -p 8081:8080 镜像名字
9.查看运行中的容器
docker ps
docker ps | less -S
docker ps –qa(查看所有容器)
10.进入容器
docker exec -i -t 容器ID或名字 /bin/bash
11.容器的{停止|启动|重启}
docker {stop|start|restart} -i 容器ID
12.暂停某一容器的所有进程
docker pause
13.恢复某一容器的所有进程
docker unpause
14.显示一个运行的容器里面的进程信息
docker top Name/ID
15.显示最后一次启动的容器
docker ps -l
16.用一行列出所有正在运行的container(容器多的时候非常清晰)
docker ps | less -S
17.根据现有容器创建镜像
docker commit 容器ID 用户名/库名:标签
18.在运行容器时候直接给容器中安装新的程序
docker run image_name apt-get install -y app_name
Note: 在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响 应这种交互的。apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。
19.直接运行容器
(--privileged 指定容器是否是特权容器。这里开启特权模式(注意需要和/usr/sbin/init对应) --cap-add SYS_ADMIN 添加系统的权限。不然,系统很多功能都用不了的。)
docker run -itd -p 1001:22 cent0s:7 /bin/bash
docker run --cap-add SYS_ADMIN --privileged --name=lnmp -itd -p 1001:22 centos:7 /usr/sbin/init
docker run --cap-add SYS_ADMIN --privileged --name=lnmp -itd -p 1002:22 -p 800:80 alpine
20.删除容器
docker rm 容器id
docker rm $(docker stop $(docker ps -qa))(删除所有容器)
21.查看容器日志
docker logs <id/container_name>
22.实时查看日志输出
docker logs -f <id/container_name> (类似 tail -f) (带上时间戳-t)
修改本地镜像名称:
docker tag 镜像ID 用户名称/镜像源名(repository name):新的标签名(tag)
23.分享镜像:
1.登录docker Hub
docker login
2.分享镜像
docker push 用户名/库名:标签
docker push<hub-user>/<repo-name>:<tag>
3.登出docker Hub
docker logout
要发布到私有Registry中的镜像,在镜像命名中需要带上Registry的域名(如果非80端口,同时需要带上端口号)比如:
docker push dockerhub.yourdomain.com:443/hello.demo.kdemo:v1.0
24.查看本地镜像
docker images
25.下载镜像
docker pull 镜像名字
26.显示一个镜像的历史
docker history image_name
27.删除镜像
docker rmi 镜像id
28.查看容器/镜像的信息
docker inspect
29.从容器里面拷贝文件/目录到本地一个路径
docker cp Name:/container_path to_path
docker cp ID:/container_path to_path
30.将指定镜像保存成 tar 归档文件
docker save
docker save -o ubuntu14.04.tar ubuntu:14.04
将指定镜像保存成 tar 归档文件, docker load 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。
-o, --output= Write to an file, instead of STDOUT 输出到的文件
31.从 tar 镜像归档中载入镜像,docker save 的逆操作
docker load
docker load -i ubuntu14.04.tar
从 tar 镜像归档中载入镜像, docker save 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。
上面命令的意思是将 ubuntu14.04.tar 文件载入镜像中。
参数: -i, --input= Read from a tar archive file, instead of STDIN 加载的tar文件
将指定的容器保存成 tar 归档文件
docker export
docker export -o ubuntu14.04.tar 94c6b3c3f04a
将指定的容器保存成 tar 归档文件, docker import 的逆操作。导出后导入(exported-imported))的容器会丢失所有的提交历史,无法回滚。
上面命令的意思是将 ID 为 94c6b3c3f04a 容器保存为 ubuntu14.04.tar 文件。
参数: -o, --output= Write to a file, instead of STDOUT
从归档文件创建一个镜像,export 的逆操作
docker import
cat ./ubuntu14.04.tar | sudo docker import - ubuntu:14.04
从归档文件(支持远程文件,.tar, .tar.gz, .tgz, .bzip, .tar.xz, .txz)创建一个镜像, export 的逆操作,可为导入镜像打上标签。导出后导入(exported-imported))的容器会丢失所有的提交历史,无法回滚。
上面命令的意思是使用 ./ubuntu14.04.tar 文件创建 ubuntu:14.04 的镜像,默认会从远端拉取文件。
轻松使用Docker
1.docker exec是如此的有用,以至于我们通常是将其封装为一个脚本,放到全局可调用的地方,比如,可以写成一个indocker.sh:
cat indocker.sh
docker exec -t -i $1 /bin/bash
查看需要附着的容器id
docker ps | less -S
CONTAINER ID IMAGE
9cf7b563f689 hello.demo.kdemo:v160525.202747
./indocker.sh 9cf7b563f689
2.把docker用户加入超级用户组
sudo groupadd docker
#添加docker用户组
sudo gpasswd -a myusername docker
#把自己加到docker用户组中
sudo service docker restart
3.清理垃圾
删除所有停止容器docker rm $(docker ps -a -q)
删除的时候没有停止的容器无法删除,可以起到清理垃圾容器的作用
4.简单使用docker inspect
docker inspect输出结果的解析利器:jq 要对docker inspect的输出结果进行过滤,一般情况下,
用grep命令,你需要这样操作:
docker inspect 'id' | grep IPAddress | cut -d '"' -f 4
用jq命令,只需要:
docker inspect 'id' | jq -r '.[0].NetworkSetting.IPAddres'
5.查看镜像有哪些环境变量
docker run centos env
输出结果为
[root@hk ~]# docker run centos env
Unable to find image 'centos:latest' locally
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
a02a4930cb5d: Pull complete
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for docker.io/centos:latest
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=4059ccd19648
HOME=/root
调用env查看环境变量,对于后面要讲到的“链接”(-link)很有用,在连接两个容器时候需要用到这些环境变量
6.把docker用户加入超级用户组
sudo groupadd docker
添加docker用户组
sudo gpasswd -a myusername docker
把自己加到docker用户组中
sudo service docker restart
安装docker-engine
(
1、直接使用root安装(更新系统)
yum update
2.配置docker镜像源
tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
3.安装docker
yum install docker-engine
)
安装 Docker-CE
(
1.升级yum
-yum update
2.安装必要的一些系统工具
-yum install -y yum-utils device-mapper-persistent-data lvm2
3.添加软件源信息
-yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.更新并安装 Docker-CE
-yum makecache fast
-yum -y install docker-ce
5.开启Docker服务
-service docker start
)
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。