#系统环境centos最少是版本7
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
#我已经安装过了
[root@localhost ~]# yum -y install docker
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.jdcloud.com
* extras: mirror.jdcloud.com
* updates: mirrors.tuna.tsinghua.edu.cn
Package 2:docker-1.13.1-103.git7f2769b.el7.centos.x86_64 already installed and latest version
Nothing to do
#启动、查看docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2019-10-30 19:46:44 CST; 39s ago
Docs: http://docs.docker.com
Main PID: 11582 (dockerd-current)
CGroup: /system.slice/docker.service
├─11582 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriv...
└─11588 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir...
Oct 30 19:46:44 localhost.localdomain dockerd-current[11582]: time="2019-10-30T19:46:44.817846283+08:00" level=info msg="Loading containers: start."
Oct 30 19:46:44 localhost.localdomain dockerd-current[11582]: time="2019-10-30T19:46:44.827900183+08:00" level=warning msg="Running modprobe bridge br_netfilter failed ...
Oct 30 19:46:44 localhost.localdomain dockerd-current[11582]: time="2019-10-30T19:46:44.844246739+08:00" level=info msg="Firewalld running: false"
Oct 30 19:46:44 localhost.localdomain dockerd-current[11582]: time="2019-10-30T19:46:44.907587140+08:00" level=info msg="Default bridge (docker0) is assigned wi...address"
Oct 30 19:46:44 localhost.localdomain dockerd-current[11582]: time="2019-10-30T19:46:44.948857467+08:00" level=info msg="Loading containers: done."
Oct 30 19:46:44 localhost.localdomain dockerd-current[11582]: time="2019-10-30T19:46:44.949557485+08:00" level=warning msg="Not using native diff for overlay2, ... to fix"
Oct 30 19:46:44 localhost.localdomain dockerd-current[11582]: time="2019-10-30T19:46:44.959422114+08:00" level=info msg="Daemon has completed initialization"
Oct 30 19:46:44 localhost.localdomain dockerd-current[11582]: time="2019-10-30T19:46:44.959439921+08:00" level=info msg="Docker daemon" commit="7f2769b/1.13.1" ...n=1.13.1
Oct 30 19:46:44 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
Oct 30 19:46:44 localhost.localdomain dockerd-current[11582]: time="2019-10-30T19:46:44.967216716+08:00" level=info msg="API listen on /var/run/docker.sock"
Hint: Some lines were ellipsized, use -l to show in full.
#搜索镜像
[root@localhost ~]# docker search centos
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/centos The official build of CentOS. 5640 [OK]
docker.io docker.io/ansible/centos7-ansible Ansible on Centos7 125 [OK]
#拉取镜像
[root@localhost src]# docker pull centos
Using default tag: latest
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
729ec3a6ada3: Pull complete
Digest: sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9
Status: Downloaded newer image for docker.io/centos:latest
#查看镜像
[root@localhost src]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 0f3e07c0138f 4 weeks ago 220 MB
#导入镜像
[root@localhost src]# docker load --input centos.tar
#导出镜像
[root@localhost src]# docker save -o centos.tar centos
#删除镜像
[root@localhost src]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 540a289bab6c 7 days ago 126 MB
docker.io/centos latest 0f3e07c0138f 4 weeks ago 220 MB
[root@localhost src]# docker rmi 540a289bab6c(镜像的IMAGE ID)
[root@localhost src]# docker run centos /bin/echo "Hello world"
Hello world
[root@localhost src]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1eb782ca5ba3 centos "/bin/echo 'Hello ..." 2 seconds ago Exited (0) 1 second ago elastic_haibt
#开启一个mydocker的容器,启动tty和标准输入输出
[root@localhost src]# docker run --name mydocker -t -i centos /bin/bash
[root@5aaaea3cbb0a /]#
#启动停止的docker进程
[root@localhost src]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5aaaea3cbb0a centos "/bin/bash" 12 minutes ago Exited (127) About a minute ago mydocker
1eb782ca5ba3 centos "/bin/echo 'Hello ..." 16 minutes ago Exited (0) 16 minutes ago elastic_haibt
79cfe0f6abd9 centos "/bin/echo 'Hello ..." 3 hours ago Exited (0) 3 hours ago hopeful_shaw
[root@localhost src]# docker start mydocker
mydocker
[root@localhost src]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5aaaea3cbb0a centos "/bin/bash" 13 minutes ago Up 3 seconds mydocker
1eb782ca5ba3 centos "/bin/echo 'Hello ..." 17 minutes ago Exited (0) 17 minutes ago elastic_haibt
79cfe0f6abd9 centos "/bin/echo 'Hello ..." 3 hours ago Exited (0) 3 hours ago hopeful_shaw
#进入正在运行的docker容器中
#attach进入后退出docker进程也会结束
[root@localhost src]# docker attach mydocker
[root@5aaaea3cbb0a /]#
#获取docker的Pid(如果结果是0,则进程可能未启动)
[root@localhost src]# docker inspect -f "{{ .State.Pid }}" mydocker
12312
[root@localhost src]# nsenter -t 12312 -m -u -i -n -p
[root@5aaaea3cbb0a /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 03:51 ? 00:00:00 /bin/bash
root 14 0 0 04:10 ? 00:00:00 -bash
root 27 14 0 04:10 ? 00:00:00 ps -ef
#如果没有nsenter命令可以用yum安装(yum -y install util-linux)
[root@5aaaea3cbb0a /]# exit
logout
[root@localhost src]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5aaaea3cbb0a centos "/bin/bash" 46 minutes ago Up 21 minutes mydocker
#不进入容器执行命令EXEC
[root@localhost ~]# docker exec mydocker whoami
root
#exec也能进入容器内部
[root@localhost ~]# docker exec -it mydocker /bin/bash
[root@5aaaea3cbb0a /]#
* 参考oldboy视频整理