docker基础操作
一、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基础操作相关推荐
- Docker 之 Docker基础操作
第1章 Docker基础操作 1.1 常用的命令 0) 安装Docker 环境 yum -y install docker 1) 指定 IP,DNS 网络位启动Docker容器 a) docke ...
- Docker基础操作,原来这才是正确打开Docker的新方式!
文章目录 前言 一.Docker操作镜像 1.拉取镜像 2.查看镜像 3.删除镜像 4.保存镜像 5.读取镜像 5.镜像帮助命令 二.Docker容器基础操作 1.创建并运行容器 2.查看容器运行状态 ...
- 【保姆级教程】Docker基础操作篇-Dokerfile(含源码)
Docker系列文章: 你好!Docker[概念+源码+保姆式教程] [保姆级教程]Docker进阶操作篇-Compose(含源码) Docker常用命令 [保姆级教程]VMware+CentOS 7 ...
- docker 基础操作
1. 安装docker 系统centos 7.2 yum -y install docker-io service docker start 安装完毕后执行 docker version 或者dock ...
- 记录一次docker基础操作错误Error response from daemon: You cannot remove a running container
项目场景: 练习docker基础操作的时候出现一个错误,导致我想进入容器,怎么都进不去,另外,写博客的时候一定不要打开多个编辑页面,很可能导致你写的东西都不作数,我刚刚就是这样操作,导致现在没有内容, ...
- docker 基础命令操作 镜像以及容器的基本操作演示
tomcat启动后',可以通过页面访问到默认页面,可以更加直观的显示出来:我们就以tomcat为例,对镜像,容易的基础操作进行演示: 1.查询镜像命令 docker search tomcat , 运 ...
- docker基础命令操作
docker基础命令操作 一.容器生命周期管理 1.1 run 1.2 启动.停止.重启容器 1.3 kill--杀掉一个运行中的容器 1.4 rm--删除容器 1.5 pause/unpause 命 ...
- Linux docker(01) 基础操作
该系列文章的目的旨在docker的基础学习和docker的实战应用. 0 why docker 在这之前我们需要了解为啥要使用docker这个东东?简单来说: 这玩意儿根虚拟机功能差不多,但比虚拟机快 ...
- Docker基础认识,镜像、容器操作及镜像的制作
一.了解虚拟机和容器的区别 二.Docker概述 三.安装Docker 1.安装依赖包 2.设置阿里镜像源 3.安装Docker-CE 四.docker常规操作 1.镜像加速(提高镜像下载速度) 2. ...
最新文章
- php mysql 读取中文数据的函数_php读取mysql中文数据出现乱码的解决方法
- html复选框位置,html – 对齐复选框和标签
- 唐文:挖掘产品生命周期潜藏的商业价值——应用性能管理
- 如何正确有效表达:对不起,我们已经尽力了?
- 结合typedef更为直观的应用函数指针
- 2018ICPC网络赛(焦作站)K题题解
- leetcode 525. Contiguous Array | 525. 连续数组(Java)
- iOS中的HotFix方案总结详解
- 【译】XNA Shader 程序设计(二)
- Linux C 数据结构——队列
- spring boot开发环境搭建
- 关于未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序的解决办法
- meethigher-文库下载实现自动化
- reviewboard升级
- matlab加分号,matlab加分号
- PHP配置优化《MordenPHP》
- 路由器与交换机的区别是什么
- 李宏毅(2020)作业2-hw2_classification
- twm图形模式以及恢复
- project02:阶段性总结