一、docker安装======
1.1、官网
https://docs.docker.com/engine/install/

1.2、如果有旧版本(卸载docker)

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

1.3 、安装基本的环境

sudo yum install -y yum-utils

1.4、设置镜像仓库
默认是国外的

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

使用阿里国内源安装docker

 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.5、安装docker
更新索引

yum makecache fast

docker-ce 社区版 docker-ee 企业版 推荐社区版

sudo yum install docker-ce docker-ce-cli containerd.io

1.6、启动docker

sudo systemctl start docker

1.7、使用docker version 是否安装成功

1.8、运行示例

sudo docker run hello-world

1.9、查看docker hello-world镜像

1.10、卸载docker
//删除依赖
$ sudo yum remove docker-ce docker-ce-cli containerd.io
//删除资源
$ sudo rm -rf /var/lib/docker //docker的默认工作路径
$ sudo rm -rf /var/lib/containerd

二、阿里云加速======
2.1、找到容器服务

2.2、找到镜像加速器

2.3、配置使用

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://tx12d179.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

三、研究HelloWorld怎么执行======
3.1、执行过程如下

docker run
-> docker在本机寻找镜像(有:使用本机,没有:去docker hub 下载->(判读是否找到镜像)->有就下载,没有下载失败)

3.2、底层原理
docker 是一个client-server 结构系统,docker的守护进程运行在主机上,通过socket从客户端访问
dockerServer 接受客户端docker-client的指令,就是运行命令

四、docker常用命令操作======
4.1、帮助命令
docker version #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help # 万能命令

4.2、帮助文档
官方网址:https://docs.docker.com/reference/

4.3、镜像命令

4.3.1、docker images (查看本机的所有镜像)
查看本机的所有镜像

[root@localhost /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   4 months ago   13.3kBREPOSITORY    //仓库的仓库源 下载和运行皆可用
TAG                  //镜像的标签,版本IMAGE ID        //镜像的ID
CREATED         //镜像的创建时间
SIZE                 //镜像的大小
[root@localhost /]# docker images --help

可选项

  -a, --all        # 列出所有镜像--digests         Show digests-f, --filter filter   Filter output based on conditions provided--format string   Pretty-print images using a Go template--no-trunc        Don't truncate output-q, --quiet          # 只显示镜像的ID

4.3.2、docker search (搜索镜像)
官方网址:https://hub.docker.com/

[root@localhost /]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11185     [OK]
mariadb                           MariaDB Server is a high performing open sou…   4246      [OK]

[root@localhost /]# docker search --help

可选项

  -f, --filter filter   Filter output based on conditions provided--format string   Pretty-print search using a Go template--limit int       Max number of search results (default 25)--no-trunc        Don't truncate output
docker search --filter=STARS=3000

搜索的是STARS 3000以上的结果

[root@localhost /]# docker search mysql --filter=STARS=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   11185     [OK]
mariadb   MariaDB Server is a high performing open sou…   4246      [OK]

4.3.3、docker pull (下载镜像)
下载镜像 docker pull 镜像名[:tag(版本)]
默认版本下载

[root@localhost /]# docker pull mysql
Using default tag: latest          ##如果不写tag 默认是latest
latest: Pulling from library/mysql
33847f680f63: Pull complete  # 分层下载,docker image 的核心,联合文件系统
5cb67864e624: Pull complete
1a2b594783f5: Pull complete
b30e406dd925: Pull complete
48901e306e4c: Pull complete
603d2b7147fd: Pull complete
802aa684c1c4: Pull complete
715d3c143a06: Pull complete
6978e1b7a511: Pull complete
f0d78b0ac1be: Pull complete
35a94d251ed1: Pull complete
36f75719b1a9: Pull complete
Digest: sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd
#签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址

指定版本下载

[root@localhost /]# docker pull mysql:5.7
5.7: Pulling from library/mysql
33847f680f63: Already exists  #已经下载过的不会再下载,联合文件系统的作用
5cb67864e624: Already exists
1a2b594783f5: Already exists
b30e406dd925: Already exists
48901e306e4c: Already exists
603d2b7147fd: Already exists
802aa684c1c4: Already exists
5b5a19178915: Pull complete
f9ce7411c6e4: Pull complete
f51f6977d9b2: Pull complete
aeb6b16ce012: Pull complete
Digest: sha256:be70d18aedc37927293e7947c8de41ae6490ecd4c79df1db40d1b5b5af7d9596
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

4.3.4、docker rmi -f 一般是放(ID)(删除镜像)
4.3.4.1、单个删除 docker rmi -f ****
[root@localhost /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 8cf625070931 6 days ago 448MB
mysql latest c60d96bd2b77 6 days ago 514MB
hello-world latest d1165f221234 4 months ago 13.3kB

[root@localhost /]# docker rmi if 8cf625070931

Untagged: mysql:5.7
Untagged: mysql@sha256:be70d18aedc37927293e7947c8de41ae6490ecd4c79df1db40d1b5b5af7d9596
Deleted: sha256:8cf6250709314f2fcd2669e8643f5d3bdebfe715bddb63990c8c96e5d261d6fc
Deleted: sha256:452fe6896278c26338d547f8d1092011d923785247c46629b374d3477fe28c84
Deleted: sha256:bd40bf60af5d06e6b93eaf5a648393d97f70998faa3bfa1b85af55b5a270cb35
Deleted: sha256:c43e9e7d1e833650e0ed54be969d6410efa4e7fa6e27a236a44a2b97e412ee93
Deleted: sha256:70f18560bbf492ddb2eadbc511c58c4d01e51e8f5af237e3dbb319632f16335b
Error: No such image: if

4.3.4.2、删除全部 docker rmi if $(docker images -aq)

                               传入所有参数
[root@localhost /]# docker rmi if $(docker images -aq)Untagged: mysql:latest
Untagged: mysql@sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd
Deleted: sha256:c60d96bd2b771a8e3cae776e02e55ae914a6641139d963defeb3c93388f61707
Deleted: sha256:5c8c91273faab368a6d659156f2569fa9f40b0e0139222fdf9eef073df4b3797
Deleted: sha256:33d8196a776f42a16f10395b66f10f91443b1fb194bca2a9b8dfb0deff5babb8
Deleted: sha256:3ec63323025213e3cabf17ac7933506dc5520ec49226a9764418f77ea60d35c8
Deleted: sha256:1f129b005b51b049ac84ed0775b82096d480b7d9308a9a137697f37346562266
Deleted: sha256:80ed209bd0434faa1ce31fbaab8508124dddf8f6502c5736ee4b8e46697a8477
Deleted: sha256:e53f0d35c77064014a5c1c1332d84d5f421a58418ca9c208bc470691c0e483e3
Deleted: sha256:75209fb28131d5537e73406ff0f6f508f3eb1f4d86c43d1d16df76fd28b9cc35
Deleted: sha256:34a01bee1a62a01034ffc3da48a3cb45716a0cf2e264c26663e02288e81c7ec2
Deleted: sha256:9f8bca37a56017fd3462d4fc329b0b20f97c2dd4c15e55a8e6ad1c023ab5552b
Deleted: sha256:c8a6e3f9a2412c28cd8c48e2c7bed5e7fbaa0ab6649add2dbe8641cb29b967f6
Deleted: sha256:0a26eacdbd862e75d064d817e8a5bcf5e060c2680c10f77ffa52757c0b8c3328
Deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4
Error: No such image: if
Error response from daemon: conflict: unable to delete d1165f221234 (must be forced) - image is being used by stopped container a94dc46269f9
[root@localhost /]# docker images REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   4 months ago   13.3kB

4.3.4.3、运行中的无法删除,需要停止

4、删除命令整合

[root@localhost /]# docker rmi if 镜像id 指定镜像ID
[root@localhost /]# docker rmi if 镜像id 镜像id 镜像id 镜像id 删除多个镜像
[root@localhost /]# docker rmi if $(docker images -aq) 删除全部镜像

4.4、容器命令
说明:有了镜像才可以创建容器,linux 下载一个centos 镜像进行学习

4.4.1、下载镜像(docker pull ***)

docker pull centos

4.4.2、新建容器并启动(docker run ***)

命令示范:docker run -it centos /bin/bashdocker run [可选参数] image

参数说明

--name="Name" 容器名字
-d 后台方式运行
-it 使用交互方式运行(-i -t),进入容器内容
-p (小p)指定容器的端口 -p 8080:8080-p ip:主机端口:容器端口-p 主机端口:容器端口 (常用的)-p 容器端口
-P (大p)随机指定端口

测试,启动并进入容器

[root@localhost /]# docker run -it centos /bin/bash
[root@d6c1042e0fca /]# ls -a  #查看容器内的centos,基础版本 很多命令不完善
.  ..  .dockerenv  bin  dev  etc  home  lib  lib64  lost+found media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@d6c1042e0fca /]# exit #退出容器

4.4.3、列出所有的容器(docker ps ***)

命令示范:docker ps -a

docker ps 命令
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器
-q # 只显示容器的编号

[root@localhost /]# docker ps -aCONTAINER ID   IMAGE         COMMAND       CREATED         STATUS                      PORTS     NAMES
d6c1042e0fca   centos        "/bin/bash"   3 minutes ago   Exited (0) 57 seconds ago             boring_khayyam
a94dc46269f9   hello-world   "/hello"      2 hours ago     Exited (0) 2 hours ago                tender_brahmagupta[root@localhost /]# docker ps -a -n=1CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
d6c1042e0fca   centos    "/bin/bash"   6 minutes ago   Exited (0) 4 minutes ago             boring_khayyam[root@localhost /]# docker ps -a -qd6c1042e0fca
a94dc46269f9

4.4.4、退出容器 exit
exit #直接容器停止并退出

键盘:ctrl + p + q # 容器不停止退出
[root@localhost /]# docker run -it centos /bin/bash
[root@af300afbb0e7 /]# [root@localhost /]#
[root@localhost /]#
[root@localhost /]# ^C
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
af300afbb0e7   centos    "/bin/bash"   30 seconds ago   Up 29 seconds             friendly_antonelli
[root@localhost /]#

4.4.5、删除容器 docker rm
命令示范:

docker rm a94dc46269f9
docker rm a94dc46269f9 d6c1042e0fca
docker rm -f $(docker ps -aq)docker rm 容器ID # 删除指定的容器,不能删除正在运行的容器,如果要强制的话 rm -f
docker rm -f $(docker ps -aq) # 删除所有容器
docker ps -a -q|xargs docker rm # 删除所有容器
示例
[root@localhost /]# docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                      PORTS     NAMES
af300afbb0e7   centos        "/bin/bash"   3 minutes ago    Up 3 minutes                          friendly_antonelli
d6c1042e0fca   centos        "/bin/bash"   12 minutes ago   Exited (0) 10 minutes ago             boring_khayyam
a94dc46269f9   hello-world   "/hello"      2 hours ago      Exited (0) 2 hours ago                tender_brahmagupta
[root@localhost /]# docker rm a94dc46269f9
a94dc46269f9
[root@localhost /]# docker rm d6c1042e0fca
d6c1042e0fca
[root@localhost /]# docker rm -f $(docker ps -aq)
af300afbb0e7

4.4.6、启动和停止容器的操作 docker start
命令示范:docker start 076536eb29ee

docker start 容器ID  #启动容器
docker restart 容器ID #重启容器
docker stop 容器ID #停止当前正在运行容器容器
docker kill 容器ID #强制停止容器

示例

[root@localhost /]# docker run -it centos /bin/bash[root@076536eb29ee /]# exitexit
[root@localhost /]#
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                     PORTS     NAMES
076536eb29ee   centos    "/bin/bash"   10 seconds ago   Exited (0) 8 seconds ago             hungry_poincare[root@localhost /]# docker start 076536eb29ee
076536eb29ee[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
076536eb29ee   centos    "/bin/bash"   32 seconds ago   Up 7 seconds             hungry_poincare[root@localhost /]# docker stop 076536eb29ee
076536eb29ee[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

4.6、常用其他命令(重要)
4.6.1、后台启动容器 docker run -d 镜像名
命令示范:docker run -d centos

命令 docker run -d 镜像名

[root@localhost /]# docker run -d centos
f09dbc1f166df65ba6776d90e0cb34048545cf1bbceb62fee3066ce6d1874992
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

问题,docker ps 发现centos 停止了

常见问题的坑,docker 容器使用后台运行,必须有一个前台进程,docker发现没有应用,就会自动停止

例如 Nginx 容器启动后,发现自己没有提供服务,就没有程序了

4.6.2、查看日志命令 docker logs

命令示范:docker logs -tf --tail 10  35d5f73579e4[root@localhost /]# docker logs --helpUsage:  docker logs [OPTIONS] CONTAINERFetch the logs of a containerOptions:--details        Show extra details provided to logs-f, --follow         Follow log output--since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)-n, --tail string    Number of lines to show from the end of the logs (default "all")-t, --timestamps     Show timestamps--until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)

##显示日志
-tf #显示日志
–tail number #显示日志条数

#示例1

[root@localhost /]# docker run -d centos /bin/sh -c "while true;do echo wangjinzhi;sleep 1;done"
35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS     NAMES
35d5f73579e4   centos    "/bin/sh -c 'while t…"   2 seconds ago    Up 1 second              jovial_almeida
076536eb29ee   centos    "/bin/bash"              15 minutes ago   Up 6 minutes             hungry_poin[root@localhost /]# docker logs -tf --tail 10  35d5f73579e42021-07-28T18:21:02.645813184Z wangjinzhi
2021-07-28T18:21:03.647878765Z wangjinzhi
2021-07-28T18:21:04.650559598Z wangjinzhi
2021-07-28T18:21:05.653227572Z wangjinzhi

4.6.3、查看容器中进程信息 docker top
命令示范:docker top 35d5f73579e4

docker top  容器ID
[root@localhost /]# docker top 35d5f73579e4
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                14653               14635               0                   02:19               ?                   00:00:00            /bin/sh -c while true;do echo wangjinzhi;sleep 1;done
root                15057               14653               0                   02:25               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

4.6.4、查看镜像源数据 docker inspect
命令示范:docker inspect 35d5f73579e4


```bash
docker inspect --help
docker inspect 容器的ID[root@localhost /]# docker inspect 35d5f73579e4
[{"Id": "35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1","Created": "2021-07-28T18:19:58.286901967Z","Path": "/bin/sh","Args": ["-c","while true;do echo wangjinzhi;sleep 1;done"],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 14653,"ExitCode": 0,"Error": "","StartedAt": "2021-07-28T18:19:58.482388499Z","FinishedAt": "0001-01-01T00:00:00Z"},"Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55","ResolvConfPath": "/var/lib/docker/containers/35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1/resolv.conf","HostnamePath": "/var/lib/docker/containers/35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1/hostname","HostsPath": "/var/lib/docker/containers/35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1/hosts","LogPath": "/var/lib/docker/containers/35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1/35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1-json.log","Name": "/jovial_almeida","RestartCount": 0,"Driver": "overlay2","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "","ExecIDs": null,"HostConfig": {"Binds": null,"ContainerIDFile": "","LogConfig": {"Type": "json-file","Config": {}},"NetworkMode": "default","PortBindings": {},"RestartPolicy": {"Name": "no","MaximumRetryCount": 0},"AutoRemove": false,"VolumeDriver": "","VolumesFrom": null,"CapAdd": null,"CapDrop": null,"CgroupnsMode": "host","Dns": [],"DnsOptions": [],"DnsSearch": [],"ExtraHosts": null,"GroupAdd": null,"IpcMode": "private","Cgroup": "","Links": null,"OomScoreAdj": 0,"PidMode": "","Privileged": false,"PublishAllPorts": false,"ReadonlyRootfs": false,"SecurityOpt": null,"UTSMode": "","UsernsMode": "","ShmSize": 67108864,"Runtime": "runc","ConsoleSize": [0,0],"Isolation": "","CpuShares": 0,"Memory": 0,"NanoCpus": 0,"CgroupParent": "","BlkioWeight": 0,"BlkioWeightDevice": [],"BlkioDeviceReadBps": null,"BlkioDeviceWriteBps": null,"BlkioDeviceReadIOps": null,"BlkioDeviceWriteIOps": null,"CpuPeriod": 0,"CpuQuota": 0,"CpuRealtimePeriod": 0,"CpuRealtimeRuntime": 0,"CpusetCpus": "","CpusetMems": "","Devices": [],"DeviceCgroupRules": null,"DeviceRequests": null,"KernelMemory": 0,"KernelMemoryTCP": 0,"MemoryReservation": 0,"MemorySwap": 0,"MemorySwappiness": null,"OomKillDisable": false,"PidsLimit": null,"Ulimits": null,"CpuCount": 0,"CpuPercent": 0,"IOMaximumIOps": 0,"IOMaximumBandwidth": 0,"MaskedPaths": ["/proc/asound","/proc/acpi","/proc/kcore","/proc/keys","/proc/latency_stats","/proc/timer_list","/proc/timer_stats","/proc/sched_debug","/proc/scsi","/sys/firmware"],"ReadonlyPaths": ["/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"]},"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/2f78575e381cb5665208a87ce784d3ffc8b74abf09fb72861eb9462e8b3af506-init/diff:/var/lib/docker/overlay2/c4de15aec86063d86e42db0dc670a509073e9539dac0035a768d0cd468209e7b/diff","MergedDir": "/var/lib/docker/overlay2/2f78575e381cb5665208a87ce784d3ffc8b74abf09fb72861eb9462e8b3af506/merged","UpperDir": "/var/lib/docker/overlay2/2f78575e381cb5665208a87ce784d3ffc8b74abf09fb72861eb9462e8b3af506/diff","WorkDir": "/var/lib/docker/overlay2/2f78575e381cb5665208a87ce784d3ffc8b74abf09fb72861eb9462e8b3af506/work"},"Name": "overlay2"},"Mounts": [],"Config": {"Hostname": "35d5f73579e4","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/sh","-c","while true;do echo wangjinzhi;sleep 1;done"],"Image": "centos","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": {"org.label-schema.build-date": "20201204","org.label-schema.license": "GPLv2","org.label-schema.name": "CentOS Base Image","org.label-schema.schema-version": "1.0","org.label-schema.vendor": "CentOS"}},"NetworkSettings": {"Bridge": "","SandboxID": "eb693203a0cf3f06fce8b45e88d3b7b4ba0de90aaa531dfaa8782c06d0323183","HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"Ports": {},"SandboxKey": "/var/run/docker/netns/eb693203a0cf","SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "0762dbc9fb45620b4d5ceb10e0db26f9cd842add29a4de80ef3928716d41dace","Gateway": "172.17.0.1","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"IPAddress": "172.17.0.3","IPPrefixLen": 16,"IPv6Gateway": "","MacAddress": "02:42:ac:11:00:03","Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "41fd4c179d4f2f8b60a71fbf7a549867bb58f66f875932a204cab292ff00d993","EndpointID": "0762dbc9fb45620b4d5ceb10e0db26f9cd842add29a4de80ef3928716d41dace","Gateway": "172.17.0.1","IPAddress": "172.17.0.3","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:03","DriverOpts": null}}}}
]

4.6.5、进入当前正在运行的容器 docker exec、attach
命令示范:```bash
docker exec -it 076536eb29ee /bin/bash
docker attach  35d5f73579e4

方式一:

docker exec -it  容器ID baseShell (  例如:  /bin/bash  ,  /bin/sh  )
示例
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
35d5f73579e4   centos    "/bin/sh -c 'while t…"   12 minutes ago   Up 12 minutes             jovial_almeida
076536eb29ee   centos    "/bin/bash"              27 minutes ago   Up 18 minutes             hungry_poincare
[root@localhost /]# docker exec -it 076536eb29ee /bin/bash

方式二:

docker attach 容器ID
[root@localhost /]# docker attach  35d5f73579e4
只是进入正在运行的程序

docker exec #进入容器后开启新的终端,可以在里面操作
docker attach #进入容器正在执行的终端,不会启动新的进程
4.6.6、从容器拷贝文件到主机 docker cp
docker cp 容器id:容器内路径 目的的主机路径
注意:这是在主机操作的,相当于在主机拿docker容器的等下

命令示范:docker cp a15cfade1217:home/test.go /home

[root@localhost data]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS              PORTS     NAMES
a15cfade1217   centos    "/bin/bash"   About a minute ago   Up About a minute             magical_faraday

#进入dockers容器内部

[root@localhost data]# docker attach a15cfade1217

#新建一个内部文件
[root@a15cfade1217 /]# cd home/
[root@a15cfade1217 home]# touch
touch: missing file operand
Try ‘touch --help’ for more information.
[root@a15cfade1217 home]# touch test.go
[root@a15cfade1217 home]# exit
exit

将文件拷贝出来到主机上
[root@localhost data]# docker cp a15cfade1217:home/test.go /home
[root@localhost data]# cd /home/
[root@localhost home]# ls -a
. … test.go

拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现自动挂载

五、docker安装nginx示例======
5.1、docker pull nginx
5.2、运行nginx镜像
[root@localhost ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 08b152afcfae 6 days ago 133MB
hello-world latest d1165f221234 4 months ago 13.3kB
centos latest 300e315adb2f 7 months ago 209MB

运行nginx

[root@localhost ~]# docker run -d --name nginx01 -p:3344:80 nginx

-d 后台运行

–name 给容器命名

-p 宿主机端口:容器端口

343f94bb0154c910e2e42559c2c75edcc6b6180f66a22f6bba7503d60acde8d7
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES
343f94bb0154   nginx     "/docker-entrypoint.…"   6 seconds ago   Up 6 seconds   0.0.0.0:3344->80/tcp, :::3344->80/tcp   nginx01

运行测试

[root@localhost ~]# curl localhost:3344<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>

六、可视化面板======
6.1、portainer (先用这个)
Docker 图形化管理工具
docker run -d -p 9000:9000 -v /root/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer
访问测试:http://192.168.3.50:9000/

6.2、Rancher (CI/CD再用)

七、docker commit 镜像======

7.1、类似于git的原理
docker commit # 提交容器成为一个新的副本
docker commit -m=“提交的描述信息” -a=“作者” 容器id 目标镜像名 :[tag]
7.2、实战测试
1、启动默认的tomcat
2、发现默认的Tomcat没有webapps应用
3、现在我自己拷贝进去基本的文件
4、将修改后的容器提交位新的镜像,以后就可以使用,自己的修改后的镜像
[root@localhost ~]# docker commit -a"wang" -m=“add webapps” ed3120d64792 tomcat02:1.0
sha256:853b9408d6f8d2ae090488d1dd1b05dbbfd232bb6ffc68d69a34b27410832b19
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat02 1.0 853b9408d6f8 6 seconds ago 678MB
tomcat 9.0 46cfbf1293b1 5 days ago 668MB
tomcat latest 46cfbf1293b1 5 days ago 668MB
nginx latest 08b152afcfae 6 days ago 133MB
portainer/portainer latest 580c0e4e98b0 4 months ago 79.1MB
5、保持docker容器的当前状态

八、docker容器数据卷(精髓)docker run -it -v ======
如果数据保存在容器中,那么我们容器删除,数据会丢失
需求:数据可以持久化,数据存储在本地
容器之间可以有一个数据共享技术,docker容器中产生的数据同步到本地
这就是卷技术,说白了就是目录的挂载,将容器的目录挂载到linux里面
容器的持久化和同步操作,容器间也可以数据共享,双向绑定

docker run -it -v 主机的目录:容器内部目录
使用 do容id

测试

主机

容器

总结:可以在本地修改很多文件的配置文件以及目录

8.1、实在测试安装mysql

mysql的数据持久化问题 /data/*

[root@localhost ceshi]# docker pull mysql:5.7注意运行mysql的时候需要密码
Start a mysql server instance
Starting a MySQL instance is simple:$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw(密码) -d mysql:tag... where some-mysql is the name you want to assign to your container, my-secret-pw is the password to be set for the MySQL root user and tag is the tag specifying the MySQL version you want. See the list above for relevant tags.

-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
–name 容器名字

[root@localhost ceshi]# docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
1054fa1631ae5c9c0ae4ed6e5d20f5f1b63b20e56187ddefcb236bd4fa50e67f
[root@localhost ceshi]#

本地测试

挂载目录文件

假设容器删除了,挂载到本地的数据卷,依旧不会丢失

九、docker 安装Gogs,dorne,drone-runner-docker

GOGS百度

dorne 命令

docker run -d\--volume=/var/lib/drone:/data \--env=DRONE_DEBUG=true\--env=DRONE_LOGS_TRACE=true\--env=DRONE_LOGS_DEBUG=true\--env=DRONE_LOGS_PRETTY=true\--env=DRONE_AGENTS_ENABLED=true \--env=DRONE_GIT_ALWAYS_AUTH=true \--env=DRONE_RPC_SECRET=bca6ae9c4bc3022eb59f19642167068b \--env=DRONE_SERVER_HOST=192.168.10.251:10080 \--env=DRONE_SERVER_PROTO=http \--env=DRONE_GOGS_SERVER=http://192.168.10.251:3000 \--env=DRONE_USER_CREATE=username:wangjinzhi,admin:true \--publish=10080:80 \--publish=10443:443 \--restart=always \--detach=false \--name=drone \drone/dronedrone-runner-ssh 命令docker run -d \-e DRONE_RPC_PROTO=http \-e DRONE_RPC_HOST=192.168.10.251:10080 \-e DRONE_RPC_SECRET=bca6ae9c4bc3022eb59f19642167068b \-e DRONE_DEBUG=true \-p 10081:3000 \--restart always \--name ssh-runner \drone/drone-runner-sshdrone-runner-docker 命令docker run -d \-v /var/run/docker.sock:/var/run/docker.sock \-e DRONE_RPC_PROTO=http \-e DRONE_RPC_HOST=192.168.10.251:10080 \-e DRONE_RPC_SECRET=bca6ae9c4bc3022eb59f19642167068b \-e DRONE_RUNNER_CAPACITY=2 \-e DRONE_RUNNER_NAME=docker-runner \-e DRONE_DEBUG=true \-p 10082:3000 \--restart always \--name docker-runner \drone/drone-runner-docker10、Docker 命令修改:更新配置
docker container update --restart=always 容器名字https://github.com/Tinywan/dnmp

11、使用docker注意事项(nginx)
例如nginx 访问的时候 docker里面是 var/wwwroot 的存放路径 指向 宿主机的路径 data/wwwroot 当在配置nginx的时候需要写的是 docker里面的 路径root /var/wwwroot

docker基础操作相关推荐

  1. Docker 之 Docker基础操作

    第1章 Docker基础操作 1.1 常用的命令 0) 安装Docker 环境 yum -y install docker 1)   指定 IP,DNS 网络位启动Docker容器 a)  docke ...

  2. Docker基础操作,原来这才是正确打开Docker的新方式!

    文章目录 前言 一.Docker操作镜像 1.拉取镜像 2.查看镜像 3.删除镜像 4.保存镜像 5.读取镜像 5.镜像帮助命令 二.Docker容器基础操作 1.创建并运行容器 2.查看容器运行状态 ...

  3. 【保姆级教程】Docker基础操作篇-Dokerfile(含源码)

    Docker系列文章: 你好!Docker[概念+源码+保姆式教程] [保姆级教程]Docker进阶操作篇-Compose(含源码) Docker常用命令 [保姆级教程]VMware+CentOS 7 ...

  4. docker 基础操作

    1. 安装docker 系统centos 7.2 yum -y install docker-io service docker start 安装完毕后执行 docker version 或者dock ...

  5. 记录一次docker基础操作错误Error response from daemon: You cannot remove a running container

    项目场景: 练习docker基础操作的时候出现一个错误,导致我想进入容器,怎么都进不去,另外,写博客的时候一定不要打开多个编辑页面,很可能导致你写的东西都不作数,我刚刚就是这样操作,导致现在没有内容, ...

  6. docker 基础命令操作 镜像以及容器的基本操作演示

    tomcat启动后',可以通过页面访问到默认页面,可以更加直观的显示出来:我们就以tomcat为例,对镜像,容易的基础操作进行演示: 1.查询镜像命令 docker search tomcat , 运 ...

  7. docker基础命令操作

    docker基础命令操作 一.容器生命周期管理 1.1 run 1.2 启动.停止.重启容器 1.3 kill--杀掉一个运行中的容器 1.4 rm--删除容器 1.5 pause/unpause 命 ...

  8. Linux docker(01) 基础操作

    该系列文章的目的旨在docker的基础学习和docker的实战应用. 0 why docker 在这之前我们需要了解为啥要使用docker这个东东?简单来说: 这玩意儿根虚拟机功能差不多,但比虚拟机快 ...

  9. Docker基础认识,镜像、容器操作及镜像的制作

    一.了解虚拟机和容器的区别 二.Docker概述 三.安装Docker 1.安装依赖包 2.设置阿里镜像源 3.安装Docker-CE 四.docker常规操作 1.镜像加速(提高镜像下载速度) 2. ...

最新文章

  1. php mysql 读取中文数据的函数_php读取mysql中文数据出现乱码的解决方法
  2. html复选框位置,html – 对齐复选框和标签
  3. 唐文:挖掘产品生命周期潜藏的商业价值——应用性能管理
  4. 如何正确有效表达:对不起,我们已经尽力了?
  5. 结合typedef更为直观的应用函数指针
  6. 2018ICPC网络赛(焦作站)K题题解
  7. leetcode 525. Contiguous Array | 525. 连续数组(Java)
  8. iOS中的HotFix方案总结详解
  9. 【译】XNA Shader 程序设计(二)
  10. Linux C 数据结构——队列
  11. spring boot开发环境搭建
  12. 关于未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序的解决办法
  13. meethigher-文库下载实现自动化
  14. reviewboard升级
  15. matlab加分号,matlab加分号
  16. PHP配置优化《MordenPHP》
  17. 路由器与交换机的区别是什么
  18. 李宏毅(2020)作业2-hw2_classification
  19. twm图形模式以及恢复
  20. project02:阶段性总结

热门文章

  1. Sqlite3并发读写注意事项
  2. 51智能小车pwm调速
  3. 关于yd ui 移动端自适应的方案
  4. ZB级的大数据探索与应用实践【附PPT】
  5. python发微信提醒天气冷了注意保暖_天气变冷了,用Python给父母制作一个天气提醒小助手~...
  6. python中pandas什么意思_python pandas 基础理解
  7. Crazy Binary String
  8. 如何关闭笔记本自带键盘
  9. 计算机保研面试之专业课如何复习?
  10. WAVE SUMMIT+峰会,飞桨八大亮点发布,全面助力产业智能化