docker命令和操作笔记

docker命令和操作笔记

 
选一台linux机器,或者aws cloud上面选择一个ubuntu的ec2机器,本地电脑上安装MobaXterm或其他连接远程linux机器的界面工具。然后执行以下命令,熟悉docker。

1. 更新ubuntu的源
sudo apt-get update

2. 安装必要的包
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

3.接着下载
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

4.接着下载
sudo add-apt-repository \
"deb [arch=amd64]" https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

5. 接着执行
sudo apt-get update

6.接着执行以下命令,安装docker-ce, 因为docker-ce是免费版
sudo apt-get install docker-ce

7. 接着下载和启动一个image

docker pull hello-world  或者 docker image pull hello-world(这个hello-world的image是dockerhub上一个image)
sudo docker run hello-world

sudo groupadd docker (groupadd是将当前用户添加到docker组)

扫描二维码关注公众号,回复: 16211109 查看本文章

8. 安装nginx的image
sudo docker image pull nginx:latest

9. 查看现在下载的image
docker images

10.进入root目录,这样执行每条命令,就不用加这个sudo的前缀了
sudo su -

11. 使用conainer启动image
docker container run -itd --name web-server-nginx -p 8080:80 nginx:latest   (其中web-server-nginx为你想给此次创建以及启动的container命的container名字,8080宿主机的端口,80是容器container的端口,浏览器访问是通过宿主机的8080端口访问,nginx:latest 是启动此container用到的镜像image)
执行完上面的命令,会返回一个container id,为 9b2daf782f1313985797588784ef03d323cf7aee8186820a07d975ee8cac3154


12. 查看所有container
docker ps -a

13. docker 的三个阶段
(1)用dockerfile打包 build
(2)用docker image传输 ship
(3)用docker run 跑起来image,即container run

14.docker ci端最常用的两个命令
docker run
docker pull

15. 新建文件夹 + Dockerfile文件
用nano或者vm打开Dockerfile文件,
添加内容
ARG CODE_VERSION=16.04
FROM ubuntu:${CODE_VERSION}
RUN apt-get update -y
CMD ["bash"]

16. 执行上面的文件,创建当前目录下所有代码的image
docker build -t img_from .  (此命令中 img_from是打包好的image的名字,最后面的小点. 表示dockerfile所在的当前目录的所有文件,也就是把此目录下所有文件打包成image)

17.返回name为imageName的image的id
docker run -itd --name cont_run-env imageName (运行名字为imageName的image,并将此次运行image的container命名为cont_run-env)

18. docker image分层
cmd layer
expose layer
workdir layer
run layer
base image layer
bootfs

19. docker search python:3.6

可以看到dockerhub上 python 3.6的所有信息,包括发布日期等

20. docker search --format "table { {.Name}}\t{ {.Description}}\t{ {.IsOfficial}}" registry

过滤查询用--format 或者 filter

21. docker login
docker tag nginx:latest cerule/repo-nginx:cc-nginx(其中cerule/repo-nginx是repository名字,cc-nginx是tag的名字)
这句命令应该是列出 将 nginx:latest 的image,复制粘贴出来一份,并将标签改为 cerule/repo-nginx:cc-nginx

22. docker image push cerule/repo-nginx:cc-nginx
将标签为cerule/repo-nginx:cc-nginx 的image,push到github

23. 查看历史或者细节 history or inspect
docker image history cerule/repo-nginx:cc-nginx
docker image inspect --format "{ {json .Config}}" ubuntu > inspect_ubuntu.txt
docker image inspect ubuntu:latest

24. 删除image
docker image rm nginx:1-alphine-perl
docker image rmi 3666666(image id)

25. 创建container
docker conainer create -it --name cc-busya busybox:latest(其中busybox:latest为镜像名,cc-busya为container的名字)

再执行下面这句:会先执行run,之后一旦此container stop了,就自动把它删除
docker container run -itd --rm --name cc-busyb busybox:latest

26. docker container start cc-busya
docker run = docker create + docker start
docker container stop cc-busyb
docker container restart --time 5 cc-busyboxa(5秒后重启此container)
docker container rename cc-busyboxa my-busybox(不会导致重启或者重新计时)

docker container attach my-busybox 会导致其stop掉
docker container attach的作用是 进入container内部去看看,比如查查日志,执行些操作等

/ #
进入另外一个窗口
exit
退出这个窗口

docker exec -it my-busybox pwd
得到结果 /   ,也就是此container的根目录,docker ps -a,可以发现此container起来了

27. map 端口port
docker container run -itd --name cont_nginx -p 8080:80/tcp  img_expose
docker container run -itd --name cont_nginxa -P img_expose
同一个镜像,启动了两个container,浏览器就可以通过两个端口 访问到同一个资源

28.删除container
docker container rm cont_from
docker container rm 68xxxx  087xxx 915xxx(stop了的container id)

29. docker container prune(删除所有stop状态的container)

30. docker network drivers 用来container之间互相通信的
host,bridge,overlay(swarm或kubenetes)

31. docker network create --driver bridge my-bridge
返回id

docker network create --driver bridge --subnet=192.168.0.0/16 --ip-range=192.168.5.0/24 mybridge1

docker network ls

docker network ls --filter driver=bridge

docker start启动一个container, myubuntu
然后执行 docker network connect mybridge1 myubuntu

docker container inspect myubuntu

docker container run -itd --network host --name cont_nginx nginx:latest(其中nginx:latest是image名字,cont_nginx是container名字)

docker container port cont_nginx

docker network inspect bridge

docker network disconnect mybridge myubunu

32. docker volume 永久存储
docker volume create vol-busybox
此命令返回vol-busybox这个名字
docker run -d --volume vol-ubuntu:/tmp ubuntu 也会创建一个volume,此命令创建的volume名字是vol-ubuntu,保存数据到宿主机的/tmp路径下,启动的image是ubuntu
所以用 docker volume ls 可以查看所有volume
 
docker volume ls --filter "dangling=true"
过滤出没有挂载mount到任何container的volume

docker volume inspect vol-ubuntu
查看此volume的详情

docker volume rm vol-ubuntu
删除,如果被mout上container上的,拒绝删除

docker container rm dockernamess

33. 下载docker compose
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker compose version 查看是否安装成功

34. docker-compose.yaml文件里的配置
version: 3.3
services:
  db:
      image: mysql:5.7  (下载的数据库的镜像image的名称)
      container_name: mysql_database (容器container的名称)
      volumes:
          -db_data:/var/lib/mysql (其中db_data是volume的名字,/var/lib/mysql是宿主机的路径)
      restart: always (当container挂掉,选择 always自动重新)
      environment:
        MYSQL_ROOT_PASSWORD: wordxxx
        MYSQL_DATABASE: wxxx
        MYSQL_USER: usxxx
        MYSQL_PASSWORD: xxxx
  mywebxx:
      depends_on:
         - db
      image: mywebxx:latest
      container_name: conxxx
      volumes:
         - mywebxx_files:/var/www/html (其中mywebxx_files是volume的名字,/var/www/html是宿主机上的存储位置)
      ports:
         - "8080:80"
      restart: always
      environment:
         MYWEBXX_DB_HOST: db:3306
         MYWEBXX_DB_USER: userxx
         MYWEBXX_DB_PASSWORD: xxx  

  volumes:
       mywebxxx_files:
       db_data:

     

  
原文链接:https://blog.csdn.net/daiqinge/article/details/103144869

猜你喜欢

转载自blog.csdn.net/zxl2016/article/details/105844430