docker-ce安装:
1.网络yum源配置
wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
1.1.默认路径指向docker官方站点,修改yum源正确路径
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable
wget http://mirrors.aliyun.com/repo/Centos-7.repo
1.2.修改变量为具体值
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
http://mirrors.aliyuncs.com/centos/7/os/x86_64/
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/
wget http://mirrors.aliyun.com/repo/epel-7.repo
1.3.同样修改变量为具体值
baseurl=http://mirrors.aliyun.com/epel/7/x86_64
2.安装docker-ce
yum install docker-ce
3.查看docker-ce安装的相关文件
[root@localhost yum.repos.d]# rpm -ql docker-ce
/usr/bin/docker-init
/usr/bin/docker-proxy
/usr/bin/dockerd
/usr/lib/systemd/system/docker.service
/usr/lib/systemd/system/docker.socket
/var/lib/docker-engine/distribution_based_engine-ce.json
4.给docker设置镜像加速器(加速器:阿里云加速器,docker cn,中国科技大学)
[root@localhost docker]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://l10nt4hq.mirror.aliyuncs.com"]
}
5.启动dockker
[root@localhost docker]# systemctl start docker
6.查看docker进程
[root@localhost docker]# ps -ef | grep docker
root 11690 1 0 20:33 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
7.查看docker版本
[root@localhost docker]# docker -v
Docker version 19.03.1, build 74b1e89
8.查看docker详细信息
[root@localhost docker]# docker version
Client: Docker Engine - Community
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:21:07 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:19:36 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
9.查看docker状态信息
[root@localhost docker]# docker info
Client:
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 19.03.1
Storage Driver: devicemapper
...
10.docker常见命令
docker search 查找镜像
[root@localhost docker]# docker search busybox
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
busybox Busybox base image. 1665 [OK]
progrium/busybox 70 [OK]
radial/busyboxplus Full-chain, Internet enabled, busybox made f… 25 [OK]
注:不带“/”的为顶级仓库,否则为组织或个人所建镜像,例如:progrium/busybox(progrium为仓库,其后的busybox为自建镜像)
docker pull == docker image pull 下载镜像
docker images == docker image ls 查看镜像(需要查看所有镜像可以使用“-a”选项)
docker create == docker container create 创建一个容器
docker start == docker container start 启动一个容器
docker run == docker container run 运行一个容器(相当于上两个命令连用))
docker ps 查看创建好的容器(运行中,需要查看非运行中的需要加上-a")
docker logs 查看容器日志
docker stop == dockers container stop 停止一个运行中的容器
docker kill 强杀一个运行的容器
docker restart 重启动容器
11.docker学习理解为了空间考虑,可使用alpine版的镜像(容器小镜象)--仅作此用
下载镜像:docker pull busybox
[root@localhost docker]# docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
ee153a04d683: Pull complete
Digest: sha256:9f1003c480699be56815db0f8146ad2e22efea85129b5b5983d0e0fb52d9ab70
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest
注:不带tag,默认下载最新的
12.查看下载的docker镜像
[root@localhost docker]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest db8ee88ad75f 4 weeks ago 1.22MB
13.创建一个容器(并未运行)
[root@localhost docker]# docker container create busybox
813e57a8242cf03c25d2d2eadba02502c430599a26b936e11f581afd8ebaae37
14.运行容器--启动交互式
[root@localhost docker]# docker run -it busybox
/ # mkdir /data/web/html -p
/ # echo "<h1>welcom login busybox-based web!!</h1>" > /data/web/html/index.html
/ # httpd -f -h /data/web/html (启动一个静态网站)
15.在宿主机上访问
[root@localhost ~]# curl 172.17.0.2
<h1>welcom login busybox-based web!!</h1>
16.docker安装启动后,会自动在宿主机上建立一个docker虚拟网桥(nat桥),默认地址是:172.17.0.1
[root@localhost ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:a6ff:fe04:e1db prefixlen 64 scopeid 0x20<link>
ether 02:42:a6:04:e1:db txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5 bytes 418 (418.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
17.启动容器常用参数
--name 给容器自定义名称
[root@localhost docker]# docker run --name b1 -it busybox
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e8f2999b1eec busybox "sh" 7 seconds ago Up 5 seconds b1
18.杀掉一个容器(容易数据丢失,推荐使用docker stop)
[root@localhost ~]# docker kill b1
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAME
Se8f2999b1eec busybox "sh" 2 minutes ago Exited (137) 18 seconds ago b1
19.启动一个停止的容器
[root@localhost ~]# docker start b1
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e8f2999b1eec busybox "sh" 3 minutes ago Up 4 seconds b1
20.以交互式绕过容器边界进入一个容器
[root@localhost docker]# docker exec -it b1 /bin/sh
/ # ps
PID USER TIME COMMAND
1 root 0:00 sh
6 root 0:00 /bin/sh
11 root 0:00 ps
21.删除一个镜像
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAME
Se8f2999b1eec busybox "sh" 6 minutes ago Exited (137) 36 seconds ago b1
bacddd555dab busybox "sh" 20 minutes ago Exited (137) 7 minutes ago vigi lant_napier
813e57a8242c busybox "sh" 24 minutes ago Exited (0) 21 minutes ago stupefied_clarke
[root@localhost docker]# docker rm stupefied_clarke
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAME
Se8f2999b1eec busybox "sh" 6 minutes ago Exited (137) 56 seconds ago b1
bacddd555dab busybox "sh" 20 minutes ago Exited (137) 7 minutes ago vigilant_napier
[root@localhost docker]# docker rm vigilant_napier b1
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
22.运行一个redis,
[root@localhost docker]# docker run --name redis1 --rm -it -d redis
--rm 容器停止则删除
-d 容器后台运行
23.绕过边界登入进去查看
[root@localhost ~]# docker exec -it redis1 /bin/sh
# redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name aaaa
127.0.0.1:6379> get name
"aaaa"
127.0.0.1:6379>